Skip to content

Commit a3ca4cb

Browse files
authored
Merge pull request #1559 from ethereum-optimism/sb/superchain-pause-withdrawal-test
superchain pause withdrawal test notice and docs updates
2 parents 484f508 + c4aaf67 commit a3ca4cb

File tree

8 files changed

+101
-35
lines changed

8 files changed

+101
-35
lines changed

pages/notices/_meta.json

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"superchain-withdrawal-pause-test": "Superchain withdrawal pause test",
23
"upgrade-15": "Upgrade 15: Isthmus Hard Fork",
34
"upgrade-14": "Upgrade 14: MT-Cannon and Isthmus L1 Contracts",
45
"upgrade-13": "Upgrade 13: OPCM and incident response improvements",
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,37 @@
11
---
22
title: Superchain withdrawal pause test
3-
description: Information about testing the Superchain withdrawal pause functionality.
3+
description: Notice about the Superchain withdrawal pause test.
44
lang: en-US
55
content_type: notice
6-
topic: pause-withdrawal-test
6+
topic: superchain-pause-test
77
personas:
88
- chain-operator
99
- node-operator
10-
- user
1110
categories:
1211
- security
13-
- automated-pause
1412
- protocol
13+
- infrastructure
14+
- l1-contracts
1515
is_imported_content: 'false'
1616
---
1717

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

20-
# Superchain withdrawal pause test
20+
# Superchain withdrawal pause test
2121

22+
<Callout type="info">
23+
* Sepolia Superchain withdrawal pause test is scheduled for **April 14th 2025**
24+
* Mainnet Superchain withdrawal pause test is scheduled for **April 30th 2025**
25+
</Callout>
2226

27+
The Optimism Collective will be testing improved incident response features on the Sepolia Superchain.
28+
29+
## What's happening
30+
31+
1. During this excercise, the privileged [`GUARDIAN`](/superchain/privileged-roles#guardian) address will call the `pause` function on the `SuperchainConfig`.
32+
2. Members of the Optimism Collective's security team will ensure that the pause is executed correctly and the incident response improvements worked as intended.
33+
3. Then the `unpause` function will be called to resume normal operations.
34+
35+
To learn more about this functionality, please refer to this [documentation](/stack/security/pause).
36+
37+
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.**

pages/notices/upgrade-15.mdx

+48-3
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,58 @@ For more information on the Isthmus implementation details, please review [Isthm
4040

4141
## For chain operators
4242

43-
Chain operators should upgrade their nodes ahead of the activation times to a release that contains the Isthmus changes and has the activation times for their chains baked in, or set the activation times manually via overrides. The details are outlined in the node operator section below.
43+
Chain operators must upgrade their nodes ahead of the activation times to a release that contains the Isthmus changes and has the activation times for their chains baked in, or set the activation times manually via overrides. The details are outlined in the node operator section below. Additionally, chain operators must update `op-batcher` to [`v1.12.0`](https://github.com/ethereum-optimism/optimism/releases/tag/op-batcher%2Fv1.12.0) and should update `op-challenger` to [`v1.3.3`](https://github.com/ethereum-optimism/optimism/releases/tag/op-challenger%2Fv1.3.3).
4444

45-
In addition to this, the L1 smart contract upgrades in [upgrade 14](/notices/upgrade-14) are required to utilize this new functionality.
45+
In addition to this, the L1 smart contract upgrades in [upgrade 14](/notices/upgrade-14) are required to utilize this new funcationality.
4646

4747
### For permissionless fault proof enabled chains
4848

49-
In addition to the upgrade 14 contract updates. Chains running permissionless fault proofs will need to deploy new dispute game contracts with new absolute prestates. The new op-program release that contains the activation timestamps will be available soon.
49+
Chains running permissionless fault proofs will need to deploy new dispute game contracts with new absolute prestates. The new 64 bit version of cannon will be utilized moving forward. The Sepolia Superchain, will utilize [op-program/v1.6.0-rc.1](https://github.com/ethereum-optimism/optimism/tree/op-program/v1.6.0-rc.1). The following permissionless fault proof Sepolia chains are: `Base Sepolia`, `Ink Sepolia`, and `OP Sepolia`.
50+
51+
<Steps>
52+
### Verify the new absolute prestate
53+
54+
The absolute prestate is generated with the [op-program/v1.6.0-rc.1](https://github.com/ethereum-optimism/optimism/tree/op-program/v1.6.0-rc.1). You can use this new absolute prestate (`0x03394563dd4a36e95e6d51ce7267ecceeb05fad23e68d2f9eed1affa73e5641a`) for the following chains:
55+
56+
* Sepolia: Base, Creator Chain, OP, Metal, Mode, Zora, Ethernity, Unichain, Ink, and Minato (Soneium)
57+
58+
You can verify this absolute prestate by running the following [command](https://github.com/ethereum-optimism/optimism/blob/5f003211aed7469eed7df666291a62c025d1c46c/Makefile#L129-L131) in the root of the monorepo on the `op-program/v1.6.0-rc.1` tag:
59+
60+
```shell
61+
make reproducible-prestate
62+
```
63+
64+
You should expect the following output at the end of the command:
65+
66+
```shell
67+
Cannon Absolute prestate hash:
68+
0x03526dfe02ab00a178e0ab77f7539561aaf5b5e3b46cd3be358f1e501b06d8a9
69+
Cannon64 Absolute prestate hash:
70+
0x03394563dd4a36e95e6d51ce7267ecceeb05fad23e68d2f9eed1affa73e5641a
71+
CannonInterop Absolute prestate hash:
72+
0x03ada038f8a81526c68596586dfc762eb5412d4d5bb7cb46110d8c47ee570d7e
73+
```
74+
75+
### Upload your new preimage file
76+
77+
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.bin.gz`. Rename that file to have the absolute prestate hash as the filename so it looks like `0x03394563dd4a36e95e6d51ce7267ecceeb05fad23e68d2f9eed1affa73e5641a.bin.gz`.
78+
79+
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.
80+
81+
### Deploy new dispute game contracts
82+
83+
You will then take the absolute prestate and deploy new `FaultDisputeGame` and `PermissionedDisputeGame` contracts with that value.
84+
85+
### Update the DisputeGameFactory
86+
87+
You will then need to update the `DisputeGameFactory` to point to the new `FaultDisputeGame` and `PermissionedDisputeGame` contracts by calling `DisputeGameFactory.setImplementation`.
88+
89+
### Execute the upgrade
90+
91+
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.
92+
</Steps>
93+
94+
The new op-program release that contains the Mainnet activation timestamps will be available soon.
5095

5196
## For node operators
5297

pages/stack/security/_meta.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"faq": "Security FAQs",
3-
"pause": "Pause and unpause the Bridge",
3+
"pause": "Pause and unpause the bridge",
44
"audits-report": "Audit reports"
55
}

pages/stack/security/pause.mdx

+14-9
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,16 @@ is_imported_content: 'false'
2323
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.
2424
This contract handles the L1 side of the communication channel between an OP Stack chain and its L1 parent chain.
2525

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

30-
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.
30+
Pause functionality were introduced to the OP Stack to mitigate the risk of withdrawal bugs that have led to exploits in other bridging systems.
3131

3232
## Pause functionality
3333

34-
The `OptimismPortal` can be configured to allow a `GUARDIAN` address to pause and unpause L2-to-L1 transactions from being executed.
34+
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.
35+
The `SuperchainConfig` contract is a shared implementation across the Superchain. All Optimism-governed chains point to it, and any OP Stack chain can point its `SuperchainConfigProxy` to this shared implementation.
3536
L2-to-L1 transactions allow users and smart contracts on the OP Stack chain to send messages to the L1 parent chain.
3637
Pause functionality allows a `GUARDIAN` to halt L2-to-L1 transaction execution for the OP Stack chain in question.
3738
L1-to-L2 transactions are not affected by pause functionality.
@@ -41,13 +42,17 @@ Pauses are designed to be a backup safety mechanism and are expected to be used
4142

4243
## Pause and unpause functions
4344

44-
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.
45-
Additional controls on the `GUARDIAN` address can be implemented by configuring the `GUARDIAN` as a smart contract.
45+
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.
4646

4747
## Guardian address
4848

49-
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.
50-
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).
49+
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).
5150

52-
The `GUARDIAN` address is set as an `immutable` variable inside of the `OptimismPortal` contract.
53-
To change the `GUARDIAN` address, the `OptimismPortal` proxy contract must be upgraded to a new implementation contract that has a different `GUARDIAN` address.
51+
The `GUARDIAN` address is set as an `immutable` variable inside of the `SuperchainConfig` contract.
52+
To change the `GUARDIAN` address, the `SuperchainConfig` proxy contract must be upgraded to a new implementation contract that has a different `GUARDIAN` address.
53+
54+
## Additional information
55+
56+
While this funcationality is available for the OP Stack protocol, it does not cover the security of centralized exchanges and third party bridges.
57+
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.
58+
If you'd like to learn more about the privileged roles in the OP Stack, see the [privileged roles](/superchain/privileged-roles) documentation.

pages/superchain/privileged-roles.mdx

+13-15
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { Callout } from 'nextra/components'
2121

2222
OP Stack chains follow a [Pragmatic Path to Decentralization](https://blog.oplabs.co/decentralization-roadmap/).
2323
In their current state, OP Stack chains still include some "privileged" roles that give certain addresses the ability to carry out specific actions.
24+
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.
2425
Read this page to understand these roles, why they exist, and what risks they pose.
2526

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

4041
### Addresses
4142

42-
* **Ethereum**: [`0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A`](https://etherscan.io/address/0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A)
43-
* **Sepolia:** [`0x1Eb2fFc903729a0F03966B917003800b145F56E2`](https://sepolia.etherscan.io/address/0x1Eb2fFc903729a0F03966B917003800b145F56E2)
43+
* **Optimism Governed Chains on Ethereum**: [`0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A`](https://etherscan.io/address/0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A)
44+
* **Optimism Governed Chains on Sepolia:** [`0x1Eb2fFc903729a0F03966B917003800b145F56E2`](https://sepolia.etherscan.io/address/0x1Eb2fFc903729a0F03966B917003800b145F56E2)
4445

4546
## L2 Proxy Admin
4647

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

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

7576

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

9192
### Addresses
9293

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

9696
## Batcher
9797

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

113113
### Addresses
114114

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

118117
## Proposer
119118

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

142141
### Addresses
143142

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

147145
## Challenger
148146

149147
### Description
150148

151-
The Challenger is an address that can participate in and challenge `PermissionedDisputeGame` instances created by the [Proposer](#proposer) role.
149+
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.
152150

153151
### Capabilities
154152

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

167165
### Addresses
168166

169-
* **Ethereum**: [`0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A`](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A)
170-
* **Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301)
167+
* **Optimism Governed Chains on Ethereum**: [`0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A`](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A)
168+
* **Optimism Governed Chains on Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301)
171169

172170
## Guardian
173171

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

195193
### Addresses
196194

197-
* **Ethereum**: [`0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2`](https://etherscan.io/address/0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2)
198-
* **Sepolia**: [`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`](https://sepolia.etherscan.io/address/0xf64bc17485f0B4Ea5F06A96514182FC4cB561977)
195+
* **Optimism Governed Chains on Ethereum**: [`0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2`](https://etherscan.io/address/0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2)
196+
* **Optimism Governed Chains on Sepolia**: [`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`](https://sepolia.etherscan.io/address/0xf64bc17485f0B4Ea5F06A96514182FC4cB561977)
199197

200198
## Mint Manager Owner
201199

pages/superchain/superchain-registry.mdx

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { Callout } from 'nextra/components'
2020

2121
# The Superchain Registry
2222

23-
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:
23+
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:
2424

2525
* A step-by-step process new chains can follow to join the Registry
2626
* Validation checks to ensure standard chains comply with the Standard Rollup Charter and non-standard chains pass baseline validation before joining the Superchain Registry

words.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ ETHSTATS
120120
ethstats
121121
EVMTIMEOUT
122122
evmtimeout
123+
excercise
123124
executability
124125
exfiltrate
125126
EXITWHENSYNCED
@@ -137,6 +138,7 @@ forkchoice
137138
FPVM
138139
FPVMs
139140
Fraxtal
141+
funcationality
140142
Funct
141143
gameplay
142144
GASCAP
@@ -168,6 +170,7 @@ IERC
168170
IGNOREPRICE
169171
ignoreprice
170172
Immunefi
173+
implmentation
171174
Inator
172175
inator
173176
INFLUXDBV
@@ -270,7 +273,6 @@ oplabs
270273
opnode's
271274
opstack
272275
Pausability
273-
pausable
274276
pcscdpath
275277
Pectra
276278
pectra

0 commit comments

Comments
 (0)