Skip to content

superchain pause withdrawal test notice and docs updates #1559

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 8 commits into from
Apr 7, 2025
Merged
Show file tree
Hide file tree
Changes from 5 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 @@
{
"superchain-withdrawal-pause-test": "Superchain withdrawal pause test",
"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
24 changes: 19 additions & 5 deletions pages/notices/superchain-withdrawal-pause-test.mdx
Original file line number Diff line number Diff line change
@@ -1,22 +1,36 @@
---
title: Superchain withdrawal pause test
description: Information about testing the Superchain withdrawal pause functionality.
description: Notice about the Superchain withdrawal pause test.
lang: en-US
content_type: notice
topic: pause-withdrawal-test
topic: superchain-pause-test
personas:
- chain-operator
- node-operator
- user
categories:
- security
- automated-pause
- protocol
- infrastructure
- l1-contracts
is_imported_content: 'false'
---

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

# Superchain withdrawal pause test
# Superchain withdrawal pause test

<Callout type="info">
* Sepolia Superchain withdrawal pause test is scheduled for **April 14th 2025**
* Mainnet Superchain withdrawal pause test is scheduled for **April 30th 2025**
</Callout>

The Optimism Collective will be testing improved incident response features on the Sepolia Superchain.

## What's happening
1. During this excercise, the privileged [`GUARDIAN`](/superchain/privileged-roles#guardian) address will call the `pause` function on the `SuperchainConfig`.
1. Members of the Optimism Collective's security team will ensure that the pause is executed correctly and the incident response improvements worked as intended.
1. Then the `unpause` function will be called to resume normal operations.

To learn more about this functionality, please refer to this [documentation](/stack/security/pause).

This functionality is important for the security of the Superchain and should be understood by Chain Operators, users, and especially for centralized exchanges and third-party bridge operators. **Please note that this will not effect any L1-to-L2 deposit transactions or L2 transactions. No action is required from users or operators.**
2 changes: 1 addition & 1 deletion pages/stack/security/_meta.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"faq": "Security FAQs",
"pause": "Pause and unpause the Bridge",
"pause": "Pause and unpause the bridge",
"audits-report": "Audit reports"
}
23 changes: 14 additions & 9 deletions pages/stack/security/pause.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,16 @@ is_imported_content: 'false'
The [`OptimismPortal`](https://github.com/ethereum-optimism/optimism/blob/v1.1.4/packages/contracts-bedrock/src/L1/OptimismPortal.sol) is the low-level L1 message passing contract present on all standard OP Stack chains.
This contract handles the L1 side of the communication channel between an OP Stack chain and its L1 parent chain.

As a safety mechanism, the `OptimismPortal` contract can be configured to be pausable by a specific `GUARDIAN` address.
As a safety mechanism, a privileged `GUARDIAN` address can pause withdrawals.
When paused, the `OptimismPortal` contract will prevent L2-to-L1 transactions from being executed.
This is a backup safety mechanism that can be used to help mitigate potential active security concerns.

Pause functionality and [two-step withdrawals](https://web.archive.org/web/20230608050641/https://blog.oplabs.co/two-step-withdrawals/) were introduced to the OP Stack to mitigate the risk of withdrawal bugs that have led to exploits in other bridging systems.
Pause functionality were introduced to the OP Stack to mitigate the risk of withdrawal bugs that have led to exploits in other bridging systems.

## Pause functionality

The `OptimismPortal` can be configured to allow a `GUARDIAN` address to pause and unpause L2-to-L1 transactions from being executed.
The `OptimismPortal` points to a `SuperchainConfig` smart contract which has a privileged `GUARDIAN` address that can pause and unpause L2-to-L1 transactions from being executed.
The `SuperchainConfig` contract is shared implmentation across the Superchain and all Optimism governed chains point to it and any OP Stack chain can opt to point their `SuperchainConfigProxy` to this shared implmentation.
L2-to-L1 transactions allow users and smart contracts on the OP Stack chain to send messages to the L1 parent chain.
Pause functionality allows a `GUARDIAN` to halt L2-to-L1 transaction execution for the OP Stack chain in question.
L1-to-L2 transactions are not affected by pause functionality.
Expand All @@ -41,13 +42,17 @@ Pauses are designed to be a backup safety mechanism and are expected to be used

## Pause and unpause functions

The `GUARDIAN` can pause and unpause L2-to-L1 transactions at any time by calling the [`pause`](https://github.com/ethereum-optimism/optimism/blob/v1.1.4/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L151-L156) and [`unpause`](https://github.com/ethereum-optimism/optimism/blob/v1.1.4/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L158-L163) functions on the `OptimismPortal` contract.
Additional controls on the `GUARDIAN` address can be implemented by configuring the `GUARDIAN` as a smart contract.
The `GUARDIAN` can pause and unpause L2-to-L1 transactions at any time by calling the [`pause`](https://github.com/ethereum-optimism/optimism/blob/856c08bf84d9aa829d1e764fc8e9a37d41960ba0/packages/contracts-bedrock/src/L1/SuperchainConfig.sol#L66-L71) and [`unpause`](https://github.com/ethereum-optimism/optimism/blob/856c08bf84d9aa829d1e764fc8e9a37d41960ba0/packages/contracts-bedrock/src/L1/SuperchainConfig.sol#L73-L78) functions on the `SuperchainConfig` contract.

## Guardian address

The `GUARDIAN` address is initially configured when the OP Stack chain is deployed and can be modified by the network's administrative address or smart contract.
A chain can choose to remove the `GUARDIAN` role by configuring the `GUARDIAN` to be an inaccessible address such as the [zero address](https://etherscan.io/address/0x0000000000000000000000000000000000000000).
The `GUARDIAN` address is configured in the `SuperchainConfig` contract and can be modified by the network's administrative address or smart contract. To learn more about the privileged role, see [documentation](/superchain/privileged-roles#guardian).

The `GUARDIAN` address is set as an `immutable` variable inside of the `OptimismPortal` contract.
To change the `GUARDIAN` address, the `OptimismPortal` proxy contract must be upgraded to a new implementation contract that has a different `GUARDIAN` address.
The `GUARDIAN` address is set as an `immutable` variable inside of the `SuperchainConfig` contract.
To change the `GUARDIAN` address, the `SuperchainConfig` proxy contract must be upgraded to a new implementation contract that has a different `GUARDIAN` address.

## Additional information

While this funcationality is available for the OP Stack protocol, it does not cover the security of centralized exchanges and third party bridges.
If you operate a centralized exchange or third party bridge, you should monitor this contract and pause withdrawals from the Superchain if you see that it has been paused.
If you'd like to learn more about the privileged roles in the OP Stack, see the [privileged roles](/superchain/privileged-roles) documentation.
28 changes: 13 additions & 15 deletions pages/superchain/privileged-roles.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { Callout } from 'nextra/components'

OP Stack chains follow a [Pragmatic Path to Decentralization](https://blog.oplabs.co/decentralization-roadmap/).
In their current state, OP Stack chains still include some "privileged" roles that give certain addresses the ability to carry out specific actions.
Members and users of the Superchain Ecosystem should be aware of these roles and their associated risks because they're shared across many OP Stack chains.
Read this page to understand these roles, why they exist, and what risks they pose.

## L1 Proxy Admin
Expand All @@ -39,8 +40,8 @@ The L1 Proxy Admin is an address that can be used to upgrade most OP Stack chain

### Addresses

* **Ethereum**: [`0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A`](https://etherscan.io/address/0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A)
* **Sepolia:** [`0x1Eb2fFc903729a0F03966B917003800b145F56E2`](https://sepolia.etherscan.io/address/0x1Eb2fFc903729a0F03966B917003800b145F56E2)
* **Optimism Governed Chains on Ethereum**: [`0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A`](https://etherscan.io/address/0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A)
* **Optimism Governed Chains on Sepolia:** [`0x1Eb2fFc903729a0F03966B917003800b145F56E2`](https://sepolia.etherscan.io/address/0x1Eb2fFc903729a0F03966B917003800b145F56E2)

## L2 Proxy Admin

Expand Down Expand Up @@ -69,8 +70,8 @@ The L2 Proxy Admin is an address that can be used to upgrade most OP Stack chain
read the descriptions above for more details.
</Callout>

* **OP Stack chains**: [`0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b`](https://optimistic.etherscan.io/address/0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b)
* **OP Sepolia:** [`0x2FC3ffc903729a0f03966b917003800B145F67F3`](https://sepolia-optimism.etherscan.io/address/0x2FC3ffc903729a0f03966b917003800B145F67F3)
* **Optimism Governed Chains on Ethereum**: [`0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b`](https://optimistic.etherscan.io/address/0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b)
* **Optimism Governed Chains on Sepolia:** [`0x2FC3ffc903729a0f03966b917003800B145F67F3`](https://sepolia-optimism.etherscan.io/address/0x2FC3ffc903729a0f03966b917003800B145F67F3)


## System Config Owner
Expand All @@ -90,8 +91,7 @@ The System Config Owner is an address that can be used to change the values with

### Addresses

* **Ethereum**: [`0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A`](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A)
* **Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301)
The System Config owner is chain specific and you can see which addresses are configured in the [Superchain Registry](/superchain/superchain-registry).

## Batcher

Expand All @@ -112,8 +112,7 @@ OP Stack chains nodes will look for transactions from this address to find new b

### Addresses

* **Ethereum**: [`0x6887246668a3b87F54DeB3b94Ba47a6f63F32985`](https://etherscan.io/address/0x6887246668a3b87F54DeB3b94Ba47a6f63F32985)
* **Sepolia**: [`0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c`](https://sepolia.etherscan.io/address/0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c)
The batcher address is chain specific and you can see which addresses are configured in the [Superchain Registry](/superchain/superchain-registry).

## Proposer

Expand Down Expand Up @@ -141,14 +140,13 @@ The Guardian role is responsible for changing the respected dispute game type if

### Addresses

* **Ethereum**: [`0x473300df21D047806A082244b417f96b32f13A33`](https://etherscan.io/address/0x473300df21D047806A082244b417f96b32f13A33)
* **Sepolia**: [`0x49277EE36A024120Ee218127354c4a3591dc90A9`](https://sepolia.etherscan.io/address/0x49277EE36A024120Ee218127354c4a3591dc90A9)
The proposer address is chain specific and you can see which addresses are configured in the [Superchain Registry](/superchain/superchain-registry).

## Challenger

### Description

The Challenger is an address that can participate in and challenge `PermissionedDisputeGame` instances created by the [Proposer](#proposer) role.
The Challenger is an address that can participate in and challenge `PermissionedDisputeGame` instances created by the [Proposer](#proposer) role. It is important to note that this is different from the [`op-challenger`](/stack/fault-proofs/challenger) services that challenges invalid output roots.

### Capabilities

Expand All @@ -166,8 +164,8 @@ The Challenger is an address that can participate in and challenge `Permissioned

### Addresses

* **Ethereum**: [`0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A`](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A)
* **Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301)
* **Optimism Governed Chains on Ethereum**: [`0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A`](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A)
* **Optimism Governed Chains on Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301)

## Guardian

Expand All @@ -194,8 +192,8 @@ The Guardian can also manage various aspects of the `OptimismPortal` contract to

### Addresses

* **Ethereum**: [`0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2`](https://etherscan.io/address/0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2)
* **Sepolia**: [`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`](https://sepolia.etherscan.io/address/0xf64bc17485f0B4Ea5F06A96514182FC4cB561977)
* **Optimism Governed Chains on Ethereum**: [`0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2`](https://etherscan.io/address/0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2)
* **Optimism Governed Chains on Sepolia**: [`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`](https://sepolia.etherscan.io/address/0xf64bc17485f0B4Ea5F06A96514182FC4cB561977)

## Mint Manager Owner

Expand Down
2 changes: 1 addition & 1 deletion pages/superchain/superchain-registry.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { Callout } from 'nextra/components'

# The Superchain Registry

The Superchain Registry serves as the source of truth for who's in the Superchain Ecosystem and what modifications they've made. The Superchain Registry introduces:
The [Superchain Registry](https://github.com/ethereum-optimism/superchain-registry/tree/main) serves as the source of truth for who's in the Superchain Ecosystem and what modifications they've made. The Superchain Registry introduces:

* A step-by-step process new chains can follow to join the Registry
* Validation checks to ensure standard chains comply with the Standard Rollup Charter and non-standard chains pass baseline validation before joining the Superchain Registry
Expand Down
4 changes: 3 additions & 1 deletion words.txt
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ ETHSTATS
ethstats
EVMTIMEOUT
evmtimeout
excercise
executability
exfiltrate
EXITWHENSYNCED
Expand All @@ -137,6 +138,7 @@ forkchoice
FPVM
FPVMs
Fraxtal
funcationality
Funct
gameplay
GASCAP
Expand Down Expand Up @@ -168,6 +170,7 @@ IERC
IGNOREPRICE
ignoreprice
Immunefi
implmentation
Inator
inator
INFLUXDBV
Expand Down Expand Up @@ -270,7 +273,6 @@ oplabs
opnode's
opstack
Pausability
pausable
pcscdpath
Pectra
pectra
Expand Down