Overview
This is a release candidate of the OP Stack smart contracts for Upgrade 20 (U20). Note that U20 does not include a hard fork so L2 predeploy changes will not be deployed.
What's Changed
OP Contracts Manager and upgrade path
- OPCM v8.0.0 (#22096): the
PermittedProxyDeploymentallowance for DelayedWETH is removed from upgrade instructions, thestartingAnchorRootoverride window moves to pre-9.0.0 releases, and upgrade-sequence enforcement is now active — upgrades revert unless the chain's last upgrade was applied by an OPCM 7.x. - Upgrades now resolve each proxy's own ProxyAdmin and SystemConfig instead of assuming the calling chain's, fixing upgrades for non-first member chains of an interop set (#22034).
- Upgrades revert if the new implementation is an OZ v5-style Initializable with its storage slot in use (#21070).
- Removed the ProtocolVersions contract and its OPCM integration (#20527).
Dispute games
- The proofs system now uses super roots instead of output roots. Permissioned chains now use the
SUPER_PERMISSIONEDgame type as the respected game. Permissionless chains useSUPER_CANNON_KONAwith previous game implementations being removed. - Simplified the super permissioned dispute game (#20641), renamed its game type (#21513), and removed the super cannon game type (#20363).
L1 contracts
- SystemConfig v4.0.0: removed the unused
batchInbox()getter and the legacysetGasConfigfunction (#21641). CrossL2Inbox.validateMessagenow reverts when executed by a deposit transaction, as defense in depth (#21693).OptimismPortal2.migrateToSharedDisputeGamenow validates its inputs (#20928).- FeeVault gains
setWithdrawalRouteto update the recipient and withdrawal network atomically (#20982). - SuperchainConfig is now marked audited (#21265).
L2 predeploys
Note: These changes will not be deployed to existing chains until the next hard fork, not as part of U20.
- L2 Fee values now have a setWithdrawalRoute(address,Types.WithdrawalNetwork) method - an atomic combination of the existing recipient and network setters.
Contract version changes
| Contract | v7.0.0 | v8.0.0-rc.2 |
|---|---|---|
| OPContractsManagerV2 | 7.1.17 | 8.0.0 |
| SystemConfig | 3.14.2 | 4.0.0 |
| OptimismPortal2 | 5.6.1 | 5.8.0 |
| OPContractsManagerStandardValidator | 2.9.1 | 2.12.0 |
| SuperchainConfig | 2.4.2 | 2.4.3 |
| SuperFaultDisputeGame | 0.7.2 | 0.8.0 |
| SuperPermissionedDisputeGame | 0.7.0 | 1.0.0 |
| ZKDisputeGame | 1.1.0 | 2.0.1 |
| CrossL2Inbox | 1.0.2 | 1.1.0 |
| L2ContractsManager | 1.8.0 | 1.14.0 |
| L2DevFeatureFlags | 1.0.0 | 1.3.0 |
| L2ProxyAdmin | 1.0.0 | 1.1.0 |
| L2ToL2CrossDomainMessenger | 1.3.1 | 1.3.2 |
| ETHLiquidity | 1.1.0 | 1.1.1 |
| BaseFeeVault / L1FeeVault / SequencerFeeVault | 1.6.1 | 1.7.0 |
| OperatorFeeVault | 1.1.1 | 1.2.0 |
| ProtocolVersions | 1.1.2 | removed |
Full Changelog: op-contracts/v7.0.0...op-contracts/v8.0.0-rc.2