Skip to content
This repository was archived by the owner on Apr 18, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions eth-types/src/evm_types/opcode_ids.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1138,6 +1138,8 @@ impl FromStr for OpcodeId {
"PC" => OpcodeId::PC,
"MSIZE" => OpcodeId::MSIZE,
"JUMPDEST" => OpcodeId::JUMPDEST,
// tmp hack before reverting https://github.com/scroll-tech/go-ethereum/pull/737/files
"opcode 0x5e not defined" => OpcodeId::MCOPY,
"MCOPY" => OpcodeId::MCOPY,
"PUSH0" => OpcodeId::PUSH0,
"PUSH1" => OpcodeId::PUSH1,
Expand Down Expand Up @@ -1245,10 +1247,13 @@ impl FromStr for OpcodeId {
#[cfg(not(feature = "scroll"))]
"SELFDESTRUCT" => OpcodeId::SELFDESTRUCT,
"CHAINID" => OpcodeId::CHAINID,
"opcode 0x48 not defined" => OpcodeId::BASEFEE,
"BASEFEE" => OpcodeId::BASEFEE,
"BLOBHASH" => OpcodeId::INVALID(0x49),
"BLOBBASEFEE" => OpcodeId::INVALID(0x4a),
"opcode 0x5c not defined" => OpcodeId::TLOAD,
"TLOAD" => OpcodeId::TLOAD,
"opcode 0x5d not defined" => OpcodeId::TSTORE,
"TSTORE" => OpcodeId::TSTORE,
_ => {
// Parse an invalid opcode value as reported by geth
Expand Down
18 changes: 9 additions & 9 deletions geth-utils/l2geth/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.21

require (
github.com/imdario/mergo v0.3.16
github.com/scroll-tech/go-ethereum v1.10.14-0.20240428082752-c5836a42d3b9
github.com/scroll-tech/go-ethereum v1.10.14-0.20240524071237-9b4a779104ac
)

require (
Expand Down Expand Up @@ -43,19 +43,19 @@ require (
github.com/prometheus/tsdb v0.10.0 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/rjeczalik/notify v0.9.1 // indirect
github.com/scroll-tech/zktrie v0.8.2 // indirect
github.com/scroll-tech/zktrie v0.8.4 // indirect
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 // indirect
github.com/supranational/blst v0.3.11 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
github.com/tklauser/go-sysconf v0.3.12 // indirect
github.com/tklauser/numcpus v0.6.1 // indirect
github.com/tklauser/go-sysconf v0.3.14 // indirect
github.com/tklauser/numcpus v0.8.0 // indirect
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef // indirect
github.com/yusufpapurcu/wmi v1.2.3 // indirect
golang.org/x/crypto v0.21.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
golang.org/x/crypto v0.23.0 // indirect
golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/text v0.15.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
rsc.io/tmplfunc v0.0.3 // indirect
)
17 changes: 17 additions & 0 deletions geth-utils/l2geth/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -168,10 +168,14 @@ github.com/scroll-tech/go-ethereum v1.10.14-0.20240425105228-df3fde136799 h1:lcA
github.com/scroll-tech/go-ethereum v1.10.14-0.20240425105228-df3fde136799/go.mod h1:i4VBgWoaW/y0D8MmQb7hSOulyw1dKhuiSFAbznwivCA=
github.com/scroll-tech/go-ethereum v1.10.14-0.20240428082752-c5836a42d3b9 h1:j+rFWbiXQN4UuaS0JBLEVDcw9Fd2vDsjDCLzcx/OL6Y=
github.com/scroll-tech/go-ethereum v1.10.14-0.20240428082752-c5836a42d3b9/go.mod h1:i4VBgWoaW/y0D8MmQb7hSOulyw1dKhuiSFAbznwivCA=
github.com/scroll-tech/go-ethereum v1.10.14-0.20240524071237-9b4a779104ac h1:A7tBJeDFXVjL4URIR89Ir8amS345Kgnh//+FA2v3lEw=
github.com/scroll-tech/go-ethereum v1.10.14-0.20240524071237-9b4a779104ac/go.mod h1:GLhY3RmqBezwgPCqrPM/dTjrweDzVSAQ+Ggldk4dCTM=
github.com/scroll-tech/zktrie v0.7.1 h1:NrmZNjuBzsbrKePqdHDG+t2cXnimbtezPAFS0+L9ElE=
github.com/scroll-tech/zktrie v0.7.1/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk=
github.com/scroll-tech/zktrie v0.8.2 h1:UMuIfA+jdgWMLmTgTL64Emo+zzMOdcnH0+eYdDcshxQ=
github.com/scroll-tech/zktrie v0.8.2/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk=
github.com/scroll-tech/zktrie v0.8.4 h1:UagmnZ4Z3ITCk+aUq9NQZJNAwnWl4gSxsLb2Nl7IgRE=
github.com/scroll-tech/zktrie v0.8.4/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
Expand All @@ -191,20 +195,28 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE=
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef h1:wHSqTBrZW24CsNJDfeh9Ex6Pm0Rcpc7qrgKBiL44vF4=
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand All @@ -224,6 +236,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
Expand All @@ -249,13 +263,16 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
Expand Down
3 changes: 3 additions & 0 deletions go.work.sum
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,7 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0=
Expand All @@ -428,12 +429,14 @@ golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE=
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
Expand Down
8 changes: 4 additions & 4 deletions prover/src/inner/prover/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ use zkevm_circuits::witness::Block;

impl<C: TargetCircuit> Prover<C> {
pub fn mock_prove_target_circuit(block_trace: BlockTrace) -> anyhow::Result<()> {
Self::mock_prove_target_circuit_batch(vec![block_trace])
Self::mock_prove_target_circuit_chunk(vec![block_trace])
}

pub fn mock_prove_target_circuit_batch(block_traces: Vec<BlockTrace>) -> anyhow::Result<()> {
pub fn mock_prove_target_circuit_chunk(block_traces: Vec<BlockTrace>) -> anyhow::Result<()> {
let witness_block = block_traces_to_witness_block(block_traces)?;
Self::mock_prove_witness_block(&witness_block)
}

pub fn mock_prove_witness_block(witness_block: &Block) -> anyhow::Result<()> {
log::info!(
"mock proving batch, batch metric {:?}",
"mock proving chunk, chunk metric {:?}",
metric_of_witness_block(witness_block)
);
let (circuit, instance) = C::from_witness_block(witness_block)?;
Expand All @@ -34,7 +34,7 @@ impl<C: TargetCircuit> Prover<C> {
bail!("{:#?}", errs);
}
log::info!(
"mock prove done. batch metric: {:?}",
"mock prove done. chunk metric: {:?}",
metric_of_witness_block(witness_block),
);
Ok(())
Expand Down
72 changes: 34 additions & 38 deletions prover/src/utils.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#![allow(deprecated)]
use crate::{
types::BlockTraceJsonRpcResult,
zkevm::circuit::{block_traces_to_witness_block, check_batch_capacity},
zkevm::circuit::{block_traces_to_witness_block, print_chunk_stats},
};
use anyhow::{bail, Result};
use chrono::Utc;
use eth_types::{l2_types::BlockTrace, Address};
use eth_types::l2_types::BlockTrace;
use git_version::git_version;
use halo2_proofs::{halo2curves::bn256::Bn256, poly::kzg::commitment::ParamsKZG, SerdeFormat};
use log::LevelFilter;
Expand Down Expand Up @@ -81,29 +82,12 @@ pub fn load_params(
Ok(p)
}

/// get a block-result from file
pub fn get_block_trace_from_file<P: AsRef<Path>>(path: P) -> BlockTrace {
let mut buffer = Vec::new();
let mut f = File::open(&path).unwrap();
f.read_to_end(&mut buffer).unwrap();

let mut trace = serde_json::from_slice::<BlockTrace>(&buffer).unwrap_or_else(|e1| {
serde_json::from_slice::<BlockTraceJsonRpcResult>(&buffer)
.map_err(|e2| {
panic!(
"unable to load BlockTrace from {:?}, {:?}, {:?}",
path.as_ref(),
e1,
e2
)
})
.unwrap()
.result
});
#[deprecated]
fn post_process_tx_storage_proof(trace: &mut BlockTrace) {
// fill intrinsicStorageProofs into tx storage proof
let addrs = vec![
Address::from_str("0x5300000000000000000000000000000000000000").unwrap(),
Address::from_str("0x5300000000000000000000000000000000000002").unwrap(),
*bus_mapping::l2_predeployed::message_queue::ADDRESS,
*bus_mapping::l2_predeployed::l1_gas_price_oracle::ADDRESS,
];
for tx_storage_trace in &mut trace.tx_storage_trace {
if let Some(proof) = tx_storage_trace.proofs.as_mut() {
Expand All @@ -125,7 +109,28 @@ pub fn get_block_trace_from_file<P: AsRef<Path>>(path: P) -> BlockTrace {
.insert(*addr, trace.storage_trace.storage_proofs[addr].clone());
}
}
}

/// get a block-result from file
pub fn get_block_trace_from_file<P: AsRef<Path>>(path: P) -> BlockTrace {
let mut buffer = Vec::new();
let mut f = File::open(&path).unwrap();
f.read_to_end(&mut buffer).unwrap();

let mut trace = serde_json::from_slice::<BlockTrace>(&buffer).unwrap_or_else(|e1| {
serde_json::from_slice::<BlockTraceJsonRpcResult>(&buffer)
.map_err(|e2| {
panic!(
"unable to load BlockTrace from {:?}, {:?}, {:?}",
path.as_ref(),
e1,
e2
)
})
.unwrap()
.result
});
post_process_tx_storage_proof(&mut trace);
trace
}

Expand All @@ -136,28 +141,25 @@ pub fn read_env_var<T: Clone + FromStr>(var_name: &'static str, default: T) -> T
}

#[derive(Debug)]
pub struct BatchMetric {
pub struct ChunkMetric {
pub num_block: usize,
pub num_tx: usize,
pub num_step: usize,
}

pub fn metric_of_witness_block(block: &Block) -> BatchMetric {
BatchMetric {
pub fn metric_of_witness_block(block: &Block) -> ChunkMetric {
ChunkMetric {
num_block: block.context.ctxs.len(),
num_tx: block.txs.len(),
num_step: block.txs.iter().map(|tx| tx.steps.len()).sum::<usize>(),
}
}

pub fn chunk_trace_to_witness_block(mut chunk_trace: Vec<BlockTrace>) -> Result<Block> {
pub fn chunk_trace_to_witness_block(chunk_trace: Vec<BlockTrace>) -> Result<Block> {
if chunk_trace.is_empty() {
bail!("Empty chunk trace");
}

// Check if the trace exceeds the circuit capacity.
check_batch_capacity(&mut chunk_trace)?;

print_chunk_stats(&chunk_trace);
block_traces_to_witness_block(chunk_trace)
}

Expand Down Expand Up @@ -200,15 +202,9 @@ pub fn init_env_and_log(id: &str) -> String {
}

fn create_output_dir(id: &str) -> String {
let mode = read_env_var("MODE", "multi".to_string());
let output = read_env_var(
"OUTPUT_DIR",
format!(
"{}_output_{}_{}",
id,
mode,
Utc::now().format("%Y%m%d_%H%M%S")
),
format!("outputs/{}_{}", id, Utc::now().format("%Y%m%d_%H%M%S")),
);

let output_dir = PathBuf::from_str(&output).unwrap();
Expand Down
31 changes: 7 additions & 24 deletions prover/src/zkevm/capacity_checker.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
use super::circuit::{
MAX_BYTECODE, MAX_CALLDATA, MAX_EXP_STEPS, MAX_KECCAK_ROWS, MAX_MPT_ROWS, MAX_POSEIDON_ROWS,
MAX_RWS, MAX_VERTICAL_ROWS,
};

use super::circuit::{
block_traces_to_witness_block_with_updated_state, calculate_row_usage_of_witness_block,
get_super_circuit_params,
};
use bus_mapping::circuit_input_builder::{self, CircuitInputBuilder};
use eth_types::{
Expand All @@ -16,6 +10,9 @@ use eth_types::{
use itertools::Itertools;
use mpt_zktrie::state::ZktrieState;
use serde_derive::{Deserialize, Serialize};
use zkevm_circuits::super_circuit::params::{
get_sub_circuit_limit_and_confidence, get_super_circuit_params,
};

#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct SubCircuitRowUsage {
Expand Down Expand Up @@ -48,24 +45,10 @@ impl RowUsage {
}
// We treat 1M as 100%
pub fn normalize(&self) -> Self {
let real_available_rows = [
(MAX_RWS, 0.95), // evm
(MAX_RWS, 0.95), // state
(MAX_BYTECODE, 0.95), // bytecode
(MAX_RWS, 0.95), // copy
(MAX_KECCAK_ROWS, 0.95), // keccak
(MAX_KECCAK_ROWS, 0.95), // sha256
(MAX_VERTICAL_ROWS, 0.95), // tx
(MAX_CALLDATA, 0.95), // rlp
(7 * MAX_EXP_STEPS, 0.95), // exp
(MAX_KECCAK_ROWS, 0.95), // modexp
(MAX_RWS, 0.95), // pi
(MAX_POSEIDON_ROWS, 0.95), // poseidon
(MAX_VERTICAL_ROWS, 0.95), // sig
(MAX_VERTICAL_ROWS, 1.0), // ecc
(MAX_MPT_ROWS, 0.95), // mpt
]
.map(|(limit, confidence)| (limit as f32 * confidence) as usize);
let real_available_rows: Vec<_> = get_sub_circuit_limit_and_confidence()
.into_iter()
.map(|(limit, confidence)| (limit as f64 * confidence) as usize)
.collect();
let details = self
.row_usage_details
.iter()
Expand Down
Loading