Skip to content

Commit 1892d93

Browse files
Ethnicalmds1
andauthored
Update PRESIGNED-PAUSE.md with the GAP disclaimer. (#347)
* add gap information to superchains-ops + doctoc * add the task 017 `PRESIGNED_PAUSE` * fix the comments * upgrade the docs from matt suggestions Co-authored-by: Matt Solomon <[email protected]> * add some infos regarding the process of storage * chore: nits --------- Co-authored-by: Matt Solomon <[email protected]>
1 parent 4d45197 commit 1892d93

File tree

1 file changed

+45
-24
lines changed

1 file changed

+45
-24
lines changed

PRESIGNED-PAUSE.md

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
22
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
33

4-
- [Objective](#objective)
5-
- [Approving the transaction](#approving-the-transaction)
6-
- [1. Update repo and move to the appropriate folder for this rehearsal task](#1-update-repo-and-move-to-the-appropriate-folder-for-this-rehearsal-task)
7-
- [2. Setup Ledger](#2-setup-ledger)
8-
- [3. Sign the transactions](#3-sign-the-transactions)
9-
- [3.1. Validate integrity of the simulation.](#31-validate-integrity-of-the-simulation)
10-
- [3.2. Validate correctness of the state diff.](#32-validate-correctness-of-the-state-diff)
11-
- [3.3. Extract the domain hash and the message hash to approve.](#33-extract-the-domain-hash-and-the-message-hash-to-approve)
12-
- [4. Approve the signature on your ledger](#4-approve-the-signature-on-your-ledger)
13-
- [5. Send the output to Facilitator(s)](#5-send-the-output-to-facilitators)
14-
- [[Before Ceremony] Instructions for the facilitator](#before-ceremony-instructions-for-the-facilitator)
15-
- [1. Update input files](#1-update-input-files)
16-
- [2. Prepare the transactions](#2-prepare-the-transactions)
17-
- [[After Ceremony] Instructions for the facilitator](#after-ceremony-instructions-for-the-facilitator)
18-
- [1. Collect the signatures](#1-collect-the-signatures)
19-
- [2. Merge the signatures](#2-merge-the-signatures)
20-
- [3. Verify the signatures](#3-verify-the-signatures)
21-
- [4. Simulate the transaction with signatures](#4-simulate-the-transaction-with-signatures)
22-
- [5. Store and execute the transaction](#5-store-and-execute-the-transaction)
4+
- [Superchain Presigned Pause](#superchain-presigned-pause)
5+
- [Objective](#objective)
6+
- [Ensure no gaps with PSPs coverage](#1-ensure-no-gaps-with-psps-coverage)
7+
- [Approving the transaction](#approving-the-transaction)
8+
- [1. Update repo and move to the appropriate folder for this rehearsal task](#1-update-repo-and-move-to-the-appropriate-folder-for-this-rehearsal-task)
9+
- [2. Setup Ledger](#2-setup-ledger)
10+
- [3. Sign the transactions](#3-sign-the-transactions)
11+
- [3.1. Validate integrity of the simulation.](#31-validate-integrity-of-the-simulation)
12+
- [3.2. Validate correctness of the state diff.](#32-validate-correctness-of-the-state-diff)
13+
- [3.3. Extract the domain hash and the message hash to approve.](#33-extract-the-domain-hash-and-the-message-hash-to-approve)
14+
- [4. Approve the signature on your ledger](#4-approve-the-signature-on-your-ledger)
15+
- [5. Send the output to Facilitator(s)](#5-send-the-output-to-facilitators)
16+
- [[Before Ceremony] Instructions for the facilitator](#before-ceremony-instructions-for-the-facilitator)
17+
- [1. Update input files](#1-update-input-files)
18+
- [2. Prepare the transactions](#2-prepare-the-transactions)
19+
- [[After Ceremony] Instructions for the facilitator](#after-ceremony-instructions-for-the-facilitator)
20+
- [1. Collect the signatures](#1-collect-the-signatures)
21+
- [2. Merge the signatures](#2-merge-the-signatures)
22+
- [3. Verify the signatures](#3-verify-the-signatures)
23+
- [4. Simulate the transaction with signatures](#4-simulate-the-transaction-with-signatures)
24+
- [5. Store and execute the transaction](#5-store-and-execute-the-transaction)
2325

2426
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
2527

@@ -40,6 +42,24 @@ doesn’t even need to be funded. These are offchain signatures.
4042

4143
A Facilitator will collect the signatures and execute the contract.
4244

45+
### Ensure no gaps with PSPs coverage
46+
47+
We need to ensure there is no gaps in the PSPs coverage during upgrade.
48+
Upgrades to certain components of the system can invalidate existing PSPs and cause them to no longer work, thus we need to ensure before the upgrade that PSPs coverage continues without a gap.
49+
In this case of breaking changes, we need to simulate the PSPs against the **new changes** and presign the new PSPs against these **new changes**.
50+
This will allow us to have continuous PSP coverage before, during, and after the upgrade.
51+
52+
> [!WARNING]
53+
> This will require to making some **overrides** in _superchains-ops_ tasks to simulate successfully with the new changes. We already had to do this for the PSPs in the [task 017](https://github.com/ethereum-optimism/superchain-ops/blob/main/tasks/eth/017-presigned-pause/PresignPauseFromJson.s.sol)
54+
55+
Moreover during this operation we need to store the PSPs. For this, we will use 2 separate vaults.
56+
The **first** vault is the normal vault and will hold the previous PSPs (to make sure we have the coverage until the upgrade).
57+
The **second** vault is the new **temporary** vault and will hold the new PSPs (to make sure we have the coverage after the upgrade).
58+
After the upgrade the **temporary second** vault will be merged in the first vault and will overwrite the PSPs in the first vault with the same nonce.
59+
60+
require to keep the Previous PSPs in the previous vault.
61+
Additionally, if there is another entity that depends on the PSPs, we need to share these before the upgrade occurs.
62+
4363
## Approving the transaction
4464

4565
### 1. Update repo and move to the appropriate folder for this rehearsal task
@@ -117,7 +137,7 @@ just \
117137
Where `0` is the index of the address you want to use in the derivation path.
118138

119139
For each transaction we will be performing 3 validations
120-
and ensure the domain hash and message hash are the same
140+
and ensure the domain hash and message hash are the same
121141
between the Tenderly simulation and your
122142
Ledger:
123143

@@ -156,9 +176,9 @@ Now click on the "State" tab. Verify that:
156176
storage key hash is evaluated from the following expression:
157177
`bytes32(uint256(keccak256("superchainConfig.paused")) - 1)` per the
158178
`SuperchainConfig` [implementation](https://github.com/ethereum-optimism/optimism/blob/op-contracts/v1.5.0-rc.1/packages/contracts-bedrock/src/L1/SuperchainConfig.sol#L19).
159-
3. There are no other significant state changes except for 2 nonce
179+
2. There are no other significant state changes except for 2 nonce
160180
changes from the Safe and the signer address.
161-
4. You will see a state override (not a state change). This is
181+
3. You will see a state override (not a state change). This is
162182
expected and its purpose is to generate a successful Safe execution
163183
simulation without collecting any signatures.
164184

@@ -230,10 +250,10 @@ will be collected by Facilitators for execution. Execution can occur
230250
by anyone once a threshold of signatures are collected, so a
231251
Facilitator will do the final execution for convenience.
232252

233-
The signed transactions are in the `tx` folder. They will be named
253+
The signed transactions are in the `tx` folder. They will be named
234254
according to the address used to sign, i.e.
235255
`tx/draft-92.signer-0x8c78B948Cdd64812993398b4B51ed2603b3543A6.json`
236-
was signed by `0x8c78B948Cdd64812993398b4B51ed2603b3543A6`. Share
256+
was signed by `0x8c78B948Cdd64812993398b4B51ed2603b3543A6`. Share
237257
these 3 files with the Facilitator, and congrats, you are done!
238258

239259
## [Before Ceremony] Instructions for the facilitator
@@ -304,6 +324,7 @@ just \
304324
This will overwrite the original `draft-*.json` files with the all merged signatures.
305325

306326
You can check the file contents with the following command:
327+
307328
```
308329
cat tx/draft-*.json | jq
309330
```

0 commit comments

Comments
 (0)