Releases: scroll-tech/zkevm-circuits
v0.12.0
Overview
In previous upgrades (v0.10
and v0.11
) our goal was to lower the costs of committing L2 data to L1. We achieved this by:
- Data-availability via an EIP-4844 blob-carrying transaction (#1153 )
- Encoding data in the blob and implementing an in-circuit
zstd
decoder (#1213 )
In v0.12
, we tackle the challenge of lowering on-chain proof verification costs.
As of v0.11
, every batch
's proof is verified on-chain (L1 EVM) which finalizes the state root post-batch. A batch
already aggregates proofs from multiple chunks
, essentially not requiring each of those chunk proofs to be verified on-chain. We are now pushing these verification costs even lower by recursively bundling those batches into a single bundle
that can be verified on-chain. As opposed to the aggregation scheme used from a list of chunks to a single batch
(where we have an upper bound to the number of chunks we can aggregate), the recursive aggregation scheme adopted in v0.12
is not bound by such a limit to the number of batches we can aggregate. Instead, the number of "recursion rounds" can be fine-tuned by the desired latency for L2 data to be finalized on L1.
Features
- Change Batch Circuit PI for Recursion (#1349 ) @darth-cy
RecursionCircuit
and updatedBatchCircuit
(#1352 ) @noel2004prover
updates to supportRecursionCircuit
(#1355 ) @roynalnaruto- New Batch Circuit PI Integration Debug Fixes (#1357 ) @darth-cy
- Standalone BatchHeader Constructor (#1362 ) @darth-cy
Tests, Fixes and Documentation
- Add full blob encoding and consistency check (#1379) @darth-cy
- Add full blob batch data (#1374) @darth-cy
- fix: blob bytes <= max allowed (#1373) @roynalnaruto
- [FEAT] Detect constraint failure early in recursion circuit (#1369) @noel2004
- Update
aggregator
doc (#1365) @roynalnaruto - Update EIP2930_1559.md (#1364) @Olexandr88
- Fix: Update aggregator/README.md and comments for EIP4844 (#1331) @dongliangCai
Auto-generated Section
Changes in the bus-mapping
- upgrade l2geth and remove old bytecode collecting codes (#1376) @lispc
- add comment to explain rlp_unsigned_bytes (#1367) @DreamWuGit
- chore: upgrade revm to v40 (#1360) @lightsing
- refactor: disable "test" "mock" features in prover side to get rid of Go (#1347) @lispc
- Refactor: trace (#1341) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
- move Field and ToScalar to gadgets (#1337) @lispc
Changes in eth-types
- upgrade l2geth and remove old bytecode collecting codes (#1376) @lispc
- feat: allow bincode ser/de (#1370) @lightsing
- add comment to explain rlp_unsigned_bytes (#1367) @DreamWuGit
- chore: upgrade revm to v40 (#1360) @lightsing
- [feat] add Bernoulli to HardforkId (#1356) @lightsing
- [fix] move from_json_file back to prover crate (#1350) @lightsing
- Sync v0.11 till 38a68e2 (#1348) @lispc
- Refactor: trace (#1341) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
- v0.11: Update fork height (#1338) @lispc
- move Field and ToScalar to gadgets (#1337) @lispc
Changes in external-tracer
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in gadgets
RecursionCircuit
and updatedBatchCircuit
(#1352) @noel2004- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
- move Field and ToScalar to gadgets (#1337) @lispc
Changes in geth-utils
- upgrade l2geth and remove old bytecode collecting codes (#1376) @lispc
- Sync v0.11 till 38a68e2 (#1348) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in integration-tests
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in Keccak
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in mock
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in prover
- fix: propagate
chain_id
over app SNARKs (batch circuit instances) (#1382) @noel2004 - fix: vk filenames (#1371) @roynalnaruto
RecursionCircuit
and updatedBatchCircuit
(#1352) @noel2004- revert chunk circuit vk to mainnet version (#1361) @lispc
- [fix] move from_json_file back to prover crate (#1350) @lightsing
- refactor: disable "test" "mock" features in prover side to get rid of Go (#1347) @lispc
- refactor(ccc): less magic numbers (#1346) @lispc
- Refactor: trace (#1341) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in the zkevm-circuits
- refactor SameContextGadget:assign_exec_step to include block, call (#1380) @DreamWuGit
- upgrade l2geth and remove old bytecode collecting codes (#1376) @lispc
RecursionCircuit
and updatedBatchCircuit
(#1352) @noel2004- revert chunk circuit vk to mainnet version (#1361) @lispc
- [feat] add Bernoulli to HardforkId (#1356) @lightsing
- Sync v0.11 till 38a68e2 (#1348) @lispc
- refactor: disable "test" "mock" features in prover side to get rid of Go (#1347) @lispc
- refactor(ccc): less magic numbers (#1346) @lispc
- Fix: Update tx_circuit.rs MAX_AGG_SNARKS (#1344) @dongliangCai
- add error mcopy test (#1333) @DreamWuGit
- Refactor: trace (#1341) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
- move Field and ToScalar to gadgets (#1337) @lispc
v0.12.0-rc.2
Summary
- The commit that had accidentally disabled the
DecoderConfig
has been reverted as part of this PR. - The PR also exposes an API to construct
BatchHeader
, so multiple batch proofs can now be constructed in parallel. - Since we receive a
BatchHeader
from infra and also compute the header circuit-side given the chunk data, we add sanity checks between those.
v0.12.0-rc.1
⚠️ Warning ⚠️
This is not production-ready since we have to revert a commit that accidentally got included. Reverting this commit will change the verification key and hence we will publish the next release candidate upon doing that.
Summary
- Terminology:
chunk
is a list ofblocks
batch
is a list ofchunks
bundle
is a list ofbatches
- The
ZkEvmVerifier
contract now verifies abundle
proof, i.e. the proof of several batches bundled recursively, instead of abatch
proof - The
AggregationCircuit
has been renamed toBatchCircuit
- Public input of the
AggregationCircuit
now has context of the previous batch (in the form ofbatchHash
) batchHash
is the Keccak-256 digest ofBatchHeaderV3
- Public input of the
- The
RecursionCircuit
recursively verifies state transition between "previous" and "current"BatchCircuit
SNARKsround
represents the number of batches to recurse over
What’s Changed
- fix: table kind should not change over the fse code trailing bits (#1345) @roynalnaruto
- Fix: Update aggregator/README.md and comments for EIP4844 (#1331) @dongliangCai
Changes in the bus-mapping
- refactor: disable "test" "mock" features in prover side to get rid of Go (#1347) @lispc
- Refactor: trace (#1341) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
- move Field and ToScalar to gadgets (#1337) @lispc
Changes in eth-types
- [feat] add Bernoulli to HardforkId (#1356) @lightsing
- [fix] move from_json_file back to prover crate (#1350) @lightsing
- Sync v0.11 till 38a68e2 (#1348) @lispc
- Refactor: trace (#1341) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
- v0.11: Update fork height (#1338) @lispc
- move Field and ToScalar to gadgets (#1337) @lispc
Changes in external-tracer
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in gadgets
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
- move Field and ToScalar to gadgets (#1337) @lispc
Changes in geth-utils
- Sync v0.11 till 38a68e2 (#1348) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in integration-tests
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in Keccak
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in mock
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in prover
- revert chunk circuit vk to mainnet version (#1361) @lispc
- [fix] move from_json_file back to prover crate (#1350) @lightsing
- refactor: disable "test" "mock" features in prover side to get rid of Go (#1347) @lispc
- refactor(ccc): less magic numbers (#1346) @lispc
- Refactor: trace (#1341) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
Changes in the zkevm-circuits
- revert chunk circuit vk to mainnet version (#1361) @lispc
- [feat] add Bernoulli to HardforkId (#1356) @lightsing
- Sync v0.11 till 38a68e2 (#1348) @lispc
- refactor: disable "test" "mock" features in prover side to get rid of Go (#1347) @lispc
- refactor(ccc): less magic numbers (#1346) @lispc
- Fix: Update tx_circuit.rs MAX_AGG_SNARKS (#1344) @dongliangCai
- add error mcopy test (#1333) @DreamWuGit
- Refactor: trace (#1341) @lispc
- enhancement: add a typeos check in CI, and fix current existly typos errors. that is a TODO thing, and it's done now. (#1340) @xyq-c-cpp
- move Field and ToScalar to gadgets (#1337) @lispc
v0.11.0: DA Compression, new opcodes
Highlights:
- A new zstd chip has been implemented and integrated into the batch circuit, enabling compressed data availability (DA) within blobs. The maximum number of chunks in a batch has been increased from 15 to 45, allowing approximately 600 transactions per blob on average.
- New opcodes added: TLOAD, TSTORE, MCOPY, and BASEFEE.
- Support for new transaction types: EIP-2930 and EIP-1559.
- Implementation of a new L1 data fee mechanism, providing more accurate and fair L1 data fees.
Internal code refactoring and cleanup.
What’s Changed
- [fix] typo in seq exec (#1332) @noel2004
- Auditing: fix doc example of evm circuit (#1329) @DreamWuGit
byte_idx
MUST increment for certain tags (#1302) @roynalnaruto- fix: equality constraints for len(bytes) for both blob and batch (#1300) @roynalnaruto
- Refactor/Da Compression Witness Generation (#1298) @darth-cy
- Import zstd from da-codec (#1291) @noel2004
AggregationCircuit
: lookup degree <= 9 (#1299) @roynalnarutoAggregationCircuit
Variadic tests and fix for permutation check not done on fixed rows (#1297) @roynalnarutoBooleanAdvice
column to avoid soundness bugs (#1288) @roynalnaruto- allow up to 5x compression ratio (#1287) @roynalnaruto
- remove dead code (#1253) @z2trillion
- add doc for mcopy (#1257) @DreamWuGit
- Update Keccak_Circuit.md - Fix Keccak256 Implementation Broken Link (#1244) @MartinKong1990
- testool update (#1237) @lightsing
- fix testool for EIP-1153 (#1235) @lispc
- Update zktrie with native rust lib (#1198) @noel2004
- Add 4844 soundness tests (#1210) @z2trillion
Changes in the bus-mapping
- Refactor: BlockTrace struct (#1334) @lispc
- Refactor: witness building (#1328) @lispc
- fix: use correct chain id for l1 fee (#1325) @lispc
- feat(l1 fee): many updates (#1316) @lispc
- feat: add row usages to chunk proof, and refactor prover codes (#1314) @lispc
- Chore: fix clippy (#1312) @DreamWuGit
- update L1 data fee for curie (#1293) @DreamWuGit
- feat: l1 fee contract upgrade part2 (#1301) @lispc
- feat: upgrade sys contract (#1279) @lispc
- feat: split end block and padding (#1283) @lispc
- refactor witness::Block (#1277) @lispc
- chore: fix typos (#1220) @xiaoxianBoy
- opt: remove extcodesize code hashing in ccc (#1267) @lispc
- feat: retrace in BuilderClient::gen_inputs (#1260) @lightsing
- feat: copy circuit support overlap copy range (#1255) @DreamWuGit
- feat: implement mcopy opcode (#1209) @DreamWuGit
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- refactor for stateless block verifier (#1236) @lightsing
- Implement TLOAD and TSTORE (#1233) @z2trillion
- testool: upgrade for cancun and other fixes (#1221) @lispc
- [feat] assert call trace length (#1228) @lightsing
- testool: enable strict-ccc and disable enable-storage (#1206) @lightsing
- [Testing] Enable mainnet test utility work with common rpc node (#1212) @noel2004
Changes in circuit-benchmarks
- refactor witness::Block (#1277) @lispc
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- refactor: mv
Field
from eth-types to zkevm-circuits (#1240) @lispc - refactor for stateless block verifier (#1236) @lightsing
Changes in eth-types
- set curie fork height (#1336) @lispc
- Refactor: BlockTrace struct (#1334) @lispc
- Refactor: witness building (#1328) @lispc
- feat(l1 fee): many updates (#1316) @lispc
- Chore: fix clippy (#1312) @DreamWuGit
- update L1 data fee for curie (#1293) @DreamWuGit
- feat: l1 fee contract upgrade part2 (#1301) @lispc
- refactor prover codes (#1292) @lispc
- upgrade revm to v36 (#1290) @lightsing
- refactor witness::Block (#1277) @lispc
- opt: remove extcodesize code hashing in ccc (#1267) @lispc
- feat: implement mcopy opcode (#1209) @DreamWuGit
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- chore: clean up deps (#1242) @lispc
- refactor: mv
Field
from eth-types to zkevm-circuits (#1240) @lispc - refactor for stateless block verifier (#1236) @lightsing
- Implement TLOAD and TSTORE (#1233) @z2trillion
- testool: upgrade for cancun and other fixes (#1221) @lispc
- [feat] assert call trace length (#1228) @lightsing
- Upgrade L1geth (#1216) @z2trillion
Changes in external-tracer
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- testool: upgrade for cancun and other fixes (#1221) @lispc
Changes in gadgets
- Epic: DA-Compression (#1213) @roynalnaruto
- fix copy circuit phase (#1282) @lispc
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
Changes in geth-utils
- feat(l1 fee): many updates (#1316) @lispc
- update L1 data fee for curie (#1293) @DreamWuGit
- refactor prover codes (#1292) @lispc
- feat: implement mcopy opcode (#1209) @DreamWuGit
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- Implement TLOAD and TSTORE (#1233) @z2trillion
- testool: upgrade for cancun and other fixes (#1221) @lispc
- Upgrade L1geth (#1216) @z2trillion
Changes in integration-tests
- Refactor: witness building (#1328) @lispc
- refactor witness::Block (#1277) @lispc
- feat: retrace in BuilderClient::gen_inputs (#1260) @lightsing
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- testool: upgrade for cancun and other fixes (#1221) @lispc
- [Testing] Enable mainnet test utility work with common rpc node (#1212) @noel2004
Changes in Keccak
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
Changes in mock
- feat(l1 fee): many updates (#1316) @lispc
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- testool: upgrade for cancun and other fixes (#1221) @lispc
Changes in prover
- Refactor: BlockTrace struct (#1334) @lispc
- Refactor: witness building (#1328) @lispc
- feat(l1 fee): many updates (#1316) @lispc
- fix prover after refactor (#1315) @lispc
- feat: add row usages to chunk proof, and refactor prover codes (#1314) @lispc
- agg circuit: change keccak degree and num chunks (#1311) @lispc
- feat: l1 fee contract upgrade part2 (#1301) @lispc
- feat: upgrade sys contract (#1279) @lispc
- refactor prover codes (#1292) @lispc
- refactor witness::Block (#1277) @lispc
- Make aggregation circuit generic over number of snarks (#1225) @zhenfeizhang
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- refactor for stateless block verifier (#1236) @lightsing
- testool: upgrade for cancun and other fixes (#1221) @lispc
Changes in the zkevm-circuits
- set curie fork height (#1336) @lispc
- fix degree pow of rand table in agg circuit (#1335) @lispc
- Auditing: ErrorMemorycopy constrain src_len & memory expansion (#1321) @DreamWuGit
- Refactor: BlockTrace struct (#1334) @lispc
- Refactor: witness building (#1328) @lispc
- L1 Fee Curie: add unit test (#1313) @DreamWuGit
- feat(l1 fee): many updates (#1316) @lispc
- Fix: field_rlc column needs to in phase2. (#1320) @kunxian-xia
- feat: add row usages to chunk proof, and refactor prover codes (#1314) @lispc
- agg circuit: change keccak degree and num chunks (#1311) @lispc
- Chore: fix clippy (#1312) @DreamWuGit
- update L1 data fee for curie (#1293) @DreamWuGit
- Fix: tx circuit constraint err for access list init section (#1310) @kunxian-xia
- Fix: tx circuit errors (#1303) @kunxian-xia
- feat: l1 fee contract upgrade part2 (#1301) @lispc
- opt: reduce agg circuit phase (#1296) @lispc
- [FIX #1258] conditional constraint of copy lookup in begin_tx (#1295) @noel2004
- feat: upgrade sys contract (#1279) @lispc
- refactor prover codes (#1292) @lispc
- Auditing: constrain rwc_inc_left for last & first step (#1286) @DreamWuGit
- Epic: DA-Compression (#1213) @roynalnaruto
- Fix: fix ci errors in pr#1280 (#1285) @kunxian-xia
- feat: split end block and padding (#1283) @lispc
- fix tx circuit "tag" and enable 2930 super test with access list (#1280) @DreamWuGit
- Auditing: constrain
end_tx
in require_step_state_transition (#1281) @DreamWuGit - fix copy circuit phase (#1282) @lispc
- auditing updates for some comments (#1276) @DreamWuGit
- Fix: lookup errors emitted in RLP sub-circuit (reported by testool) (#1278) @kunxian-xia
- refactor witness::Block (#1277) @lispc
- fix sig issue for 1559/2930 in tx circuit (#1269) @DreamWuGit
- Add constraints in state circuit for AccountTransientStorage (#1274) @z2trillion
- chore: fix typos (#1220) @xiaoxianBoy
- opt: remove extcodesize code hashing in ccc (#1267) @lispc
- feat: copy circuit support overlap copy range (#1255) @DreamWuGit
- feat: implement mcopy opcode (#1209) @DreamWuGit
- fix: poseidon-base default short (#1254) @lightsing
- Audit/1559 TxTable Tag Transitions (#1227) @darth-cy
- Clean up TLOAD and TSTORE and add tests (#1245) @z2trillion
- move mpt witness to zkevm-circuits (#1243) @lispc
- refactor: mv
Field
from eth-types to zkevm-circuits (#1240) @lispc - refactor for stateless block verifier (#1236) @lightsing
- Implement TLOAD and TSTORE (#1233) @z2trillion
- Audit Fixes EIP2930/1559 in RLP Circuits (#1175) @darth-cy
- testool: upgrade for cancun and other fixes (#1221) @lispc
- feat(1559): constrain tx gas price == effective gas price (#1152) @DreamWuGit
- fix audit: constrain tx_l1_fee gadget (#1151) @DreamWuGit
- audit fix input_mod_192_is_zero in ec_pairing (#1150) @DreamWuGit
- Audit fix for access list rw_delta_expr (#1149) @DreamWuGit
- [Testing] Enable mainnet test utility work with common rpc node (#1212) @noel2004
v0.10.3: support blob DA
Highlights:
- support blob DA (EIP-4844)
- support SHA256 precompile
- Removed the dependency on StructLog.stack, reducing the trace size and the overhead of trace deserialization.
What's Changed
- PUSH optimization by @naure in #956
- refactor ZktrieState [dup #903] by @noel2004 in #968
- optim-invert: cache the inversion of step height by @naure in #987
- Feat: add support for EIP2930 tx by @kunxian-xia in #974
- testool: skip stTimeConsuming for default(not nightly) mode by @lightsing in #986
- fix: add
workspace.package
andworkspace.dependencies
to avoid duplicate by @silathdiir in #989 - create_op: fix memory size by @lispc in #990
- fix: move common dependencies to
workspace.dependencies
by @silathdiir in #995 - ccc performance optimization by @lightsing in #970
- fix: log(0) returns 0 by @zhenfeizhang in #1001
- Refactor create op by @lispc in #1000
- fix: add testool gpu dockers by @silathdiir in #997
- Fix/tob wave3 ecdsa circuit review by @zhenfeizhang in #992
- Refactor sign-types to remove
libsecp256k1
dep by @roynalnaruto in #969 - remove unused address_high, otherwise also need to update it for word lo-hi by @DreamWuGit in #983
- CI: delete runner-wakeup by @silathdiir in #1007
- Fix little-endian to big-endian representation in tests by @junomonster in #1012
- [security-review] issue-1: fix to delete
keccak256
dependency frombus-mapping
by @silathdiir in #1017 - [security-review] issue-13: fix wrong comment for opcodes in bus-mapping by @silathdiir in #1023
- [security-review] issue-14: replace
nth_last(0)
andnth_last_filled(0)
withlast()
andlast_filled()
by @silathdiir in #1021 - [security-review] issue-10: refactor error-invalid-jump in bus-mapping by @silathdiir in #1020
- [security-review] issue-6: upgrade dependency
itertools
,strum
andstrum_macros
by @silathdiir in #1019 - [security-review] issue-4: add explicit dependency
resolver
to workspace by @silathdiir in #1018 - fix: several typos in the docs by @tudorpintea999 in #1028
- Refactor:
PrecompileGadget
and precompile states by @roynalnaruto in #1029 - [OpenZeppelin audit N-05] fix typos in bus-mapping by @silathdiir in #1026
- [OpenZeppelin audit N-07] replace
or_insert_with
withor_default
for BTreeMap and HashMap by @silathdiir in #1025 - [FEAT] support mainnet block in mainnet.rs (#814) by @noel2004 in #1004
- fix: only enable circuit for
BASEFEE
opcode (without opcode mapping) by @silathdiir in #1033 - fix: disable applying MPT for non-scroll to fix panic in integration-tests by @silathdiir in #1034
- feat: add
AccessListGasCost
to fix begin-tx gas cost (EIP 2930 optional-access-list) by @silathdiir in #1041 - [feat] enum error in GethExecStep by @lightsing in #1037
- [feat] add feature switch of memory/stack/storage by @lightsing in #1038
- parallel assignment of evm circuit by @lispc in #1027
- Refactor PI Circuit by @roynalnaruto in #1042
- fix macos build by @lispc in #1047
- remove halo2wrong by @lispc in #1048
- feat: Add
TxEip2930Gadget
to handle EIP-2930 (for evm-circuit part) by @silathdiir in #1045 - [FEAT] precompile-sha256 by @noel2004 in #1032
- [Fix] precompile-sha256 fmt issue by @noel2004 in #1049
- chore: upgrade group/ff/halo2 and rust version by @zhenfeizhang in #1022
- [chore] update rust toolchain to 1.76 nightly; replace lazy_static/once_cell with std::sync::LazyLock by @lispc in #1050
- Fix typos by @nnsW3 in #1052
- I corrected the spelling mistakes. by @bolatfurkan in #1053
- chore(docs): typo fix by @dzizazda in #1059
- feat: implement access list address and storage key lookups in copy circuit (EIP-2930) by @silathdiir in #1058
- [feat] impl arithmetic/environment opcodes by @lightsing in #1039
- fix: revert testool upgrade by @silathdiir in #1061
- Feat: parallelize mpt table loading by @kunxian-xia in #1067
- testool: parse access-list from json and yaml by @silathdiir in #1072
- fix testool yaml parsing for access-list by @silathdiir in #1074
- [Soundness] Tx.to == precompile by @noel2004 in #1068
- Feat: Support EIP1559 by @darth-cy in #1030
- [Refactor] Config implement to reduce duplicated code in multiple_precision_integer.rs by @ludete in #1054
- feat: add sender balance check to begin-tx (EIP-1559) by @silathdiir in #1066
- testool: enable and parse for EIP-1559 and EIP-2930 by @silathdiir in #1079
- chore: Fix multiple typos by @hugo-syn in #1082
- [FIX] sha256 witness issue (#1081) by @noel2004 in #1087
- Update and fix access-list issues with testool by @silathdiir in #1080
- Fix remaining
testool
failed cases for EIP-1559 and EIP-2930 by @silathdiir in #1088 - fix (soundness): save access-list
is_warm_prev
to copy circuit by @silathdiir in #1090 - [feat] balance testool test job by @lightsing in #1094
- [FIX] Handling oog for sha256 precompile by @noel2004 in #1095
- chore: proofreading the docs by @Gakunt in #1093
- [Fix] SHA256 circuit: Wrong final condition base on padding position by @noel2004 in #1096
- [feat] add call tracer and prestate tracer by @lightsing in #1043
- RlpDecodingTable Id Column Phase Correction by @darth-cy in #1098
- [Fix]Input parsing for modexp precompile by @noel2004 in #1099
- Feat/ci fix by @johnsonjie in #1101
- Revert "Feat/ci fix" by @lispc in #1102
- Feat/ci fix by @lispc in #1103
- upgrade halo2 to v1.1 mvlookup by @lispc in #1100
- pick privacy-scaling-explorations#1719 from upstream: fix begin-tx tx_id soundness by @lispc in #1078
- feat: stack reconstruct by @lightsing in #993
- [fix] remove debug println by @lightsing in #1105
- [Add comments for precompile design by @noel2004 in https://github.com//pull/1116
- doc for eip EIP2930&1559 by @DreamWuGit in #1115
- eip1559 gadget: constrain gas_fee_cap >= base_fee by @DreamWuGit in #1120
- misc trace fixes; disable batch inv in halo2 by @lispc in #1129
- [Fix] index of storae key in access list by @noel2004 in #1133
- [fix] misconfiguration of trace config by @lightsing in https://github....
v0.9.9
What's Changed
- better ccc log by @lispc in #960
- fix: move
inner-prove
andchunk-prove
to common provertest
feature by @silathdiir in #961 - fix(prover): delete
StorageTrace
fromChunkProof
by @silathdiir in #964 - misc refactor: rename batch->chunk; remove useless var; refine comments; by @lispc in #965
- test(mpt circuit): transfer eth to non existing address by @DreamWuGit in #949
- fix circuit doc math latex by @DreamWuGit in #952
- CI: upgrade actions and fix cache issue by @silathdiir in #966
- [feat] testool : more improvements by @lightsing in #955
- fix: add
batch-prove
to prover test module by @silathdiir in #975 - fix: typo in variable name by @icemelon in #978
- Add code hash regression tests by @z2trillion in #977
- fix tob-3-10 and tob-3-11 by @zhenfeizhang in #979
- add sanity check to make sure ComparatorChip only use cur() in RLP by @kunxian-xia in #980
- upgrade mpt circuit by @lispc in #982
- fix: add
set_light_mode
function to ccc by @silathdiir in #984 - fix (v0.9): add feature
strict-ccc
by @silathdiir in #1003 - trace: disable step storage; remove reading from sload step storage by @lispc in #1035
New Contributors
Full Changelog: v0.9.2...v0.9.9
v0.9.2
What’s Changed
- fix: add CHANGELOG (#942) @silathdiir
- support max snark up to 15 (#803) @zhenfeizhang
- fix-tob-xxx: add a missing boolean constraint for chunk_is_valid cells (#902) @zhenfeizhang
- add opcodes for evm circuit doc (#891) @DreamWuGit
- fix: refactor and extract pairing-check code to a function (#860) @silathdiir
- testool: support all precompiles (#843) @lispc
- add pi, sig & modexp doc (#836) @DreamWuGit
- fix testool and update codehash (#805) @lightsing
- add four circuits' doc (#806) @DreamWuGit
Changes in the bus-mapping
- fix ccc panic CodeNotFound (#958) @lispc
- many sanity checks for mpt witness (#950) @lispc
- Fix build (#938) @silathdiir
- upgrade ethers from 0.17.0 to 2.0.7 (#937) @kunxian-xia
- ecrecover soundness (address not recovered) (#930) @roynalnaruto
- add "" to default codedb (#929) @lispc
- refactor(bus-mapping): spit begin end tx to another file (#922) @lispc
- [feat] prestate tracer (#914) @lightsing
- fix: load constants wherever applicable (#892) @roynalnaruto
- test: don't use l1 tx in tracing (#886) @lispc
- feat: check post tx account (#878) @lispc
- refactor: update the default sign_data (#560) @kunxian-xia
- ec pairing simplify (#873) @roynalnaruto
- bump l2geth; support sig circuit in testool (#869) @lispc
- Feat: bump up poseidon-circuit to enable parallel synthesis (#867) @kunxian-xia
- fix(ecMul): handle case for P == -R (#865) @roynalnaruto
- Fix: post state check should fail for hash precompile tests (#856) @kunxian-xia
- Clean mod exp codes (#859) @lispc
- Reversion from Precompile calls (even from begin_tx) (#855) @roynalnaruto
- feat(testool): use list to filter tests; upgrade revm to fix modexp gas cost (#853) @lispc
- Fix/rws limit early stop (#852) @lispc
- fix-exp-is-last: enforce the secure termination of Exp circuit (#837) @naure
- Precompile (non-static) calls with (non-zero) value (#848) @roynalnaruto
- Fix EXTCODECOPY with empty account (#846) @lispc
- Fix: gas cost of ec_pairing precompile (#844) @kunxian-xia
- Swap only if both G1, G2 are 0s from EVM (#845) @roynalnaruto
- testool: support sub circuit; fix modexp row usage (#841) @lispc
- testool: enable stZeroKnowledge tests (#839) @lispc
- Remove redundant branch (#835) @roynalnaruto
- Handle precompile call failure
call.is_success == false
due to "Invalid Inputs" and "Insufficient Gas" (#811) @roynalnaruto - fix CallContextField::GasLeft (#833) @lispc
- improve testool for scroll mode (#831) @lispc
- scroll mode for testool (#822) @lispc
- fix code_size in create; fix return_data for call oog (#826) @lispc
- [Feat] make supercircuit test applying l2trace (#767) @noel2004
- more strict check on Account Rw (#819) @lispc
- fix returndata for err cases; upgrade evm tests submodule (#813) @lispc
- Remove CopyDataType::Precompile (#809) @naure
- fix test tool create collision tests (#793) @DreamWuGit
Changes in circuit-benchmarks
- upgrade ethers from 0.17.0 to 2.0.7 (#937) @kunxian-xia
- [Feat] make supercircuit test applying l2trace (#767) @noel2004
Changes in eth-types
- many sanity checks for mpt witness (#950) @lispc
- Super Circuit Invalid Precompile Inputs Integration Tests (OOG, EC Fp Overflow, EC Not on Curve) (#850) @darth-cy
- upgrade ethers from 0.17.0 to 2.0.7 (#937) @kunxian-xia
- ecrecover soundness (address not recovered) (#930) @roynalnaruto
- [feat] prestate tracer (#914) @lightsing
- feat: check post tx account (#878) @lispc
- refactor: update the default sign_data (#560) @kunxian-xia
- Feat: bump up poseidon-circuit to enable parallel synthesis (#867) @kunxian-xia
- [Feat] make supercircuit test applying l2trace (#767) @noel2004
Changes in external-tracer
- test: don't use l1 tx in tracing (#886) @lispc
- fix(trace): add base fee (#877) @lispc
- Fix: post state check should fail for hash precompile tests (#856) @kunxian-xia
- testool: enable stZeroKnowledge tests (#839) @lispc
- improve testool for scroll mode (#831) @lispc
- [Feat] make supercircuit test applying l2trace (#767) @noel2004
Changes in geth-utils
- fix(trace): add base fee (#877) @lispc
- rewrite geth_utils with go.work (#875) @lispc
- bump l2geth; support sig circuit in testool (#869) @lispc
- fix pi circuit env var reading (#864) @lispc
- Fix: post state check should fail for hash precompile tests (#856) @kunxian-xia
- Clean mod exp codes (#859) @lispc
- improve testool for scroll mode (#831) @lispc
- scroll mode for testool (#822) @lispc
- [Feat] make supercircuit test applying l2trace (#767) @noel2004
Changes in integration-tests
- upgrade ethers from 0.17.0 to 2.0.7 (#937) @kunxian-xia
- [feat] prestate tracer (#914) @lightsing
- fix pi circuit env var reading (#864) @lispc
- fix code_size in create; fix return_data for call oog (#826) @lispc
Changes in mock
- upgrade ethers from 0.17.0 to 2.0.7 (#937) @kunxian-xia
- test: don't use l1 tx in tracing (#886) @lispc
- [Feat] make supercircuit test applying l2trace (#767) @noel2004
Changes in prover
- [feat] fast check_value (#936) @lightsing
- upgrade ethers from 0.17.0 to 2.0.7 (#937) @kunxian-xia
- fix: replace
dotenv
withdotenvy
(#934) @silathdiir - fix ecdsa circuit binary selection bug (#931) @zhenfeizhang
- fix: validate chain ID when generates witness block (#927) @silathdiir
- fix: miss fixing to
<= NORMALIZED_ROW_LIMIT
inadd
function (#925) @silathdiir - feat: add inner-prove and chunk-prove to testool (#921) @silathdiir
- feat: add common function of
prover
(#893) @silathdiir
Changes in the zkevm-circuits
- another edge case (#951) @roynalnaruto
- many sanity checks for mpt witness (#950) @lispc
- Fix: first 12 rows are dummy (not 300) (#946) @kunxian-xia
- Fix: ec pairing invalid len > 65536 test. (#948) @kunxian-xia
- add create edge tests (#941) @DreamWuGit
- Fix: keccak circuit's ccc need to consider first dummy chunk (#940) @kunxian-xia
- [feat] fast check_value (#936) @lightsing
- Super Circuit Invalid Precompile Inputs Integration Tests (OOG, EC Fp Overflow, EC Not on Curve) (#850) @darth-cy
- Fix lint (#939) @silathdiir
- upgrade ethers from 0.17.0 to 2.0.7 (#937) @kunxian-xia
- ecrecover soundness (address not recovered) (#930) @roynalnaruto
- fix ecdsa circuit binary selection bug (#931) @zhenfeizhang
- fix: add analysis function
print_evm_circuit_row_usage
andprint_rw_usage
to witness block (#933) @silathdiir - Bug fix: fixed part of tx table must have is_calldata = false (#935) @kunxian-xia
- opt(assignment): only do 3rd phase assignment for evm circuit in supe… (#924) @lispc
- constrain log memory address (#920) @DreamWuGit
- fix end_tx soundness (#916) @lispc
- test: calldataload/calldatasize/calldatacopy inside deployment (#913) @DreamWuGit
- Fix: test state degree 19->17 (#910) @lispc
- fix calldataload when tx.to = null (#909) @lispc
- FEAT: parallelize witness assignment of state circuit using assign_regions api (#545) @Velaciela
- minor refactor of testool (#907) @lispc
- fix tob-wave3-week3 issues (#904) @zhenfeizhang
- change BYTECODE_TABLE_LOOKUPS to 8 (#899) @lispc
- improve poseidon ccc log (#896) @lispc
- fix: load constants wherever applicable (#892) @roynalnaruto
- fix(ecmul): support -1 * (0,0) (#895) @lispc
- fix bug in #872 fix/msg-hash-zero (#880) @zhenfeizhang
- upgrade halo2-lib to fix ec pairing (#889) @lispc
- Optimize EVM selectors (#857) @naure
- test: don't use l1 tx in tracing (#886) @lispc
- testool: better handling of parallelism (#879) @lispc
- Fix: copy chain_id to tx circuit (#874) @kunxian-xia
- fix issue with msg_hash = 0 (#872) @zhenfeizhang
- refactor: update the default sign_data (#560) @kunxian-xia
- ec pairing simplify (#873) @roynalnaruto
- add more tests for modexp (#870) @DreamWuGit
- bump l2geth; support sig circuit in testool (#869) @lispc
- Feat: make row estimation of tx and pi circuits more precise (#866) @kunxian-xia
- fix(ecMul): handle case for P == -R (#865) @roynalnaruto
- add 0xfe invalid code test (#863) @DreamWuGit
- fix pi circuit env var reading (#864) @lispc
- Fix: post state check should fail for hash precompile tests (#856) @kunxian-xia
- pi circuit: add sanity check for state_root/coinbase/difficulty (#824) @kunxian-xia
- add modexp all zeros test (#861) @DreamWuGit
- Clean mod exp codes (#859) @lispc
- Fix: witness gen panic in modexp (#858) @kunxian-xia
- Reversion from Precompile calls (even from begin_tx) (#855) @roynalnaruto
- test self_destruct for oog &basefee expected invalid opcode (#854) @DreamWuGit
- upgrade mpt circuit; some other minor changes (#851) @lispc
- fix-exp-is-last: enforce the secure termination of Exp circuit (#837) @naure
- Precompile (non-static) calls with (non-zero) value (#848) @roynalnaruto
- Fix: n_padded_zeroes must be less than 192. (#849) @kunxian-xia
- Fix: precompile oog with large calldata_length (#847) @kunxian-xia
- Fix EXTCODECOPY with empty account (#846) @lispc
- Swap only if both G1, G2 are 0s from EVM (#845) @roynalnaruto
- testool: support sub circuit; fix modexp row usage (#841) @lispc
- upgrade "misc-precompiled-circuits" and handle modexp invalid len in bus-mapping (#830) @lispc
- Handle precompile call failure
call.is_success == false
due to "Invalid Inputs" and "Insufficient Gas" (#811) @roynalnaruto - improve testool for scroll mode (#831) @lispc
- [Feat] make supercircuit test applying l2trace (#767) @noel2004
- more strict check on Account Rw (#819) @lispc
- fix blockhash in test tool (#810) @DreamWuGit
- Remove CopyDataType::Precompile (#809) @naure
- fix test tool create collision tests (#793) @DreamWuGit
v0.7.0
What’s Changed
Changes in the bus-mapping
- (1) testool: use cache skip success cases (2) testool enable parallel compilation (3) fix many corner cases (#798) @lightsing
- refactor return data (#797) @lispc
Changes in eth-types
Changes in the zkevm-circuits
- (1) testool: use cache skip success cases (2) testool enable parallel compilation (3) fix many corner cases (#798) @lightsing
- Refactor: make witness gen of tx circuit more easier to maintain (#800) @kunxian-xia
- test tool: fix first byte (#802) @DreamWuGit
- [FIX] incorrect assignment of is_zero in gas cost gadget of modexp (#796) @noel2004
- refactor return data (#797) @lispc
v0.6.2
What's Changed
- Fix: constraint on num_all_txs_acc' is wrong by @kunxian-xia in #790
Full Changelog: v0.6.1...v0.6.2
v0.5.16
- Fix LastCalleeId for call empty.
Full Changelog: v0.5.15...v0.5.16