Releases: scroll-tech/scroll-contracts
Feynman (v3.0.0)
Overview
The Feynman upgrade introduces the following contract changes:
- Introduce a new
PauseController
contract. This contract empowers the Scroll Security Council to prevent frequent contract pauses, and allows Scroll to maintain our stage-1 designation on L2BEAT. #117 #127 - Ensure that cross-domain messages always buy enough gas to cover EIP-7623 floor gas. #118
- Introduce a new on-chain validity proof verifier contract with an updated public input format. #123
- Update the gas oracle predeploy to support managing Feynman fee formula parameters. #124
- Remove deprecated contract logic (skipping, dropping, pre-Euclid codecs, etc.). #110
- Various other contract and CI improvements.
Feynman also includes other features that do not require contract changes. For more details, see the post on the Scroll governance forum, as well as the node release notes.
Compatibility
Contracts and scripts that interact with the Scroll bridge should make sure to provide a high enough gas limit to pass the checks in #118.
What's Changed
- ci: bump GitHub Action versions by @Thegaram in #107
- ci: add Slither static-analysis by @mssassii in #103
- new
ScrollChainCommitmentVerifier
by @zimpha in #95 - build(deps): bump base-x from 3.0.9 to 3.0.11 by @dependabot[bot] in #108
- add L2SystemContract by @zimpha in #114
- feat: add e2e devnet deployment scripts by @yiweichi in #97
- feat: add pause controller by @zimpha in #117
- feat: consider EIP-7623 floor gas in message queue by @Thegaram in #118
- feat: add L1SystemConfig events by @Thegaram in #119
- feat: require top-level call to commitAndFinalizeBatch by @Thegaram in #120
- feat: add new zkevm verifier for Feynman upgrade by @zimpha in #123
- feat(feynman): update L1GasPriceOracle by @Thegaram in #124
- remove unused contracts and functions by @zimpha in #110
- fix: allow only top level call in commitAndFinalizeBatch by @zimpha in #126
- feat: support resetPauseCooldownPeriod by @zimpha in #127
New Contributors
Full Changelog: v2.0.1...v3.0.0
v2.0.1
Euclid (v2.0.0)
Overview
The Euclid upgrade introduces the following contract changes:
- Introduce a new
SystemConfig
contract for managing important system parameters. - Use the new
ZkEvmVerifierPostEuclid
on-chain verifier for proofs generated by the new OpenVM prover. - Introduce batch codec versions
v5
,v6
, andv7
.v5
is a singleton batch for the zktrie-MPT transition verified by the Security Council.v6
is identical in format tov4
andv5
but verification happens using the new OpenVM prover.v7
is a major redesign in the batch encoding. - Use the new
commitBatches
function to commit batches. Now we allow committing multiple batches per transaction. Most of the batch metadata previously stored in calldata is now moved into the blob. The point-evaluation precompile check is moved into the circuits. - Migrate to
L1MessageQueueV2
which uses a rolling hash to amortize commitment costs. - Update and re-enable
EnforcedTxGateway
. - Introduce permissionless mode, in which anyone can step up and commit batches, along with their validity proofs. Permissionless mode is entered if the sequencer stops committing/finalizing batches, or if it stops relaying messages from the L1 message queue.
Compatibility
The above changes introduce numerous subtle and not-so-subtle compatibility concerns. The impact depends on the specific application. For a detailed list, see the corresponding section in the governance proposal.
What's Changed
- feat: gateway for l2 native erc20 by @zimpha in #40
- ci: add github action triggered manually to generate docker image by @sbaizet-ledger in #45
- feat: euclid phase-1 contract changes by @Thegaram in #79
- ci: fix TOB-SCREUC-6, disable cache-binary option by @Thegaram in #83
- ci: fix TOB-SCREUC-7, pin 3rd-party actions by @Thegaram in #84
- ci: fix TOB-SCREUC-8, do not persist git credentials by @Thegaram in #85
- build(deps): bump actions/setup-node from 2 to 4 by @dependabot in #86
- build(deps): bump docker/setup-buildx-action from 2.10.0 to 3.10.0 by @dependabot in #87
- build(deps): bump codecov/codecov-action from 3.1.4 to 5.4.0 by @dependabot in #88
- build(deps): bump docker/setup-qemu-action from 2.2.0 to 3.6.0 by @dependabot in #89
- build(deps): bump actions/checkout from 3 to 4 by @dependabot in #90
- build(deps): bump docker/login-action from 3.3.0 to 3.4.0 by @dependabot in #91
- ci: add zizmor by @Thegaram in #92
- feat: euclid phase-2 contract changes by @zimpha in #74
Full Changelog: v1.0.0...v2.0.0
Darwin (v1.0.0)
Overview
The Darwin upgrade introduces a new concept bundle: a list of batches finalized with a single aggregated proof.
Main changes:
- Introduce
BatchHeaderV3Codec
with 2 new fields added (lastBlockTimestamp
,blobDataProof
) and one field removed (skippedL1MessageBitmap
). - Process messages in
L1MessageQueue
during commit step (previously done during the finalize step). - Introduce a new on-chain verifier public input format in
IZkEvmVerifierV2
, and adopt it inMultipleVersionRollupVerifier
. - In
ScrollChain
, introduce two new methodscommitBatchWithBlobProof
andfinalizeBundleWithProof
to handle V3 batches and bundles.
The circuit and contract changes have been audited by Trail of Bits.
Compatibility
- Dapps and indexers that decode on-chain batch header data should use the new codec and function signature.
- Dapps and indexers that track finalization status should ensure that they correctly interpret the emitted
FinalizeBatch
event as "all batches have been finalized up to and including this batch index".
What's Changed
- feat: cleanup files by @zimpha in #1
- feat: add github workflow by @zimpha in #2
- feat: import change from scroll-tech/scroll#1372 by @zimpha in #3
- feat: v3 codec by @zimpha in #4
Full Changelog: https://github.com/scroll-tech/scroll-contracts/commits/v1.0.0