github ethereum-optimism/optimism op-contracts/v10.0.0-rc.1
op-contracts v10.0.0-rc.1

pre-release2 hours ago

Overview

Important

This is a release candidate of the op-contracts for Upgrade 22. It contains per-chain withdrawal delays, the ZK dispute game, the contracts for Lagoon interop and several safety fixes.

Breaking changes

  • StandardValidator inputs change (#23870, #23252). validate with ValidationInputDev takes a new zkPrestate field, so its selector changes. Pass bytes32(0) for a chain without the ZK dispute game. The ValidationInput overload passes zero, so it reports ZKDG-70 on a chain that has the ZK dispute game. The StandardValidator constructor no longer takes withdrawalDelaySeconds.

Other changes

Withdrawals and dispute games

  • The proof maturity delay on OptimismPortal2, the dispute game finality delay on AnchorStateRegistry and the withdrawal delay on DelayedWETH are now per-chain settings. The L1 ProxyAdmin owner can change each delay with a new setter, within these bounds: proof maturity 1 to 7 days, finality 12 hours to 3.5 days, DelayedWETH 12 hours to 7 days. The StandardValidator checks each delay against its bounds (PORTAL-100, ANCHORP-80, DWETH-40) (#23215, #23252)
  • OptimismPortal2 and AnchorStateRegistry fail closed when a delay is zero: a withdrawal cannot finalize and a game does not become final. OPCM rejects a zero delay. A correctly initialized chain sees no change (#23902)
  • OptimismPortal2 rejects a withdrawal that targets the L1StandardBridge of the chain, at prove and at finalize. Standard bridge withdrawals target L1CrossDomainMessenger and are not affected. Prove and finalize use slightly more gas (#23520)
  • ETHLockbox.migrateLiquidity reverts while the lockbox is paused (#23852)
  • A closed SuperFaultDisputeGame can now unlock credit while the system is paused, the same as FaultDisputeGame. DelayedWETH still blocks the withdrawal itself while paused (#23267)

ZK dispute game

  • Every deployment now includes ZKDisputeGame and SP1PlonkAdapter, and OPCM no longer needs a dev feature flag for the ZK dispute game. A chain enables the ZK dispute game with an explicit game config in upgrade() or migrate() (#23868)
  • The StandardValidator accepts the ZK dispute game as the permissionless game of a super-root chain, alone or with SUPER_CANNON_KONA. It reports DF-60 for a super-root chain with only SUPER_PERMISSIONED, ZKDG-NOSHAPE for the ZK dispute game on an output-root chain, and ZKDG-70 when the ZK prestate differs from the expected value (#23869, #23870)

Interop

  • L2ToL2CrossDomainMessenger can mark an interop message as expired when it stays undelivered for 8 days. The new UndeliveredMessageExporter predeploy (0x4200000000000000000000000000000000000030) and the new L1CrossDomainMessenger.relayUndeliveredMessage function process the expired message (#23286, #23649)
  • SuperchainETHBridge.refundETH returns the ETH of an expired send to the sender (#23284)
  • The L1 pause now applies to ETHLiquidity. Anyone can call L1CrossDomainMessenger.syncETHLiquidityPause() to copy the L1 pause state to L2. While paused, ETHLiquidity blocks burn and mint (#23348, #23649)
  • The new L1CrossDomainMessenger functions above revert unless the chain has interop enabled.

L2 contracts

  • L2ERC721Bridge accepts all past OptimismMintableERC721 interface IDs, and new tokens report each ID. Deposits into older L2 NFT tokens failed before. Users can now replay them. This change ships in the Lagoon L2 upgrade bundle (#23540)

Contract versions

Contract v9.0.0 v10.0.0-rc.1
AnchorStateRegistry 4.0.0 5.1.0
ChainConfig — 1.0.1
DelayedWETH 2.0.0 3.0.0
ETHLiquidity 1.1.1 2.0.0
ETHLockbox 2.0.0 2.1.0
L1CrossDomainMessenger 2.13.0 3.3.0
L1StandardBridge 2.8.2 2.9.0
L2ContractsManager 1.14.0 1.17.0
L2ERC721Bridge 1.10.1 1.11.0
L2ToL2CrossDomainMessenger 1.3.2 2.1.0
OPContractsManagerStandardValidator 4.1.1 6.0.0
OPContractsManagerV2 9.0.3 10.0.0
OptimismMintableERC721 1.3.2 1.4.0
OptimismMintableERC721Factory 1.5.1 1.6.0
OptimismPortal2 6.1.0 7.5.0
SuperFaultDisputeGame 0.8.0 0.9.0
SuperchainETHBridge 1.0.1 2.0.0
SystemConfig 4.3.0 4.4.0
UndeliveredMessageExporter — 1.0.0

Full Changelog: op-contracts/v9.0.0...op-contracts/v10.0.0-rc.1

Don't miss a new optimism release

NewReleases is sending notifications on new releases.