Notices (README)
Upgrade 16 - Preparing for Interop protocol upgrade

Upgrade 16: Protocol upgrade

This page outlines important changes related to Upgrade 16 for chain operators and users. The upgrade proposal includes modifications to the OP Stack that will set the Superchain up for continued success through the remainder of 2025.

What's included in Upgrade 16

Upgrade 16 contains these main changes:

  • Interop-Ready smart contracts: Interoperability is critical to realizing the Superchain as a unified network of OP Chains. This upgrade begins the rollout of foundational interoperability features by updating the OptimismPortal to handle future cross-chain messaging safely and extensibly. This upgrade does not turn on interop yet.
  • Stage 1 updates: Modifications to meet L2Beat's updated Stage 1 requirements (opens in a new tab) from January 2025, including removal of DeputyGuardianModule and updates to DeputyPauseModule.
  • Go 1.23 Support in Cannon: Updates to Cannon to support Go 1.23, allowing OP Stack to benefit from upstream go-ethereum changes.
  • Max gas limit increase: Update to MAX_GAS_LIMIT from 200m to 500m gas after improvements to OP Stack infrastructure and the Cannon proof system.
  • Additional safety improvements: Authentication for critical contract functions and simplification of DelayedWETH contract control.

For chain operators

Upgrade 16 is an L1 smart contracts upgrade for the OP Stack. We do not expect any downtime or changes in performance.

Chain operators must complete two tasks:

Chain operators should be aware that Upgrade 16 involves a one-time invalidation of all existing withdrawal proofs. Users who have proven withdrawals can either finalize withdrawals prior to the activation of Upgrade 16 or will be required to re-prove these withdrawals after the upgrade activates.

If this proposal is accepted, multisig ceremonies will be coordinated to execute upgrade transactions. The following transactions will be executed on the respective chains: OP, Soneium, Ink, Base, Unichain, Mode, Zora, Arena Z, Swell, World Chain, and Metal on both Mainnet and Sepolia. Depending on the current state of the chain the execution times will vary. If your Optimism governed chain is not in this list, please reach out to OP Labs Solutions Engineering to coordinate your upgrade. These upgrade tasks will be prepared in the superchain-ops repo (opens in a new tab).

The tentative execution dates of these upgrades tasks can be tracked in our release board (opens in a new tab).

For permissionless fault proof enabled chains

Chains running permissionless fault proofs will need to deploy new dispute game contracts with new absolute prestates.

Verify the new absolute prestate

As of upgrade 14, the 64 bit multi-threaded version of cannon is utilized.

The absolute prestate is generated with the op-program/v1.6.1-rc.1 (opens in a new tab). You can use this new absolute prestate 0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8 for the following chains:

  • Mainnet and Sepolia: OP, Soneium, Ink, Base, Unichain, Mode, Zora, Arena Z, Swell, World Chain, and Metal

You can verify this absolute prestate by running the following command (opens in a new tab) in the root of the monorepo on the op-program/v1.6.1-rc.1 tag:

make reproducible-prestate

This will output the calculated prestates, which will look something like:

-------------------- Production Prestates --------------------
 
 
Cannon64 Absolute prestate hash: 
0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8
 
-------------------- Experimental Prestates --------------------
 
CannonInterop Absolute prestate hash: 
0x03fc3b4d091527d53f1ff369ea8ed65e5e17cc7fc98ebf75380238151cdc949c
 
Cannon64Next Absolute prestate hash: 
0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8
  • The "Cannon64" hash is the 64-bit prestate.

Verify that your target prestate was calculated as expected and matches the corresponding entry in standard-prestates.toml (opens in a new tab).

Upload your new preimage file

During the previous step, you also generated the preimage of the absolute prestate, which is the op-program serialized into a binary file. You'll find that new file at optimism/op-program/bin/prestate-mt64.bin.gz. Rename that file to have the absolute prestate hash as the filename so it looks like PRESTATEHASH.bin.gz.

Upload that file to where you're storing your other absolute preimage files. This should be the location where you're pointing your --cannon-prestates-url at. The op-challenger will grab this file and use it when it needs to challenge games.

Deploy new dispute game contracts

You will then take the absolute prestate and deploy new FaultDisputeGame and PermissionedDisputeGame contracts with that value.

Update the DisputeGameFactory

You will then need to update the DisputeGameFactory to point to the new FaultDisputeGame and PermissionedDisputeGame contracts by calling DisputeGameFactory.setImplementation.

Execute the upgrade

Once your op-challenger is ready with the new preimage, you can execute the "Set Dispute Game Implementation" transaction. Please simulate and validate that the expected output prior to executing the transaction.

For bridges and users

⚠️

All withdrawals that are not finalized before the Fault Proofs upgrade executes will need to be reproven after the upgrade is complete. You may want to consider waiting until after the upgrade is complete to begin a withdrawal during this 7-day window.

Users should be aware of the following impacts:

Withdrawal flow changes

  1. There will be a one-time invalidation of all pending withdrawal proofs created on L1.

  2. Complete any pending withdrawals before the upgrade is executed

  3. Avoid creating new withdrawal proofs that would not become executable in time

  4. If a withdrawal was invalidated, submit a second withdrawal proof transaction on L1

This invalidation does not place any ETH or ERC-20 tokens at risk.

Technical details

Interop-ready smart contracts

Upgrade 16 updates the core bridge contracts of the OP Stack to support native interoperability. Key modifications include:

  • The OptimismPortal now relies on the AnchorStateRegistry as the source of truth for the validity of dispute games
  • The OptimismPortal now stores ETH in a dedicated ETHLockbox contract
  • The OptimismPortal includes a version of the proveWithdrawalTransaction function that supports the updated SuperFaultDisputeGame implementation (disabled by default)

Stage 1 updates

  • The DeputyGuardianModule has been removed
  • The DeputyPauseModule has been updated to be installed into the Security Council's guardian safe
  • The pause action now expires automatically after 3 months
  • The pause action can now be applied on a per-chain basis as well as a Superchain-wide basis

Go 1.23 support in Cannon

Cannon has been updated to support Go 1.23, allowing the OP Stack to benefit from upstream changes in go-ethereum.

MAX_GAS_LIMIT increases

The MAX_GAS_LIMIT variable in the SystemConfig contract is being updated from 200m gas to 500m gas.

Security reviews

  • Changes to the bridge contracts were audited via a Cantina contest with no Medium+ severity issues found
  • Upgrade 16 as a whole was audited by Spearbit with no Medium+ severity issues found