Skip to content

Releases: scroll-tech/zkevm-circuits

v0.12.0

28 Jul 18:29
Compare
Choose a tag to compare

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

Tests, Fixes and Documentation

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

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 updated BatchCircuit (#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 updated BatchCircuit (#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

v0.12.0-rc.2

12 Jul 09:01
Compare
Choose a tag to compare
v0.12.0-rc.2 Pre-release
Pre-release

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

10 Jul 13:04
Compare
Choose a tag to compare
v0.12.0-rc.1 Pre-release
Pre-release

⚠️ 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 of blocks
    • batch is a list of chunks
    • bundle is a list of batches
  • The ZkEvmVerifier contract now verifies a bundle proof, i.e. the proof of several batches bundled recursively, instead of a batch proof
  • The AggregationCircuit has been renamed to BatchCircuit
    • Public input of the AggregationCircuit now has context of the previous batch (in the form of batchHash)
    • batchHash is the Keccak-256 digest of BatchHeaderV3
  • The RecursionCircuit recursively verifies state transition between "previous" and "current" BatchCircuit SNARKs
    • round represents the number of batches to recurse over

What’s Changed

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

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

v0.11.0: DA Compression, new opcodes

11 Jun 12:42
6c94011
Compare
Choose a tag to compare

Highlights:

  1. 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.
  2. New opcodes added: TLOAD, TSTORE, MCOPY, and BASEFEE.
  3. Support for new transaction types: EIP-2930 and EIP-1559.
  4. Implementation of a new L1 data fee mechanism, providing more accurate and fair L1 data fees.
    Internal code refactoring and cleanup.

What’s Changed

Changes in the bus-mapping

Changes in circuit-benchmarks

Changes in eth-types

Changes in external-tracer

Changes in gadgets

Changes in geth-utils

Changes in integration-tests

Changes in Keccak

Changes in mock

Changes in prover

Changes in the zkevm-circuits

v0.10.3: support blob DA

12 Apr 07:57
5776400
Compare
Choose a tag to compare

Highlights:

  1. support blob DA (EIP-4844)
  2. support SHA256 precompile
  3. Removed the dependency on StructLog.stack, reducing the trace size and the overhead of trace deserialization.

What's Changed

Read more

v0.9.9

18 Mar 04:47
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.9.2...v0.9.9

v0.9.2

19 Sep 01:48
2723b82
Compare
Choose a tag to compare

What’s Changed

Changes in the bus-mapping

Changes in circuit-benchmarks

Changes in eth-types

Changes in external-tracer

Changes in geth-utils

Changes in integration-tests

Changes in mock

Changes in prover

Changes in the zkevm-circuits

v0.7.0

21 Aug 15:24
1093f5e
Compare
Choose a tag to compare

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

18 Aug 04:37
750169c
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.6.1...v0.6.2

v0.5.16

15 Aug 01:50
Compare
Choose a tag to compare
  • Fix LastCalleeId for call empty.

Full Changelog: v0.5.15...v0.5.16