From 4497b6263f7cc8fa7df8b023301f2b21cf5fb54f Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Tue, 20 May 2025 08:49:50 -0700 Subject: [PATCH 01/13] Auto-fix: Update breadcrumbs, spelling dictionary and other automated fixes --- pages/notices/upgrade-16.mdx | 0 words.txt | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 pages/notices/upgrade-16.mdx diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx new file mode 100644 index 000000000..e69de29bb diff --git a/words.txt b/words.txt index f2d1ff61c..5dbe5bf14 100644 --- a/words.txt +++ b/words.txt @@ -85,7 +85,6 @@ counterfactually Crosschain crosschain Crossmint -custom-bridge Dapphub daserver DATACAP @@ -94,8 +93,8 @@ DATADIR datadir devdocs Devnet -Devnets devnet +Devnets devnets direnv DISABLETXPOOLGOSSIP From 13870b82b04986fdce4499f477b7ce313a9a9edb Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Tue, 20 May 2025 09:08:09 -0700 Subject: [PATCH 02/13] Notice page info --- pages/notices/_meta.json | 1 + pages/notices/upgrade-16.mdx | 76 ++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/pages/notices/_meta.json b/pages/notices/_meta.json index bda2e2e29..052b11bdf 100644 --- a/pages/notices/_meta.json +++ b/pages/notices/_meta.json @@ -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", diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index e69de29bb..f59ec5b21 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -0,0 +1,76 @@ +--- +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 + - node-operator +categories: + - 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. +* **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 node operators + +WHAT ARE THE NODE OPERATOR STEPS? + +## 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 From 85c8e750f4d7211d03d8e4fd581047fb7ddc3091 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Tue, 20 May 2025 09:08:24 -0700 Subject: [PATCH 03/13] Auto-fix: Update breadcrumbs, spelling dictionary and other automated fixes --- pages/notices/upgrade-16.mdx | 30 +++++++++++++++--------------- words.txt | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index f59ec5b21..b24d9cb7b 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -25,13 +25,13 @@ This page outlines important changes related to Upgrade 16 for chain operators a 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. -* **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. +* **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. +* **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 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 @@ -51,16 +51,16 @@ WHAT ARE THE NODE OPERATOR STEPS? 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) +* 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 +* 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 @@ -72,5 +72,5 @@ The `MAX_GAS_LIMIT` variable in the `SystemConfig` contract is being updated fro ### 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 +* 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 diff --git a/words.txt b/words.txt index 5dbe5bf14..ae1111f0c 100644 --- a/words.txt +++ b/words.txt @@ -125,6 +125,7 @@ executability exfiltrate EXITWHENSYNCED exitwhensynced +extensibly EXTRADATA extradata Farcaster From 10d9f5c8a5e56b9627c789e16cdfab0d6ad9e3ee Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 29 May 2025 13:48:34 -0700 Subject: [PATCH 04/13] Add more info --- pages/notices/upgrade-16.mdx | 49 +++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index b24d9cb7b..1ce3e3c93 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -25,7 +25,7 @@ This page outlines important changes related to Upgrade 16 for chain operators a 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. +* **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. @@ -41,6 +41,53 @@ Chain operators should be aware that Upgrade 16 involves a one-time invalidation 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. + + ### 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.0-rc.2](https://github.com/ethereum-optimism/optimism/tree/op-program/v1.6.0-rc.2). You can use this new absolute prestate (`NEED PRESTATE`) 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.0-rc.2` tag: + + ```shell + make reproducible-prestate + ``` + + You should expect the following output at the end of the command: + + ```shell + Cannon Absolute prestate hash: + NEED PRESTATE + Cannon64 Absolute prestate hash: + 0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6 + CannonInterop Absolute prestate hash: + 0x0399cfb018011977a027d1e7a85eb7ff101aec9bfc7d6500abac944c47a4581f + ``` + + ### 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 `0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6.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 node operators WHAT ARE THE NODE OPERATOR STEPS? From a5fe5082224ff9f94442a5cddb2dd8b5cb9468d4 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Thu, 29 May 2025 14:27:22 -0700 Subject: [PATCH 05/13] Add prestate info --- pages/notices/upgrade-16.mdx | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index 1ce3e3c93..83b539048 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -41,6 +41,9 @@ Chain operators should be aware that Upgrade 16 involves a one-time invalidation 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. + ### Verify the new absolute prestate @@ -48,11 +51,11 @@ If this proposal is accepted, multisig ceremonies will be coordinated to execute 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.0-rc.2](https://github.com/ethereum-optimism/optimism/tree/op-program/v1.6.0-rc.2). You can use this new absolute prestate (`NEED PRESTATE`) for the following chains: + The absolute prestate is generated with the [op-program/v1.6.0-rc.2](https://github.com/ethereum-optimism/optimism/tree/op-program/v1.6.0-rc.2). 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.0-rc.2` tag: + 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 @@ -61,17 +64,15 @@ If this proposal is accepted, multisig ceremonies will be coordinated to execute You should expect the following output at the end of the command: ```shell - Cannon Absolute prestate hash: - NEED PRESTATE - Cannon64 Absolute prestate hash: - 0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6 - CannonInterop Absolute prestate hash: - 0x0399cfb018011977a027d1e7a85eb7ff101aec9bfc7d6500abac944c47a4581f +Cannon64 Absolute prestate hash: +0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8 +CannonInterop Absolute prestate hash: +0x03fc3b4d091527d53f1ff369ea8ed65e5e17cc7fc98ebf75380238151cdc949c ``` ### 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 `0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6.bin.gz`. + 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. @@ -88,10 +89,6 @@ If this proposal is accepted, multisig ceremonies will be coordinated to execute 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 node operators - -WHAT ARE THE NODE OPERATOR STEPS? - ## Technical details ### Interop-ready smart contracts From 460eb38eed3ca34cfed48bc502f79ff0d9d8fbd6 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Wed, 4 Jun 2025 10:16:08 -0700 Subject: [PATCH 06/13] Final fixes --- pages/notices/upgrade-16.mdx | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index 83b539048..10be54377 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -51,7 +51,7 @@ Chains running permissionless fault proofs will need to deploy new dispute game 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.0-rc.2](https://github.com/ethereum-optimism/optimism/tree/op-program/v1.6.0-rc.2). You can use this new absolute prestate (`0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8`) for the following chains: + 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) @@ -61,14 +61,19 @@ Chains running permissionless fault proofs will need to deploy new dispute game make reproducible-prestate ``` - You should expect the following output at the end of the command: + This will output the calculated prestates, which will look something like: ```shell -Cannon64 Absolute prestate hash: -0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8 -CannonInterop Absolute prestate hash: -0x03fc3b4d091527d53f1ff369ea8ed65e5e17cc7fc98ebf75380238151cdc949c + Cannon Absolute prestate hash: + 0x035ac388b5cb22acf52a2063cfde108d09b1888655d21f02f595f9c3ea6cbdcd + Cannon64 Absolute prestate hash: + 0x03a7d967025dc434a9ca65154acdb88a7b658147b9b049f0b2f5ecfb9179b0fe ``` + * The "Cannon" hash is the 32-bit prestate. + * 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 From efe4665f26626596125335b0574790c386f149d2 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Wed, 4 Jun 2025 10:16:25 -0700 Subject: [PATCH 07/13] Auto-fix: Update breadcrumbs, spelling dictionary and other automated fixes --- pages/notices/upgrade-16.mdx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index 10be54377..d450baeea 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -42,6 +42,7 @@ Chain operators should be aware that Upgrade 16 involves a one-time invalidation 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. @@ -69,8 +70,9 @@ Chains running permissionless fault proofs will need to deploy new dispute game Cannon64 Absolute prestate hash: 0x03a7d967025dc434a9ca65154acdb88a7b658147b9b049f0b2f5ecfb9179b0fe ``` - * The "Cannon" hash is the 32-bit prestate. - * The "Cannon64" hash is the 64-bit prestate. + + * The "Cannon" hash is the 32-bit prestate. + * 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). @@ -83,11 +85,11 @@ Chains running permissionless fault proofs will need to deploy new dispute game ### Deploy new dispute game contracts - You will then take the absolute prestate and deploy new `FaultDisputeGame` and `PermissionedDisputeGame` contracts with that value. + 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`. + You will then need to update the `DisputeGameFactory` to point to the new `FaultDisputeGame` and `PermissionedDisputeGame` contracts by calling `DisputeGameFactory.setImplementation`. ### Execute the upgrade From 61eb6df5272dd059ce65922212305f08c0993045 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Wed, 4 Jun 2025 11:27:35 -0700 Subject: [PATCH 08/13] Add review comments --- pages/notices/_meta.json | 2 +- pages/notices/upgrade-16.mdx | 55 +++++++++++++++++++++++++++--------- 2 files changed, 42 insertions(+), 15 deletions(-) diff --git a/pages/notices/_meta.json b/pages/notices/_meta.json index 052b11bdf..6be765a4b 100644 --- a/pages/notices/_meta.json +++ b/pages/notices/_meta.json @@ -1,9 +1,9 @@ { + "upgrade-16": "Upgrade 16 - Preparing for Interop protocol upgrade", "pectra-fees": "Pectra user fees notice", "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", diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index d450baeea..3c4db5b38 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -6,7 +6,6 @@ content_type: notice topic: upgrade-16-changes personas: - chain-operator - - node-operator categories: - security - protocol @@ -19,27 +18,25 @@ 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. +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 from January 2025, including removal of `DeputyGuardianModule` and updates to `DeputyPauseModule`. +* **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 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. +Upgrade 16 is an 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. +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). ### For permissionless fault proof enabled chains @@ -52,9 +49,9 @@ Chains running permissionless fault proofs will need to deploy new dispute game 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](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: + 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) + * 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: @@ -65,10 +62,19 @@ Chains running permissionless fault proofs will need to deploy new dispute game This will output the calculated prestates, which will look something like: ```shell - Cannon Absolute prestate hash: - 0x035ac388b5cb22acf52a2063cfde108d09b1888655d21f02f595f9c3ea6cbdcd - Cannon64 Absolute prestate hash: - 0x03a7d967025dc434a9ca65154acdb88a7b658147b9b049f0b2f5ecfb9179b0fe +-------------------- Production Prestates -------------------- + + +Cannon64 Absolute prestate hash: +0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8 + +-------------------- Experimental Prestates -------------------- + +CannonInterop Absolute prestate hash: +0x03fc3b4d091527d53f1ff369ea8ed65e5e17cc7fc98ebf75380238151cdc949c + +Cannon64Next Absolute prestate hash: +0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8 ``` * The "Cannon" hash is the 32-bit prestate. @@ -79,7 +85,7 @@ Chains running permissionless fault proofs will need to deploy new dispute game ### 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`. + 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. @@ -96,6 +102,26 @@ Chains running permissionless fault proofs will need to deploy new dispute game 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 @@ -125,3 +151,4 @@ The `MAX_GAS_LIMIT` variable in the `SystemConfig` contract is being updated fro * 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 + From c77dc3dbe71d5db12936556da4fb946294d605f8 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Wed, 4 Jun 2025 11:30:49 -0700 Subject: [PATCH 09/13] Fix upgrade phrasing --- pages/notices/upgrade-16.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index 3c4db5b38..8ddd73c4d 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -32,7 +32,7 @@ Upgrade 16 contains these main changes: ## For chain operators -Upgrade 16 is an L1 smart contracts for the OP Stack. We do not expect any downtime or changes in performance. +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. From 353c08e210af7643f5d1b946a34a40d74c0ea3f1 Mon Sep 17 00:00:00 2001 From: soyboy <85043086+sbvegan@users.noreply.github.com> Date: Wed, 4 Jun 2025 11:32:44 -0700 Subject: [PATCH 10/13] Update pages/notices/upgrade-16.mdx --- pages/notices/upgrade-16.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index 8ddd73c4d..f795d0a27 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -77,7 +77,6 @@ Cannon64Next Absolute prestate hash: 0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8 ``` - * The "Cannon" hash is the 32-bit prestate. * The "Cannon64" hash is the 64-bit prestate. Verify that your target prestate was calculated as expected and matches the corresponding entry in From d8604632a0786ef493e7079b86f43961a4176117 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Wed, 4 Jun 2025 11:33:03 -0700 Subject: [PATCH 11/13] Add release board --- pages/notices/upgrade-16.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index 8ddd73c4d..db2ef1217 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -38,6 +38,8 @@ Chain operators should be aware that Upgrade 16 involves a one-time invalidation 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 release of these tasks can be tracked in our [upgrade 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. From 542fe8a2ee59561a0786e1adbc023af3349bb365 Mon Sep 17 00:00:00 2001 From: Bradley Camacho <42678939+bradleycamacho@users.noreply.github.com> Date: Wed, 4 Jun 2025 11:33:11 -0700 Subject: [PATCH 12/13] Add period --- pages/notices/upgrade-16.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index db2ef1217..7710acfa7 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -38,7 +38,7 @@ Chain operators should be aware that Upgrade 16 involves a one-time invalidation 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 release of these tasks can be tracked in our [upgrade release board](https://github.com/orgs/ethereum-optimism/projects/117/views/12) +The tentative release of these tasks can be tracked in our [upgrade release board](https://github.com/orgs/ethereum-optimism/projects/117/views/12). ### For permissionless fault proof enabled chains From c20409647c234893e77f2cb15187147cbd8d73b3 Mon Sep 17 00:00:00 2001 From: soyboy <85043086+sbvegan@users.noreply.github.com> Date: Wed, 4 Jun 2025 11:34:57 -0700 Subject: [PATCH 13/13] Update pages/notices/upgrade-16.mdx --- pages/notices/upgrade-16.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/notices/upgrade-16.mdx b/pages/notices/upgrade-16.mdx index 26b3d4cbb..3437c9000 100644 --- a/pages/notices/upgrade-16.mdx +++ b/pages/notices/upgrade-16.mdx @@ -38,7 +38,7 @@ Chain operators should be aware that Upgrade 16 involves a one-time invalidation 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 release of these tasks can be tracked in our [upgrade release board](https://github.com/orgs/ethereum-optimism/projects/117/views/12). +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