You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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]>
Copy file name to clipboardExpand all lines: PRESIGNED-PAUSE.md
+45-24Lines changed: 45 additions & 24 deletions
Original file line number
Diff line number
Diff line change
@@ -1,25 +1,27 @@
1
1
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
2
2
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
3
3
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)
-[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)
23
25
24
26
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
25
27
@@ -40,6 +42,24 @@ doesn’t even need to be funded. These are offchain signatures.
40
42
41
43
A Facilitator will collect the signatures and execute the contract.
42
44
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
+
43
63
## Approving the transaction
44
64
45
65
### 1. Update repo and move to the appropriate folder for this rehearsal task
@@ -117,7 +137,7 @@ just \
117
137
Where `0` is the index of the address you want to use in the derivation path.
118
138
119
139
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
121
141
between the Tenderly simulation and your
122
142
Ledger:
123
143
@@ -156,9 +176,9 @@ Now click on the "State" tab. Verify that:
156
176
storage key hash is evaluated from the following expression:
157
177
`bytes32(uint256(keccak256("superchainConfig.paused")) - 1)` per the
0 commit comments