Skip to content

Sb/u13 notice page #1519

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 6 commits into from
Mar 21, 2025
Merged
Show file tree
Hide file tree
Changes from all 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
@@ -1,4 +1,5 @@
{
"upgrade-13": "Upgrade 13: OPCM and incident response improvements",
"blob-fee-bug": "Superchain testnets' blob fee bug",
"pectra-changes": "Preparing for Pectra breaking changes",
"holocene-changes": "Preparing for Holocene breaking changes",
Expand Down
126 changes: 126 additions & 0 deletions pages/notices/upgrade-13.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
title: Upgrade 13 OPCM and incident response improvements
description: Learn how to prepare for Isthmus upgrade breaking changes.
lang: en-US
content_type: notice
topic: upgrade-13
personas:
- chain-operator
- node-operator
categories:
- security
- protocol
- infrastructure
- l1-contracts
is_imported_content: 'false'
---

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

# Upgrade 13: OPCM and incident response improvements

This page outlines changes related to the Upgrade 13 network upgrade for chain operators, node operators, and users of OP Stack chains. The upgrade proposal is available [here](https://gov.optimism.io/t/upgrade-proposal-13-opcm-and-incident-response-improvements/9739) and the governance vote is available [here](https://vote.optimism.io/proposals/84511922734478887667300419900648701566511387783615524992018614345859900443455).

If you experience difficulty at any stage of this process, please reach out to developer support.

## What's included in Upgrade 13

Upgrade 13 contains three main components:

* **OP Contracts Manager**: A new system for upgrading L1 contracts across the Superchain, making contract upgrades more scalable, less prone to error, and easier to test.
* **Fault Proofs incident response improvements**: Technical improvements to several key contracts to enable more flexible and less disruptive ways to respond to potential incidents in the OP Stack fault proof system.
* **`DeputyPauseModule` (Superchain pause improvements)**: A new Safe Module to be installed into the Optimism Foundation Safe to simplify the process of quickly responding to security incidents via the Superchain-wide pause mechanism.

For more information on the Upgrade 13 implementation details, please review the specifications linked in the Technical Details section below.

## Technical details

### OP Contracts Manager

The OP Contracts Manager ([OPCM](/stack/opcm)) is a new system for upgrading L1 contracts across the Superchain. Each release will have its own OPCM that can deploy new proxies and upgrade existing OP Chains.

Key changes:

* OPCM is not considered part of the protocol and has no special role
* In-protocol contract modifications include:
* Stack too deep fixes to enable code coverage measurements
* Updated contracts to call interfaces for external interactions rather than implementations
* Removal of CustomGasToken logic
* Changes to deposit transaction aliasing to ensure compatibility with the L1 Pectra upgrade's introduction of EIP-7702

### Fault Proofs incident response improvements

Several components have been updated to improve incident response capabilities:

**DelayedWETH**

* `DelayedWETH.hold(...)` now executes an approval and transfer from the target account to the owner account
* Added a version of `DelayedWETH.hold(...)` that does not require the owner to specify the target's balance

**OptimismPortal**

* `OptimsimPortal.setRespectedGameType(...)` no longer sets the respected game type and retirement timestamp simultaneously
* A special reserved input value can be used to set the retirement timestamp
* `OptimismPortal.checkWithdrawal(...)` now asserts that a FaultDisputeGame was the respected game type at the time of creation

**AnchorStateRegistry**

* `AnchorStateRegistry.tryUpdateAnchorState(...)` is removed
* `AnchorStateRegistry.setAnchorState(...)` is repurposed as the primary way for FaultDisputeGame contracts to update the anchor state
* Internal anchor state is now unified across all game types
* Updates enable all OP Stack chains to share a common AnchorStateRegistry implementation

**FaultDisputeGame**

* Added support for "bond refunding" to automatically distribute bonds back to their original depositors if the game is invalidated

<Callout type="warning">
If adopted and deployed, this proposal will cause a one-time invalidation of all pending withdrawal proofs created on L1. Users should complete any pending withdrawals before the upgrade is executed and avoid creating new withdrawal proofs that would not become executable in time.
</Callout>

### DeputyPauseModule (Superchain pause improvements)

The `DeputyPauseModule` is a new Safe Module to be installed into the Optimism Foundation Safe that allows:

* The Optimism Foundation to assign a "Pause Deputy" private key
* The Pause Deputy to create signatures that authorize the use of the Superchain-wide pause
* The Pause Deputy private key to cause the Optimism Foundation Safe to execute a call to the `DeputyGuardianModule` account ONLY for the purpose of executing the pause function

The Optimism Foundation Safe is expected to rotate the Pause Deputy private key approximately every 3 months.

## For chain operators

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`, and `Unichain Mainnet`. If your Optimism governed chain is not in this list, please reach out to OP Labs Solutions Engineering to coordinate your upgrade. If your chain is not Optimism governed, we'll be working on providing documentation to upgrade your chain.

As this is an L1 contracts-only upgrade, no action is required to upgrade your node binaries. However, there is a required upgrade to [`op-dispute-mon/v1.4.0`](https://github.com/ethereum-optimism/optimism/releases/tag/op-dispute-mon%2Fv1.4.0) to remain compatible with the new contract changes.

## For users

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.

## Audit reports

The code for Upgrade 13 has undergone multiple audits:

* **Offbeat Labs**: Completed an audit and found 1 Low Severity issue which has been addressed.
* **Spearbit**: Completed an audit and found 1 Medium Severity and 2 Low Severity issues. The Medium Severity issue was a design decision that conflicted with updated L2Beat Stage 1 requirements published in January 2025. The design has been modified to satisfy these requirements.
* **Radiant Labs**: Completed an audit of the DeputyPauseModule with only Low/informational findings, all of which have been addressed.
* **MiloTruck (independent)**: Completed an audit of the DeputyPauseModule with only Low/informational findings, all of which have been addressed.

## Emergency cancellation

If a critical security issue is discovered before upgrading, OP Labs will collaborate with the community to extensively communicate that the upgrade will no longer occur. The Optimism Foundation and Security Council will work to coordinate an emergency cancellation.

For more detailed information, please refer to the full upgrade proposal or reach out to developer support.
2 changes: 1 addition & 1 deletion pages/stack/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"components": "OP Stack components",
"public-devnets": "Public devnets",
"smart-contracts": "Smart contracts",
"opcm": "OP Contracts Manager",
"rollup": "Rollup",
"fault-proofs": "Fault proofs",
"transactions": "Transactions",
Expand All @@ -23,7 +24,6 @@
"title": "Experimental",
"type": "separator"
},
"opcm": "OP Contracts Manager",
"interop": "Superchain interoperability",
"beta-features": "Beta features",
"research": "Research"
Expand Down
9 changes: 3 additions & 6 deletions pages/stack/opcm.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,19 @@ import { Callout, Tabs, Steps } from 'nextra/components'

# OP Contracts Manager

The OP Contracts Manager is a contract that deploys the L1 contracts for an OP Stack chain in a single transaction. It provides a minimal set of user-configurable parameters to ensure that the resulting chain meets the standard configuration requirements.
The OP Contracts Manager is a contract that deploys the L1 contracts for an OP Stack chain in a single transaction. It provides a minimal set of user-configurable parameters to ensure that the resulting chain meets the standard configuration requirements. Additionally, as of [Upgrade 13](https://gov.optimism.io/t/upgrade-proposal-13-opcm-and-incident-response-improvements/9739), instances of OPCM can upgrade existing OP Stack chains.

The version deployed is always a governance-approved contract release. The set of governance approved contract releases can be found on the Optimism Monorepo releases page, and is the set of releases named `op-contracts/vX.Y.Z`. It deploys the [Fault Proof System](/stack/fault-proofs/explainer), using the [PermissionedDisputeGame](/stack/smart-contracts#permissioneddisputegame).

* Ethereum address: [0x18cec91779995ad14c880e4095456b9147160790](https://etherscan.io/address/0x18cec91779995ad14c880e4095456b9147160790)
* Sepolia address: [0xf564eea7960ea244bfebcbbb17858748606147bf](https://sepolia.etherscan.io/address/0xf564eea7960ea244bfebcbbb17858748606147bf)

## Purpose

OPCM simplifies the L1 contract deployments for new OP Stack chains. It addresses three aspects of deploying the OP Stack's L1 contracts:
OPCM simplifies the L1 contract deployments for new OP Stack chains. For each smart contract release there will be a new OPCM instance. It addresses three aspects of deploying the OP Stack's L1 contracts:

1. **Deploy Superchain Contracts.** Superchain contracts are shared between many OP chains, so this occurs only occasionally in production.
2. **Deploy Shared Implementation Contracts.** This occurs once per contracts release in production.
3. **Deploy OP Chain Contracts.** This occurs for every OP chain deployment in production.

In a future iteration, it also is meant to handle upgrading the smart contracts.
Additionally, after the Upgrade 13 network upgrade, OPCM instances will be used to upgrade existing OP Stack chains.

## Learn more

Expand Down