From c1d26214f3bf8dc0840f06328359b0ef09ba0833 Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 17 Oct 2024 14:22:49 +0200 Subject: [PATCH 1/3] add gap information to superchains-ops + doctoc --- PRESIGNED-PAUSE.md | 64 +++++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/PRESIGNED-PAUSE.md b/PRESIGNED-PAUSE.md index 7c2de52c..518f1d1b 100644 --- a/PRESIGNED-PAUSE.md +++ b/PRESIGNED-PAUSE.md @@ -1,25 +1,27 @@ -- [Objective](#objective) -- [Approving the transaction](#approving-the-transaction) - - [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) - - [2. Setup Ledger](#2-setup-ledger) - - [3. Sign the transactions](#3-sign-the-transactions) - - [3.1. Validate integrity of the simulation.](#31-validate-integrity-of-the-simulation) - - [3.2. Validate correctness of the state diff.](#32-validate-correctness-of-the-state-diff) - - [3.3. Extract the domain hash and the message hash to approve.](#33-extract-the-domain-hash-and-the-message-hash-to-approve) - - [4. Approve the signature on your ledger](#4-approve-the-signature-on-your-ledger) - - [5. Send the output to Facilitator(s)](#5-send-the-output-to-facilitators) -- [[Before Ceremony] Instructions for the facilitator](#before-ceremony-instructions-for-the-facilitator) - - [1. Update input files](#1-update-input-files) - - [2. Prepare the transactions](#2-prepare-the-transactions) -- [[After Ceremony] Instructions for the facilitator](#after-ceremony-instructions-for-the-facilitator) - - [1. Collect the signatures](#1-collect-the-signatures) - - [2. Merge the signatures](#2-merge-the-signatures) - - [3. Verify the signatures](#3-verify-the-signatures) - - [4. Simulate the transaction with signatures](#4-simulate-the-transaction-with-signatures) - - [5. Store and execute the transaction](#5-store-and-execute-the-transaction) +- [Superchain Presigned Pause](#superchain-presigned-pause) + - [Objective](#objective) + - [1. Ensure no GAPs with PSPs coverage](#1-ensure-no-gaps-with-psps-coverage) + - [Approving the transaction](#approving-the-transaction) + - [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) + - [2. Setup Ledger](#2-setup-ledger) + - [3. Sign the transactions](#3-sign-the-transactions) + - [3.1. Validate integrity of the simulation.](#31-validate-integrity-of-the-simulation) + - [3.2. Validate correctness of the state diff.](#32-validate-correctness-of-the-state-diff) + - [3.3. Extract the domain hash and the message hash to approve.](#33-extract-the-domain-hash-and-the-message-hash-to-approve) + - [4. Approve the signature on your ledger](#4-approve-the-signature-on-your-ledger) + - [5. Send the output to Facilitator(s)](#5-send-the-output-to-facilitators) + - [[Before Ceremony] Instructions for the facilitator](#before-ceremony-instructions-for-the-facilitator) + - [1. Update input files](#1-update-input-files) + - [2. Prepare the transactions](#2-prepare-the-transactions) + - [[After Ceremony] Instructions for the facilitator](#after-ceremony-instructions-for-the-facilitator) + - [1. Collect the signatures](#1-collect-the-signatures) + - [2. Merge the signatures](#2-merge-the-signatures) + - [3. Verify the signatures](#3-verify-the-signatures) + - [4. Simulate the transaction with signatures](#4-simulate-the-transaction-with-signatures) + - [5. Store and execute the transaction](#5-store-and-execute-the-transaction) @@ -40,6 +42,19 @@ doesn’t even need to be funded. These are offchain signatures. A Facilitator will collect the signatures and execute the contract. +### 1. Ensure no GAPs with PSPs coverage + +We need to ensure there is no GAPs in the PSPs coverage during upgrade. +This means that, if we are upgrading core components of the system. It can break the PSPs coverage, thus we need to ensure before the upgrade that the PSPs coverage will not be broken. +In the case there are broken changes, we need to blindly simulate the PSPs with the **new changes** and presign the new PSPs with the **new changes**. +This will allow us to have the PSPs coverage during the upgrade and after the upgrade with the new components. +We need to keep the PSPs before the upgrade and after the upgrade. + +> [!WARNING] +> This will require to making some **overrides** in _superchains-ops_ tasks to simulate successfully with the new changes. + +This is worth noting, if there is another entity that depends on the PSPs, we need to share these before the upgrade occurs. + ## Approving the transaction ### 1. Update repo and move to the appropriate folder for this rehearsal task @@ -117,7 +132,7 @@ just \ Where `0` is the index of the address you want to use in the derivation path. For each transaction we will be performing 3 validations -and ensure the domain hash and message hash are the same +and ensure the domain hash and message hash are the same between the Tenderly simulation and your Ledger: @@ -156,9 +171,9 @@ Now click on the "State" tab. Verify that: storage key hash is evaluated from the following expression: `bytes32(uint256(keccak256("superchainConfig.paused")) - 1)` per the `SuperchainConfig` [implementation](https://github.com/ethereum-optimism/optimism/blob/op-contracts/v1.5.0-rc.1/packages/contracts-bedrock/src/L1/SuperchainConfig.sol#L19). -3. There are no other significant state changes except for 2 nonce +2. There are no other significant state changes except for 2 nonce changes from the Safe and the signer address. -4. You will see a state override (not a state change). This is +3. You will see a state override (not a state change). This is expected and its purpose is to generate a successful Safe execution simulation without collecting any signatures. @@ -230,10 +245,10 @@ will be collected by Facilitators for execution. Execution can occur by anyone once a threshold of signatures are collected, so a Facilitator will do the final execution for convenience. -The signed transactions are in the `tx` folder. They will be named +The signed transactions are in the `tx` folder. They will be named according to the address used to sign, i.e. `tx/draft-92.signer-0x8c78B948Cdd64812993398b4B51ed2603b3543A6.json` -was signed by `0x8c78B948Cdd64812993398b4B51ed2603b3543A6`. Share +was signed by `0x8c78B948Cdd64812993398b4B51ed2603b3543A6`. Share these 3 files with the Facilitator, and congrats, you are done! ## [Before Ceremony] Instructions for the facilitator @@ -304,6 +319,7 @@ just \ This will overwrite the original `draft-*.json` files with the all merged signatures. You can check the file contents with the following command: + ``` cat tx/draft-*.json | jq ``` From 6fb7c063c226e65ef6b0d6dc24c661e2591b7b94 Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 17 Oct 2024 15:06:59 +0200 Subject: [PATCH 2/3] add the task 017 `PRESIGNED_PAUSE` --- PRESIGNED-PAUSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PRESIGNED-PAUSE.md b/PRESIGNED-PAUSE.md index 518f1d1b..b11f0399 100644 --- a/PRESIGNED-PAUSE.md +++ b/PRESIGNED-PAUSE.md @@ -51,7 +51,7 @@ This will allow us to have the PSPs coverage during the upgrade and after the up We need to keep the PSPs before the upgrade and after the upgrade. > [!WARNING] -> This will require to making some **overrides** in _superchains-ops_ tasks to simulate successfully with the new changes. +> 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) This is worth noting, if there is another entity that depends on the PSPs, we need to share these before the upgrade occurs. From 8d08241d5702a8c5045d3a8afa099dc13f9534e9 Mon Sep 17 00:00:00 2001 From: ethnical Date: Fri, 18 Oct 2024 15:54:38 +0200 Subject: [PATCH 3/3] fix the comments --- PRESIGNED-PAUSE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PRESIGNED-PAUSE.md b/PRESIGNED-PAUSE.md index b11f0399..000b4b16 100644 --- a/PRESIGNED-PAUSE.md +++ b/PRESIGNED-PAUSE.md @@ -3,7 +3,7 @@ - [Superchain Presigned Pause](#superchain-presigned-pause) - [Objective](#objective) - - [1. Ensure no GAPs with PSPs coverage](#1-ensure-no-gaps-with-psps-coverage) + - [Ensure no gaps with PSPs coverage](#1-ensure-no-gaps-with-psps-coverage) - [Approving the transaction](#approving-the-transaction) - [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) - [2. Setup Ledger](#2-setup-ledger) @@ -42,9 +42,9 @@ doesn’t even need to be funded. These are offchain signatures. A Facilitator will collect the signatures and execute the contract. -### 1. Ensure no GAPs with PSPs coverage +### Ensure no gaps with PSPs coverage -We need to ensure there is no GAPs in the PSPs coverage during upgrade. +We need to ensure there is no gaps in the PSPs coverage during upgrade. This means that, if we are upgrading core components of the system. It can break the PSPs coverage, thus we need to ensure before the upgrade that the PSPs coverage will not be broken. In the case there are broken changes, we need to blindly simulate the PSPs with the **new changes** and presign the new PSPs with the **new changes**. This will allow us to have the PSPs coverage during the upgrade and after the upgrade with the new components.