Skip to content
This repository was archived by the owner on Apr 6, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pages/notices/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"pectra-changes": "Preparing for Pectra breaking changes",
"superchain-withdrawal-pause-test": "Superchain withdrawal pause test",
"holocene-changes": "Preparing for Holocene breaking changes",
"upgrade-16": "Upgrade 16 - Preparing for Interop protocol upgrade",
"upgrade-15": "Upgrade 15: Isthmus Hard Fork",
"upgrade-14": "Upgrade 14: MT-Cannon and Isthmus L1 Contracts",
"upgrade-13": "Upgrade 13: OPCM and incident response improvements",
Expand Down
127 changes: 127 additions & 0 deletions pages/notices/upgrade-16.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
---
title: Upgrade 16 - Protocol upgrade
description: Learn how to prepare for the Upgrade 16 protocol changes.
lang: en-US
content_type: notice
topic: upgrade-16-changes
personas:
- chain-operator
Comment thread
bradleycamacho marked this conversation as resolved.
- node-operator
categories:
Comment thread
sbvegan marked this conversation as resolved.
- security
- protocol
- infrastructure
- interoperability
is_imported_content: 'false'
---

import { Steps, Callout } from 'nextra/components'

# Upgrade 16: Protocol upgrade

This page outlines important changes related to Upgrade 16 for chain operators and node operators. 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 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 more information on the Upgrade 16 implementation details, please review the [upgrade proposal](https://gov.optimism.io)\[Need actual link to the proposal].

## For chain operators

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

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 Mainnet`, `Soneium Mainnet`, `Ink Mainnet`, `Base Mainnet`, `Unichain Mainnet`, `Mode Mainnet`, `Zora Mainnet`, `Arena Z Mainnet`, `Swell Mainnet`, and `Metal Mainnet`. 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.

### For permissionless fault proof enabled chains

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

<Steps>
### Verify the new absolute prestate

<Callout type="info">
As of upgrade 14, the 64 bit multi-threaded version of cannon is utilized.
</Callout>

The absolute prestate is generated with the [op-program/v1.6.1-rc.1](https://github.com/ethereum-optimism/optimism/tree/op-program/v1.6.1-rc.1). You can use this new absolute prestate (`0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8`) for the following chains:

* Sepolia: Base, Creator Chain, OP, Metal, Mode, Zora, Ethernity, Unichain, Ink, and Minato (Soneium)

You can verify this absolute prestate by running the following [command](https://github.com/ethereum-optimism/optimism/blob/d6fb90dd489e39efa206b55200766ccc075c1d9b/Makefile#L130-L132) in the root of the monorepo on the `op-program/v1.6.1-rc.1` tag:

```shell
make reproducible-prestate
```

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

```shell
Cannon Absolute prestate hash:
0x035ac388b5cb22acf52a2063cfde108d09b1888655d21f02f595f9c3ea6cbdcd
Cannon64 Absolute prestate hash:
0x03a7d967025dc434a9ca65154acdb88a7b658147b9b049f0b2f5ecfb9179b0fe
```

* The "Cannon" hash is the 32-bit prestate.
Comment thread
sbvegan marked this conversation as resolved.
Outdated
* 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](https://github.com/ethereum-optimism/superchain-registry/blob/main/validation/standard/standard-prestates.toml).

### Upload your new preimage file

During the previous step, you also generated the preimage of the absolute prestate, which is basically 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.
</Steps>

Comment thread
bradleycamacho marked this conversation as resolved.
## 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
4 changes: 2 additions & 2 deletions words.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ counterfactually
Crosschain
crosschain
Crossmint
custom-bridge
Dapphub
daserver
DATACAP
Expand All @@ -94,8 +93,8 @@ DATADIR
datadir
devdocs
Devnet
Devnets
devnet
Devnets
devnets
direnv
DISABLETXPOOLGOSSIP
Expand Down Expand Up @@ -126,6 +125,7 @@ executability
exfiltrate
EXITWHENSYNCED
exitwhensynced
extensibly
EXTRADATA
extradata
Farcaster
Expand Down