Skip to content
This repository was archived by the owner on Apr 18, 2025. It is now read-only.

Commit ff64b16

Browse files
authored
refactor prover codes (#1292)
* refactor many prover codes * fix * fix * tmp hack for opcode parsing
1 parent 3c3dadd commit ff64b16

File tree

15 files changed

+231
-335
lines changed

15 files changed

+231
-335
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eth-types/src/evm_types/opcode_ids.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,6 +1138,8 @@ impl FromStr for OpcodeId {
11381138
"PC" => OpcodeId::PC,
11391139
"MSIZE" => OpcodeId::MSIZE,
11401140
"JUMPDEST" => OpcodeId::JUMPDEST,
1141+
// tmp hack before reverting https://github.com/scroll-tech/go-ethereum/pull/737/files
1142+
"opcode 0x5e not defined" => OpcodeId::MCOPY,
11411143
"MCOPY" => OpcodeId::MCOPY,
11421144
"PUSH0" => OpcodeId::PUSH0,
11431145
"PUSH1" => OpcodeId::PUSH1,
@@ -1245,10 +1247,13 @@ impl FromStr for OpcodeId {
12451247
#[cfg(not(feature = "scroll"))]
12461248
"SELFDESTRUCT" => OpcodeId::SELFDESTRUCT,
12471249
"CHAINID" => OpcodeId::CHAINID,
1250+
"opcode 0x48 not defined" => OpcodeId::BASEFEE,
12481251
"BASEFEE" => OpcodeId::BASEFEE,
12491252
"BLOBHASH" => OpcodeId::INVALID(0x49),
12501253
"BLOBBASEFEE" => OpcodeId::INVALID(0x4a),
1254+
"opcode 0x5c not defined" => OpcodeId::TLOAD,
12511255
"TLOAD" => OpcodeId::TLOAD,
1256+
"opcode 0x5d not defined" => OpcodeId::TSTORE,
12521257
"TSTORE" => OpcodeId::TSTORE,
12531258
_ => {
12541259
// Parse an invalid opcode value as reported by geth

geth-utils/l2geth/go.mod

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.21
44

55
require (
66
github.com/imdario/mergo v0.3.16
7-
github.com/scroll-tech/go-ethereum v1.10.14-0.20240428082752-c5836a42d3b9
7+
github.com/scroll-tech/go-ethereum v1.10.14-0.20240524071237-9b4a779104ac
88
)
99

1010
require (
@@ -43,19 +43,19 @@ require (
4343
github.com/prometheus/tsdb v0.10.0 // indirect
4444
github.com/rivo/uniseg v0.4.4 // indirect
4545
github.com/rjeczalik/notify v0.9.1 // indirect
46-
github.com/scroll-tech/zktrie v0.8.2 // indirect
46+
github.com/scroll-tech/zktrie v0.8.4 // indirect
4747
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
4848
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 // indirect
4949
github.com/supranational/blst v0.3.11 // indirect
5050
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect
51-
github.com/tklauser/go-sysconf v0.3.12 // indirect
52-
github.com/tklauser/numcpus v0.6.1 // indirect
51+
github.com/tklauser/go-sysconf v0.3.14 // indirect
52+
github.com/tklauser/numcpus v0.8.0 // indirect
5353
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef // indirect
54-
github.com/yusufpapurcu/wmi v1.2.3 // indirect
55-
golang.org/x/crypto v0.21.0 // indirect
56-
golang.org/x/sync v0.6.0 // indirect
57-
golang.org/x/sys v0.18.0 // indirect
58-
golang.org/x/text v0.14.0 // indirect
54+
github.com/yusufpapurcu/wmi v1.2.4 // indirect
55+
golang.org/x/crypto v0.23.0 // indirect
56+
golang.org/x/sync v0.7.0 // indirect
57+
golang.org/x/sys v0.20.0 // indirect
58+
golang.org/x/text v0.15.0 // indirect
5959
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
6060
rsc.io/tmplfunc v0.0.3 // indirect
6161
)

geth-utils/l2geth/go.sum

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,14 @@ github.com/scroll-tech/go-ethereum v1.10.14-0.20240425105228-df3fde136799 h1:lcA
168168
github.com/scroll-tech/go-ethereum v1.10.14-0.20240425105228-df3fde136799/go.mod h1:i4VBgWoaW/y0D8MmQb7hSOulyw1dKhuiSFAbznwivCA=
169169
github.com/scroll-tech/go-ethereum v1.10.14-0.20240428082752-c5836a42d3b9 h1:j+rFWbiXQN4UuaS0JBLEVDcw9Fd2vDsjDCLzcx/OL6Y=
170170
github.com/scroll-tech/go-ethereum v1.10.14-0.20240428082752-c5836a42d3b9/go.mod h1:i4VBgWoaW/y0D8MmQb7hSOulyw1dKhuiSFAbznwivCA=
171+
github.com/scroll-tech/go-ethereum v1.10.14-0.20240524071237-9b4a779104ac h1:A7tBJeDFXVjL4URIR89Ir8amS345Kgnh//+FA2v3lEw=
172+
github.com/scroll-tech/go-ethereum v1.10.14-0.20240524071237-9b4a779104ac/go.mod h1:GLhY3RmqBezwgPCqrPM/dTjrweDzVSAQ+Ggldk4dCTM=
171173
github.com/scroll-tech/zktrie v0.7.1 h1:NrmZNjuBzsbrKePqdHDG+t2cXnimbtezPAFS0+L9ElE=
172174
github.com/scroll-tech/zktrie v0.7.1/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk=
173175
github.com/scroll-tech/zktrie v0.8.2 h1:UMuIfA+jdgWMLmTgTL64Emo+zzMOdcnH0+eYdDcshxQ=
174176
github.com/scroll-tech/zktrie v0.8.2/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk=
177+
github.com/scroll-tech/zktrie v0.8.4 h1:UagmnZ4Z3ITCk+aUq9NQZJNAwnWl4gSxsLb2Nl7IgRE=
178+
github.com/scroll-tech/zktrie v0.8.4/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk=
175179
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
176180
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
177181
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
@@ -191,20 +195,28 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70
191195
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
192196
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
193197
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
198+
github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
199+
github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
194200
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
195201
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
202+
github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
203+
github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE=
196204
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef h1:wHSqTBrZW24CsNJDfeh9Ex6Pm0Rcpc7qrgKBiL44vF4=
197205
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs=
198206
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
199207
github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
200208
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
209+
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
210+
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
201211
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
202212
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
203213
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
204214
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
205215
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
206216
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
207217
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
218+
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
219+
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
208220
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
209221
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
210222
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -224,6 +236,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
224236
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
225237
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
226238
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
239+
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
240+
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
227241
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
228242
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
229243
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -249,13 +263,16 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
249263
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
250264
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
251265
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
266+
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
267+
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
252268
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
253269
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
254270
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
255271
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
256272
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
257273
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
258274
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
275+
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
259276
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
260277
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
261278
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=

go.work.sum

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,7 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
418418
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
419419
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
420420
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
421+
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
421422
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
422423
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
423424
golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0=
@@ -428,12 +429,14 @@ golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
428429
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
429430
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
430431
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
432+
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
431433
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
432434
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
433435
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
434436
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
435437
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
436438
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
439+
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
437440
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
438441
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE=
439442
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

prover/src/inner/prover/mock.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ use zkevm_circuits::witness::Block;
1111

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

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

2222
pub fn mock_prove_witness_block(witness_block: &Block) -> anyhow::Result<()> {
2323
log::info!(
24-
"mock proving batch, batch metric {:?}",
24+
"mock proving chunk, chunk metric {:?}",
2525
metric_of_witness_block(witness_block)
2626
);
2727
let (circuit, instance) = C::from_witness_block(witness_block)?;
@@ -34,7 +34,7 @@ impl<C: TargetCircuit> Prover<C> {
3434
bail!("{:#?}", errs);
3535
}
3636
log::info!(
37-
"mock prove done. batch metric: {:?}",
37+
"mock prove done. chunk metric: {:?}",
3838
metric_of_witness_block(witness_block),
3939
);
4040
Ok(())

prover/src/utils.rs

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
#![allow(deprecated)]
12
use crate::{
23
types::BlockTraceJsonRpcResult,
3-
zkevm::circuit::{block_traces_to_witness_block, check_batch_capacity},
4+
zkevm::circuit::{block_traces_to_witness_block, print_chunk_stats},
45
};
56
use anyhow::{bail, Result};
67
use chrono::Utc;
7-
use eth_types::{l2_types::BlockTrace, Address};
8+
use eth_types::l2_types::BlockTrace;
89
use git_version::git_version;
910
use halo2_proofs::{halo2curves::bn256::Bn256, poly::kzg::commitment::ParamsKZG, SerdeFormat};
1011
use log::LevelFilter;
@@ -81,29 +82,12 @@ pub fn load_params(
8182
Ok(p)
8283
}
8384

84-
/// get a block-result from file
85-
pub fn get_block_trace_from_file<P: AsRef<Path>>(path: P) -> BlockTrace {
86-
let mut buffer = Vec::new();
87-
let mut f = File::open(&path).unwrap();
88-
f.read_to_end(&mut buffer).unwrap();
89-
90-
let mut trace = serde_json::from_slice::<BlockTrace>(&buffer).unwrap_or_else(|e1| {
91-
serde_json::from_slice::<BlockTraceJsonRpcResult>(&buffer)
92-
.map_err(|e2| {
93-
panic!(
94-
"unable to load BlockTrace from {:?}, {:?}, {:?}",
95-
path.as_ref(),
96-
e1,
97-
e2
98-
)
99-
})
100-
.unwrap()
101-
.result
102-
});
85+
#[deprecated]
86+
fn post_process_tx_storage_proof(trace: &mut BlockTrace) {
10387
// fill intrinsicStorageProofs into tx storage proof
10488
let addrs = vec![
105-
Address::from_str("0x5300000000000000000000000000000000000000").unwrap(),
106-
Address::from_str("0x5300000000000000000000000000000000000002").unwrap(),
89+
*bus_mapping::l2_predeployed::message_queue::ADDRESS,
90+
*bus_mapping::l2_predeployed::l1_gas_price_oracle::ADDRESS,
10791
];
10892
for tx_storage_trace in &mut trace.tx_storage_trace {
10993
if let Some(proof) = tx_storage_trace.proofs.as_mut() {
@@ -125,7 +109,28 @@ pub fn get_block_trace_from_file<P: AsRef<Path>>(path: P) -> BlockTrace {
125109
.insert(*addr, trace.storage_trace.storage_proofs[addr].clone());
126110
}
127111
}
112+
}
128113

114+
/// get a block-result from file
115+
pub fn get_block_trace_from_file<P: AsRef<Path>>(path: P) -> BlockTrace {
116+
let mut buffer = Vec::new();
117+
let mut f = File::open(&path).unwrap();
118+
f.read_to_end(&mut buffer).unwrap();
119+
120+
let mut trace = serde_json::from_slice::<BlockTrace>(&buffer).unwrap_or_else(|e1| {
121+
serde_json::from_slice::<BlockTraceJsonRpcResult>(&buffer)
122+
.map_err(|e2| {
123+
panic!(
124+
"unable to load BlockTrace from {:?}, {:?}, {:?}",
125+
path.as_ref(),
126+
e1,
127+
e2
128+
)
129+
})
130+
.unwrap()
131+
.result
132+
});
133+
post_process_tx_storage_proof(&mut trace);
129134
trace
130135
}
131136

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

138143
#[derive(Debug)]
139-
pub struct BatchMetric {
144+
pub struct ChunkMetric {
140145
pub num_block: usize,
141146
pub num_tx: usize,
142147
pub num_step: usize,
143148
}
144149

145-
pub fn metric_of_witness_block(block: &Block) -> BatchMetric {
146-
BatchMetric {
150+
pub fn metric_of_witness_block(block: &Block) -> ChunkMetric {
151+
ChunkMetric {
147152
num_block: block.context.ctxs.len(),
148153
num_tx: block.txs.len(),
149154
num_step: block.txs.iter().map(|tx| tx.steps.len()).sum::<usize>(),
150155
}
151156
}
152157

153-
pub fn chunk_trace_to_witness_block(mut chunk_trace: Vec<BlockTrace>) -> Result<Block> {
158+
pub fn chunk_trace_to_witness_block(chunk_trace: Vec<BlockTrace>) -> Result<Block> {
154159
if chunk_trace.is_empty() {
155160
bail!("Empty chunk trace");
156161
}
157-
158-
// Check if the trace exceeds the circuit capacity.
159-
check_batch_capacity(&mut chunk_trace)?;
160-
162+
print_chunk_stats(&chunk_trace);
161163
block_traces_to_witness_block(chunk_trace)
162164
}
163165

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

202204
fn create_output_dir(id: &str) -> String {
203-
let mode = read_env_var("MODE", "multi".to_string());
204205
let output = read_env_var(
205206
"OUTPUT_DIR",
206-
format!(
207-
"{}_output_{}_{}",
208-
id,
209-
mode,
210-
Utc::now().format("%Y%m%d_%H%M%S")
211-
),
207+
format!("outputs/{}_{}", id, Utc::now().format("%Y%m%d_%H%M%S")),
212208
);
213209

214210
let output_dir = PathBuf::from_str(&output).unwrap();

prover/src/zkevm/capacity_checker.rs

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,5 @@
1-
use super::circuit::{
2-
MAX_BYTECODE, MAX_CALLDATA, MAX_EXP_STEPS, MAX_KECCAK_ROWS, MAX_MPT_ROWS, MAX_POSEIDON_ROWS,
3-
MAX_RWS, MAX_VERTICAL_ROWS,
4-
};
5-
61
use super::circuit::{
72
block_traces_to_witness_block_with_updated_state, calculate_row_usage_of_witness_block,
8-
get_super_circuit_params,
93
};
104
use bus_mapping::circuit_input_builder::{self, CircuitInputBuilder};
115
use eth_types::{
@@ -16,6 +10,9 @@ use eth_types::{
1610
use itertools::Itertools;
1711
use mpt_zktrie::state::ZktrieState;
1812
use serde_derive::{Deserialize, Serialize};
13+
use zkevm_circuits::super_circuit::params::{
14+
get_sub_circuit_limit_and_confidence, get_super_circuit_params,
15+
};
1916

2017
#[derive(Debug, Clone, Deserialize, Serialize)]
2118
pub struct SubCircuitRowUsage {
@@ -48,24 +45,10 @@ impl RowUsage {
4845
}
4946
// We treat 1M as 100%
5047
pub fn normalize(&self) -> Self {
51-
let real_available_rows = [
52-
(MAX_RWS, 0.95), // evm
53-
(MAX_RWS, 0.95), // state
54-
(MAX_BYTECODE, 0.95), // bytecode
55-
(MAX_RWS, 0.95), // copy
56-
(MAX_KECCAK_ROWS, 0.95), // keccak
57-
(MAX_KECCAK_ROWS, 0.95), // sha256
58-
(MAX_VERTICAL_ROWS, 0.95), // tx
59-
(MAX_CALLDATA, 0.95), // rlp
60-
(7 * MAX_EXP_STEPS, 0.95), // exp
61-
(MAX_KECCAK_ROWS, 0.95), // modexp
62-
(MAX_RWS, 0.95), // pi
63-
(MAX_POSEIDON_ROWS, 0.95), // poseidon
64-
(MAX_VERTICAL_ROWS, 0.95), // sig
65-
(MAX_VERTICAL_ROWS, 1.0), // ecc
66-
(MAX_MPT_ROWS, 0.95), // mpt
67-
]
68-
.map(|(limit, confidence)| (limit as f32 * confidence) as usize);
48+
let real_available_rows: Vec<_> = get_sub_circuit_limit_and_confidence()
49+
.into_iter()
50+
.map(|(limit, confidence)| (limit as f64 * confidence) as usize)
51+
.collect();
6952
let details = self
7053
.row_usage_details
7154
.iter()

0 commit comments

Comments
 (0)