-
Notifications
You must be signed in to change notification settings - Fork 265
Draft U16 notice page #1618
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Draft U16 notice page #1618
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
4497b62
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
bradleycamacho 13870b8
Notice page info
bradleycamacho 85c8e75
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
bradleycamacho 10d9f5c
Add more info
bradleycamacho a5fe508
Add prestate info
bradleycamacho 460eb38
Final fixes
bradleycamacho efe4665
Auto-fix: Update breadcrumbs, spelling dictionary and other automated…
bradleycamacho 61eb6df
Add review comments
bradleycamacho c77dc3d
Fix upgrade phrasing
bradleycamacho 353c08e
Update pages/notices/upgrade-16.mdx
sbvegan d860463
Add release board
bradleycamacho 542fe8a
Add period
bradleycamacho 13af2cf
Merge branch 'u16-notice-page' of https://github.com/ethereum-optimis…
bradleycamacho c204096
Update pages/notices/upgrade-16.mdx
sbvegan File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,155 @@ | ||
--- | ||
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 | ||
categories: | ||
sbvegan marked this conversation as resolved.
Show resolved
Hide 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 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](https://forum.l2beat.com/t/stages-update-a-high-level-guiding-principle-for-stage-1/338) 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 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](https://github.com/ethereum-optimism/superchain-ops/tree/main/src/improvements/tasks). | ||
|
||
The tentative execution dates of these upgrades tasks can be tracked in our [release board](https://github.com/orgs/ethereum-optimism/projects/117/views/12). | ||
|
||
### 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: | ||
|
||
* 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](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 | ||
-------------------- 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](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 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> | ||
|
||
## For bridges and users | ||
|
||
<Callout type="warning"> | ||
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. | ||
</Callout> | ||
|
||
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 | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.