From dfce358479e39324e7219ac870679e8dc3771c3f Mon Sep 17 00:00:00 2001 From: JosepBove Date: Thu, 16 Apr 2026 19:23:31 -0300 Subject: [PATCH 01/17] feat: add eth/052 deputy pause key rotation task Rotates the DeputyPauseModule Deputy EOA on OP Mainnet from 0x352f1defb49718e7ea411687e850aa8d6299f7ac to 0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c via setDeputy() on the DeputyPauseModule at 0x126a736B18E0a64fBA19D421647A530E327E112C. Also registers the mainnet DeputyPauseModule address under [eth] in src/addresses.toml (sep already had its entry). Split from #1396 so mainnet can proceed independently of sepolia. Co-Authored-By: Tom --- src/addresses.toml | 1 + .../052-deputy-pause-key-rotation/README.md | 26 ++++++++ .../VALIDATION.md | 60 +++++++++++++++++++ .../052-deputy-pause-key-rotation/config.toml | 12 ++++ 4 files changed, 99 insertions(+) create mode 100644 src/tasks/eth/052-deputy-pause-key-rotation/README.md create mode 100644 src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md create mode 100644 src/tasks/eth/052-deputy-pause-key-rotation/config.toml diff --git a/src/addresses.toml b/src/addresses.toml index 4047e3b8d..7b796ca97 100644 --- a/src/addresses.toml +++ b/src/addresses.toml @@ -2,6 +2,7 @@ SuperchainConfig = "0x95703e0982140D16f8ebA6d158FccEde42f04a4C" ProtocolVersions = "0x8062AbC286f5e7D9428a0Ccb9AbD71e50d93b935" # Cannot be found by chain discovery in SuperchainAddressRegistry.sol DeputyGuardianModule = "0xc6901F65369FC59fC1B4D6D6bE7A2318Ff38dB5B" +DeputyPauseModule = "0x126a736B18E0a64fBA19D421647A530E327E112C" FoundationUpgradeSafe = "0x847B5c174615B1B7fDF770882256e2D3E95b9D92" SecurityCouncil = "0xc2819DC788505Aac350142A7A707BF9D03E3Bd03" LivenessGuard = "0x24424336F04440b1c28685a38303aC33C9D14a25" # LivenessGuard on security council diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/README.md b/src/tasks/eth/052-deputy-pause-key-rotation/README.md new file mode 100644 index 000000000..ff288da5c --- /dev/null +++ b/src/tasks/eth/052-deputy-pause-key-rotation/README.md @@ -0,0 +1,26 @@ +# 052-deputy-pause-key-rotation + +Status: READY TO SIGN + +## Objective + +Rotates the `DeputyPauseModule` Deputy EOA from `0x352f1defb49718e7ea411687e850aa8d6299f7ac` to `0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c`. +To achieve this, we will use the `setDeputy` function of the `DeputyPauseModule` contract deployed at `0x126a736B18E0a64fBA19D421647A530E327E112C`. + +## Simulation + +Please see the "Simulating and Verifying the Transaction" instructions in [SINGLE.md](../../../SINGLE.md). +When simulating, ensure the logs say `Using script /your/path/to/superchain-ops/src/template/DeputyPauseKeyRotationTemplate.sol`. +This ensures all safety checks are run. If the default `SignFromJson.s.sol` script is shown (without the full path), something is wrong and the safety checks will not run. + +## State Validation + +Please see the instructions for [validation](./VALIDATION.md). + +## Execution + +Rotates the `DeputyPauseModule` Deputy EOA from `0x352f1defb49718e7ea411687e850aa8d6299f7ac` to `0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c` in the [DeputyPauseModule](https://etherscan.io/address/0x126a736B18E0a64fBA19D421647A530E327E112C#code). + +## Signing and execution + +This task has to be signed by the [FoundationOperationsSafe](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A). diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md b/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md new file mode 100644 index 000000000..67025ad17 --- /dev/null +++ b/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md @@ -0,0 +1,60 @@ +# Validation + +This document can be used to validate the state diff resulting from the execution of the upgrade +transaction. + +For each contract listed in the state diff, please verify that no contracts or state changes shown in the Tenderly diff are missing from this document. Additionally, please verify that for each contract: + +- The following state changes (and none others) are made to that contract. This validates that no unexpected state changes occur. +- All addresses (in section headers and storage values) match the provided name, using the Etherscan and Superchain Registry links provided. This validates the bytecode deployed at the addresses contains the correct logic. +- All key values match the semantic meaning provided, which can be validated using the storage layout links provided. + +## Expected Domain and Message Hashes + +> [!CAUTION] +> Before signing, ensure the below hashes match what is on your ledger. +> +> ### Optimism Foundation +> +> Domain Hash: 0x2e5ad244d335c45fbace4ebd1736b0fad81b01591a2819baedad311ead5bce76 +> Message Hash: 0xbb9508edc2cb54922dfdbd999b50b95622aa8be4475159ceb3d4a6306241f192 + +## State Overrides + +The following state overrides should be seen: + +### `0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A` (The Optimism Foundation Operations Safe) + +Links: + +- [Etherscan](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A) + +Enables the simulation by setting the threshold to 1: + +- **Key:** `0x0000000000000000000000000000000000000000000000000000000000000004`
+ **Value:** `0x0000000000000000000000000000000000000000000000000000000000000001` + +## State Changes + +### `0x9ba6e03d8b90de867373db8cf1a58d2f7f006b3a` (Foundation Operations Safe) + +- **Key:** `0x0000000000000000000000000000000000000000000000000000000000000005` + - **Decoded Kind:** `uint256` + - **Before:** `118` + - **After:** `119` + - **Summary:** nonce + - **Detail:** + +This updates the nonce of the Foundation Operations Safe. + +--- + +### `0x126a736b18e0a64fba19d421647a530e327e112c` (DeputyPauseModule) + +- **Key:** `0x0000000000000000000000000000000000000000000000000000000000000002` + - **Before:** `0x000000000000000000000000352f1defb49718e7ea411687e850aa8d6299f7ac` + - **After:** `0x0000000000000000000000002fa150379bf32b6d79eeb4ff9bd280e76049a87c` + - **Summary:** + - **Detail:** + +This updates the previous deputy `0x352f1defB49718e7Ea411687E850aA8d6299F7aC` to `0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c`. diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml new file mode 100644 index 000000000..50c750879 --- /dev/null +++ b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml @@ -0,0 +1,12 @@ +l2chains = [{name = "OP Mainnet", chainId = 10}] +templateName = "DeputyPauseKeyRotationTemplate" + +newDeputy = "0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c" + +newDeputySignature = "0x9f1c36e3cfcc19c4e2349600477d1cd782856d62c520b4f6295f7922fe333b91772a4949015fe38ce61f34353967d0b2c33126793b7609d4227189fa828db2271c" + +[stateOverrides] +# Nonce override for simulation (storage slot 0x5 is the nonce) +0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 118} +] From 4c05455fdc3278c1d348ab2eba7b72f63283239d Mon Sep 17 00:00:00 2001 From: ethnical Date: Wed, 22 Apr 2026 22:48:42 -0300 Subject: [PATCH 02/17] fix(eth/052): point task at the current mainnet DPM and FoundationUpgradeSafe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correct the mainnet DeputyPauseModule address and swap the executing safe from the FoundationOperationsSafe to the FoundationUpgradeSafe, consistent with the sepolia fix in #1402. - src/addresses.toml: DeputyPauseModule (eth): 0x126a736B18E0a64fBA19D421647A530E327E112C (wrong) → 0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754 (current mainnet DPM) - src/tasks/eth/052-deputy-pause-key-rotation/README.md: DPM reference updated; signing safe switched from [FoundationOperationsSafe](0x9BA6e03D...) → [FoundationUpgradeSafe](0x847B5c17...). - src/tasks/eth/052-deputy-pause-key-rotation/config.toml: [stateOverrides] target switched from 0x9BA6e03D... → 0x847B5c17.... - src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md: State-override section, state-change section, labels, and lowercase/mixed-case addresses updated to reference the FoundationUpgradeSafe and the current DPM 0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754. Follow-up required before this task can be signed: - `newDeputySignature` in config.toml was signed against the old DPM's domain separator; regenerate against 0x76fC2F97... (e.g. with `just auth-sig 0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754` in Superchain-pause-execution). - The nonce value (118 → 119) in config.toml + VALIDATION.md is the FoS nonce; replace with the FoundationUpgradeSafe's current nonce on mainnet before signing. - Domain Hash + Message Hash in VALIDATION.md must be recomputed once the new signature is in place. --- src/addresses.toml | 2 +- src/tasks/eth/052-deputy-pause-key-rotation/README.md | 6 +++--- .../eth/052-deputy-pause-key-rotation/VALIDATION.md | 10 +++++----- .../eth/052-deputy-pause-key-rotation/config.toml | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/addresses.toml b/src/addresses.toml index 7b796ca97..b66cca90c 100644 --- a/src/addresses.toml +++ b/src/addresses.toml @@ -2,7 +2,7 @@ SuperchainConfig = "0x95703e0982140D16f8ebA6d158FccEde42f04a4C" ProtocolVersions = "0x8062AbC286f5e7D9428a0Ccb9AbD71e50d93b935" # Cannot be found by chain discovery in SuperchainAddressRegistry.sol DeputyGuardianModule = "0xc6901F65369FC59fC1B4D6D6bE7A2318Ff38dB5B" -DeputyPauseModule = "0x126a736B18E0a64fBA19D421647A530E327E112C" +DeputyPauseModule = "0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754" FoundationUpgradeSafe = "0x847B5c174615B1B7fDF770882256e2D3E95b9D92" SecurityCouncil = "0xc2819DC788505Aac350142A7A707BF9D03E3Bd03" LivenessGuard = "0x24424336F04440b1c28685a38303aC33C9D14a25" # LivenessGuard on security council diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/README.md b/src/tasks/eth/052-deputy-pause-key-rotation/README.md index ff288da5c..ee2ca307a 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/README.md +++ b/src/tasks/eth/052-deputy-pause-key-rotation/README.md @@ -5,7 +5,7 @@ Status: READY TO SIGN ## Objective Rotates the `DeputyPauseModule` Deputy EOA from `0x352f1defb49718e7ea411687e850aa8d6299f7ac` to `0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c`. -To achieve this, we will use the `setDeputy` function of the `DeputyPauseModule` contract deployed at `0x126a736B18E0a64fBA19D421647A530E327E112C`. +To achieve this, we will use the `setDeputy` function of the `DeputyPauseModule` contract deployed at `0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754`. ## Simulation @@ -19,8 +19,8 @@ Please see the instructions for [validation](./VALIDATION.md). ## Execution -Rotates the `DeputyPauseModule` Deputy EOA from `0x352f1defb49718e7ea411687e850aa8d6299f7ac` to `0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c` in the [DeputyPauseModule](https://etherscan.io/address/0x126a736B18E0a64fBA19D421647A530E327E112C#code). +Rotates the `DeputyPauseModule` Deputy EOA from `0x352f1defb49718e7ea411687e850aa8d6299f7ac` to `0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c` in the [DeputyPauseModule](https://etherscan.io/address/0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754#code). ## Signing and execution -This task has to be signed by the [FoundationOperationsSafe](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A). +This task has to be signed by the [FoundationUpgradeSafe](https://etherscan.io/address/0x847B5c174615B1B7fDF770882256e2D3E95b9D92). diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md b/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md index 67025ad17..3518e9f55 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md +++ b/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md @@ -23,11 +23,11 @@ For each contract listed in the state diff, please verify that no contracts or s The following state overrides should be seen: -### `0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A` (The Optimism Foundation Operations Safe) +### `0x847B5c174615B1B7fDF770882256e2D3E95b9D92` (The Optimism Foundation Upgrade Safe) Links: -- [Etherscan](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A) +- [Etherscan](https://etherscan.io/address/0x847B5c174615B1B7fDF770882256e2D3E95b9D92) Enables the simulation by setting the threshold to 1: @@ -36,7 +36,7 @@ Enables the simulation by setting the threshold to 1: ## State Changes -### `0x9ba6e03d8b90de867373db8cf1a58d2f7f006b3a` (Foundation Operations Safe) +### `0x847b5c174615b1b7fdf770882256e2d3e95b9d92` (Foundation Upgrade Safe) - **Key:** `0x0000000000000000000000000000000000000000000000000000000000000005` - **Decoded Kind:** `uint256` @@ -45,11 +45,11 @@ Enables the simulation by setting the threshold to 1: - **Summary:** nonce - **Detail:** -This updates the nonce of the Foundation Operations Safe. +This updates the nonce of the Foundation Upgrade Safe. --- -### `0x126a736b18e0a64fba19d421647a530e327e112c` (DeputyPauseModule) +### `0x76fc2f971fb355d0453cf9f64d3f9e4f640e1754` (DeputyPauseModule) - **Key:** `0x0000000000000000000000000000000000000000000000000000000000000002` - **Before:** `0x000000000000000000000000352f1defb49718e7ea411687e850aa8d6299f7ac` diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml index 50c750879..7953fda97 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml +++ b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml @@ -7,6 +7,6 @@ newDeputySignature = "0x9f1c36e3cfcc19c4e2349600477d1cd782856d62c520b4f6295f7922 [stateOverrides] # Nonce override for simulation (storage slot 0x5 is the nonce) -0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A = [ +0x847B5c174615B1B7fDF770882256e2D3E95b9D92 = [ {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 118} ] From 1ea27edbee790edaf634340a7dfabc102bb5c796 Mon Sep 17 00:00:00 2001 From: ethnical Date: Wed, 22 Apr 2026 23:18:17 -0300 Subject: [PATCH 03/17] override Safes --- src/tasks/eth/052-deputy-pause-key-rotation/config.toml | 1 + src/template/DeputyPauseKeyRotationTemplate.sol | 5 ----- .../example/sep/007-deputy-pause-key-rotation/config.toml | 2 ++ 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml index 7953fda97..7dfaf1789 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml +++ b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml @@ -5,6 +5,7 @@ newDeputy = "0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c" newDeputySignature = "0x9f1c36e3cfcc19c4e2349600477d1cd782856d62c520b4f6295f7922fe333b91772a4949015fe38ce61f34353967d0b2c33126793b7609d4227189fa828db2271c" +safeAddressString = "FoundationUpgradeSafe" # Override the template that is use the FOS [stateOverrides] # Nonce override for simulation (storage slot 0x5 is the nonce) 0x847B5c174615B1B7fDF770882256e2D3E95b9D92 = [ diff --git a/src/template/DeputyPauseKeyRotationTemplate.sol b/src/template/DeputyPauseKeyRotationTemplate.sol index 9f27c97fb..57fa22789 100644 --- a/src/template/DeputyPauseKeyRotationTemplate.sol +++ b/src/template/DeputyPauseKeyRotationTemplate.sol @@ -16,11 +16,6 @@ contract DeputyPauseKeyRotationTemplate is SimpleTaskBase { address newDeputy; bytes newDeputySignature; - /// @notice Returns the string identifier for the safe executing this transaction. - function safeAddressString() public pure override returns (string memory) { - return "FoundationOperationsSafe"; - } - /// @notice Returns string identifiers for addresses that are expected to have their storage written to. function _taskStorageWrites() internal pure override returns (string[] memory) { string[] memory storageWrites = new string[](2); diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index 253cdb984..fe9203064 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -4,3 +4,5 @@ templateName = "DeputyPauseKeyRotationTemplate" newDeputy = "0x6A07d585eddBa8F9A4E17587F4Ea5378De1c3bAc" newDeputySignature = "0x3efc7828dc57f2137dbca8cfe74deb05a707ef8b0f62d4c67321dda5ac09c5ee7597bf41708c4cefbae0697a8455165ef7c61fc1ebcf23dad72669253723b3da1b" +safeAddressString = "FoundationOperationSafe" # On sepolia the Foundation Operation Safe is use instead of the Foundation Upgrade Safe on mainnet so we can override here + From ea8fa2ab8a406f303cfbe6f19999305511fa1ae3 Mon Sep 17 00:00:00 2001 From: ethnical Date: Wed, 22 Apr 2026 23:22:00 -0300 Subject: [PATCH 04/17] bump: correct signature for the new Deputy --- .../tasks/example/sep/007-deputy-pause-key-rotation/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index fe9203064..a80816aee 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -3,6 +3,6 @@ templateName = "DeputyPauseKeyRotationTemplate" newDeputy = "0x6A07d585eddBa8F9A4E17587F4Ea5378De1c3bAc" -newDeputySignature = "0x3efc7828dc57f2137dbca8cfe74deb05a707ef8b0f62d4c67321dda5ac09c5ee7597bf41708c4cefbae0697a8455165ef7c61fc1ebcf23dad72669253723b3da1b" +newDeputySignature = "0xbfa0011dc0b49416bc4f84fe477d0c059b2871f46e2e186e1fd5172c1cf67940384f8b0944dcf5c88673b5c80c51a38f55c39500afa24896eafc285f8a891a221c" safeAddressString = "FoundationOperationSafe" # On sepolia the Foundation Operation Safe is use instead of the Foundation Upgrade Safe on mainnet so we can override here From 5671ff9a88e56fcd03c71eace3e7efae2a6df457 Mon Sep 17 00:00:00 2001 From: ethnical Date: Wed, 22 Apr 2026 23:23:46 -0300 Subject: [PATCH 05/17] chore: fix the template --- .../DeputyPauseKeyRotationTemplate.sol | 64 ++++++++++++++++--- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/src/template/DeputyPauseKeyRotationTemplate.sol b/src/template/DeputyPauseKeyRotationTemplate.sol index 57fa22789..54f28ff3b 100644 --- a/src/template/DeputyPauseKeyRotationTemplate.sol +++ b/src/template/DeputyPauseKeyRotationTemplate.sol @@ -16,8 +16,21 @@ contract DeputyPauseKeyRotationTemplate is SimpleTaskBase { address newDeputy; bytes newDeputySignature; + /// @notice Safe address string identifier + string _safeAddressString; + + /// @notice Returns the safe address string identifier + function safeAddressString() public view override returns (string memory) { + return _safeAddressString; + } + /// @notice Returns string identifiers for addresses that are expected to have their storage written to. - function _taskStorageWrites() internal pure override returns (string[] memory) { + function _taskStorageWrites() + internal + pure + override + returns (string[] memory) + { string[] memory storageWrites = new string[](2); storageWrites[0] = "DeputyPauseModule"; storageWrites[1] = safeAddressString(); @@ -25,7 +38,10 @@ contract DeputyPauseKeyRotationTemplate is SimpleTaskBase { } /// @notice Sets up the template with implementation configurations from a TOML file. - function _templateSetup(string memory taskConfigFilePath, address rootSafe) internal override { + function _templateSetup( + string memory taskConfigFilePath, + address rootSafe + ) internal override { super._templateSetup(taskConfigFilePath, rootSafe); string memory file = vm.readFile(taskConfigFilePath); @@ -38,33 +54,61 @@ contract DeputyPauseKeyRotationTemplate is SimpleTaskBase { /// @notice Write the calls that you want to execute for the task. function _build(address) internal override { // Load the DeputyPauseModule contract. - IDeputyPauseModule dpm = IDeputyPauseModule(simpleAddrRegistry.get("DeputyPauseModule")); + IDeputyPauseModule dpm = IDeputyPauseModule( + simpleAddrRegistry.get("DeputyPauseModule") + ); // 1. In the future task we need to check that the DeputyPauseModule address is the one that is enabled in the foundation safe since in U13 task we will execute this task before activation this is different. // assertEq(fos.enabledmodule(address(dpm)), true, "ERR100: DeputyPauseModule is should be enabled"); // 2. Check that the input are valid. - assertNotEq(dpm.deputy(), address(0), "ERR101: DeputyPauseModule should have already a deputy set in the past."); - assertNotEq(dpm.deputy(), newDeputy, "ERR102: DeputyPauseModule should have a new deputy"); + assertNotEq( + dpm.deputy(), + address(0), + "ERR101: DeputyPauseModule should have already a deputy set in the past." + ); + assertNotEq( + dpm.deputy(), + newDeputy, + "ERR102: DeputyPauseModule should have a new deputy" + ); // Check that the rotation signature is valid // The signature should be created by the new_deputy address over their own address // using EIP-712 typed data with the message format "DeputyAuthMessage(address deputy)" - require(newDeputySignature.length == 65, "ERR104: Invalid signature length"); + require( + newDeputySignature.length == 65, + "ERR104: Invalid signature length" + ); // 3. Rotate the new deputy and signature. dpm.setDeputy(newDeputy, newDeputySignature); } /// @notice This method performs all validations and assertions that verify the calls executed as expected. - function _validate(VmSafe.AccountAccess[] memory, Action[] memory, address) internal view override { - IDeputyPauseModule dpm = IDeputyPauseModule(simpleAddrRegistry.get("DeputyPauseModule")); - assertEq(dpm.deputy(), newDeputy, "ERR103: DeputyPauseModule should have a the new deputy set"); + function _validate( + VmSafe.AccountAccess[] memory, + Action[] memory, + address + ) internal view override { + IDeputyPauseModule dpm = IDeputyPauseModule( + simpleAddrRegistry.get("DeputyPauseModule") + ); + assertEq( + dpm.deputy(), + newDeputy, + "ERR103: DeputyPauseModule should have a the new deputy set" + ); // check the foundation has the DPM enabled. // assertEq(fos.enabledmodule(address(dpm)), true, "ERR100: DeputyPauseModule is should be enabled"); } /// @notice Override to return a list of addresses that should not be checked for code length. - function _getCodeExceptions() internal view override returns (address[] memory) { + function _getCodeExceptions() + internal + view + override + returns (address[] memory) + { address[] memory codeExceptions = new address[](1); codeExceptions[0] = newDeputy; return codeExceptions; From 44e1228aaa05e7042fe6601f39a145b3277a50bf Mon Sep 17 00:00:00 2001 From: ethnical Date: Wed, 22 Apr 2026 23:27:17 -0300 Subject: [PATCH 06/17] push --- src/template/DeputyPauseKeyRotationTemplate.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/template/DeputyPauseKeyRotationTemplate.sol b/src/template/DeputyPauseKeyRotationTemplate.sol index 54f28ff3b..5cec305b0 100644 --- a/src/template/DeputyPauseKeyRotationTemplate.sol +++ b/src/template/DeputyPauseKeyRotationTemplate.sol @@ -27,7 +27,7 @@ contract DeputyPauseKeyRotationTemplate is SimpleTaskBase { /// @notice Returns string identifiers for addresses that are expected to have their storage written to. function _taskStorageWrites() internal - pure + view override returns (string[] memory) { From af48881b45f39069b6f43a45917e9c8e42113e99 Mon Sep 17 00:00:00 2001 From: ethnical Date: Wed, 22 Apr 2026 23:35:58 -0300 Subject: [PATCH 07/17] fix(eth/052): route rotation through FoundationUpgradeSafe via config override MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set safeAddressString = "FoundationUpgradeSafe" in config.toml. The framework (MultisigTask.loadSafeAddressString) picks this up and overrides the template's hardcoded "FoundationOperationsSafe" — no template edit needed. Sepolia keeps the default FOS; Mainnet routes through FuS as required. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/tasks/eth/052-deputy-pause-key-rotation/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml index 7dfaf1789..3700d1167 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml +++ b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml @@ -1,11 +1,11 @@ l2chains = [{name = "OP Mainnet", chainId = 10}] templateName = "DeputyPauseKeyRotationTemplate" +safeAddressString = "FoundationUpgradeSafe" # Override: template defaults to FoundationOperationsSafe (Sepolia); Mainnet rotation is executed by FuS. newDeputy = "0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c" newDeputySignature = "0x9f1c36e3cfcc19c4e2349600477d1cd782856d62c520b4f6295f7922fe333b91772a4949015fe38ce61f34353967d0b2c33126793b7609d4227189fa828db2271c" -safeAddressString = "FoundationUpgradeSafe" # Override the template that is use the FOS [stateOverrides] # Nonce override for simulation (storage slot 0x5 is the nonce) 0x847B5c174615B1B7fDF770882256e2D3E95b9D92 = [ From ebd2fa13f70fd4df48aef2c80945f4ae9741ff8b Mon Sep 17 00:00:00 2001 From: ethnical Date: Wed, 22 Apr 2026 23:44:25 -0300 Subject: [PATCH 08/17] fix(eth/052): restore template, fix sep test safe identifier typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Earlier branch commits (1ea27edb, 5671ff9a) added an empty state variable _safeAddressString to DeputyPauseKeyRotationTemplate.sol and returned it from safeAddressString(). But _templateSetup never populated it, so _taskStorageWrites() pushed "" into allowedStorageKeys, causing SimpleAddressRegistry.get("") to revert during simulation. The template never needed to change — MultisigTask.loadSafeAddressString already reads .safeAddressString from config.toml and overrides the template's hardcoded return. Restored template to match origin/main (hardcodes "FoundationUpgradeSafe", the mainnet default). Mainnet task config keeps its explicit safeAddressString override for readability even though it matches the template default. Also fixed a typo in the sep test config: "FoundationOperationSafe" (missing s) → "FoundationOperationsSafe" — this is the canonical identifier in addresses.toml. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../DeputyPauseKeyRotationTemplate.sol | 65 ++++--------------- .../007-deputy-pause-key-rotation/config.toml | 2 +- 2 files changed, 14 insertions(+), 53 deletions(-) diff --git a/src/template/DeputyPauseKeyRotationTemplate.sol b/src/template/DeputyPauseKeyRotationTemplate.sol index 5cec305b0..a6812e584 100644 --- a/src/template/DeputyPauseKeyRotationTemplate.sol +++ b/src/template/DeputyPauseKeyRotationTemplate.sol @@ -16,21 +16,13 @@ contract DeputyPauseKeyRotationTemplate is SimpleTaskBase { address newDeputy; bytes newDeputySignature; - /// @notice Safe address string identifier - string _safeAddressString; - - /// @notice Returns the safe address string identifier - function safeAddressString() public view override returns (string memory) { - return _safeAddressString; + /// @notice Returns the string identifier for the safe executing this transaction. + function safeAddressString() public pure override returns (string memory) { + return "FoundationUpgradeSafe"; } /// @notice Returns string identifiers for addresses that are expected to have their storage written to. - function _taskStorageWrites() - internal - view - override - returns (string[] memory) - { + function _taskStorageWrites() internal pure override returns (string[] memory) { string[] memory storageWrites = new string[](2); storageWrites[0] = "DeputyPauseModule"; storageWrites[1] = safeAddressString(); @@ -38,10 +30,7 @@ contract DeputyPauseKeyRotationTemplate is SimpleTaskBase { } /// @notice Sets up the template with implementation configurations from a TOML file. - function _templateSetup( - string memory taskConfigFilePath, - address rootSafe - ) internal override { + function _templateSetup(string memory taskConfigFilePath, address rootSafe) internal override { super._templateSetup(taskConfigFilePath, rootSafe); string memory file = vm.readFile(taskConfigFilePath); @@ -54,61 +43,33 @@ contract DeputyPauseKeyRotationTemplate is SimpleTaskBase { /// @notice Write the calls that you want to execute for the task. function _build(address) internal override { // Load the DeputyPauseModule contract. - IDeputyPauseModule dpm = IDeputyPauseModule( - simpleAddrRegistry.get("DeputyPauseModule") - ); + IDeputyPauseModule dpm = IDeputyPauseModule(simpleAddrRegistry.get("DeputyPauseModule")); // 1. In the future task we need to check that the DeputyPauseModule address is the one that is enabled in the foundation safe since in U13 task we will execute this task before activation this is different. // assertEq(fos.enabledmodule(address(dpm)), true, "ERR100: DeputyPauseModule is should be enabled"); // 2. Check that the input are valid. - assertNotEq( - dpm.deputy(), - address(0), - "ERR101: DeputyPauseModule should have already a deputy set in the past." - ); - assertNotEq( - dpm.deputy(), - newDeputy, - "ERR102: DeputyPauseModule should have a new deputy" - ); + assertNotEq(dpm.deputy(), address(0), "ERR101: DeputyPauseModule should have already a deputy set in the past."); + assertNotEq(dpm.deputy(), newDeputy, "ERR102: DeputyPauseModule should have a new deputy"); // Check that the rotation signature is valid // The signature should be created by the new_deputy address over their own address // using EIP-712 typed data with the message format "DeputyAuthMessage(address deputy)" - require( - newDeputySignature.length == 65, - "ERR104: Invalid signature length" - ); + require(newDeputySignature.length == 65, "ERR104: Invalid signature length"); // 3. Rotate the new deputy and signature. dpm.setDeputy(newDeputy, newDeputySignature); } /// @notice This method performs all validations and assertions that verify the calls executed as expected. - function _validate( - VmSafe.AccountAccess[] memory, - Action[] memory, - address - ) internal view override { - IDeputyPauseModule dpm = IDeputyPauseModule( - simpleAddrRegistry.get("DeputyPauseModule") - ); - assertEq( - dpm.deputy(), - newDeputy, - "ERR103: DeputyPauseModule should have a the new deputy set" - ); + function _validate(VmSafe.AccountAccess[] memory, Action[] memory, address) internal view override { + IDeputyPauseModule dpm = IDeputyPauseModule(simpleAddrRegistry.get("DeputyPauseModule")); + assertEq(dpm.deputy(), newDeputy, "ERR103: DeputyPauseModule should have a the new deputy set"); // check the foundation has the DPM enabled. // assertEq(fos.enabledmodule(address(dpm)), true, "ERR100: DeputyPauseModule is should be enabled"); } /// @notice Override to return a list of addresses that should not be checked for code length. - function _getCodeExceptions() - internal - view - override - returns (address[] memory) - { + function _getCodeExceptions() internal view override returns (address[] memory) { address[] memory codeExceptions = new address[](1); codeExceptions[0] = newDeputy; return codeExceptions; diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index a80816aee..f5e73ff86 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -4,5 +4,5 @@ templateName = "DeputyPauseKeyRotationTemplate" newDeputy = "0x6A07d585eddBa8F9A4E17587F4Ea5378De1c3bAc" newDeputySignature = "0xbfa0011dc0b49416bc4f84fe477d0c059b2871f46e2e186e1fd5172c1cf67940384f8b0944dcf5c88673b5c80c51a38f55c39500afa24896eafc285f8a891a221c" -safeAddressString = "FoundationOperationSafe" # On sepolia the Foundation Operation Safe is use instead of the Foundation Upgrade Safe on mainnet so we can override here +safeAddressString = "FoundationOperationsSafe" # Sepolia signs this rotation with FOS; mainnet (default in template) uses FuS. From 9f3ea30360faea6702a003d41fa1bfab386b4559 Mon Sep 17 00:00:00 2001 From: ethnical Date: Wed, 22 Apr 2026 23:55:30 -0300 Subject: [PATCH 09/17] chore(eth/052): update deputy signature and EIP-712 hashes Post-rebuild: new deputy signature and corresponding domain/message hashes from the FuS-signed rotation. Concatenated EIP-712 preimage verified: 0x1901 | a4a9c312...b732672 | 172732de...23306cc Co-Authored-By: Claude Opus 4.7 (1M context) --- src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md | 4 ++-- src/tasks/eth/052-deputy-pause-key-rotation/config.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md b/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md index 3518e9f55..b76a555d0 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md +++ b/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md @@ -16,8 +16,8 @@ For each contract listed in the state diff, please verify that no contracts or s > > ### Optimism Foundation > -> Domain Hash: 0x2e5ad244d335c45fbace4ebd1736b0fad81b01591a2819baedad311ead5bce76 -> Message Hash: 0xbb9508edc2cb54922dfdbd999b50b95622aa8be4475159ceb3d4a6306241f192 +> Domain Hash: 0xa4a9c312badf3fcaa05eafe5dc9bee8bd9316c78ee8b0bebe3115bb21b732672 +> Message Hash: 0x172732ded2946632e172146b24eb6c790a9d5572adaca9b430380800c23306cc ## State Overrides diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml index 3700d1167..a862c8aa0 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml +++ b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml @@ -4,7 +4,7 @@ safeAddressString = "FoundationUpgradeSafe" # Override: template defaults to Fo newDeputy = "0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c" -newDeputySignature = "0x9f1c36e3cfcc19c4e2349600477d1cd782856d62c520b4f6295f7922fe333b91772a4949015fe38ce61f34353967d0b2c33126793b7609d4227189fa828db2271c" +newDeputySignature = "0xbfa0011dc0b49416bc4f84fe477d0c059b2871f46e2e186e1fd5172c1cf67940384f8b0944dcf5c88673b5c80c51a38f55c39500afa24896eafc285f8a891a221c" [stateOverrides] # Nonce override for simulation (storage slot 0x5 is the nonce) From 746933368244629d42df7dab87817cdc1c11e3f1 Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 23 Apr 2026 00:16:08 -0300 Subject: [PATCH 10/17] fix(test/sep/007): restore original deputy signature for regression test Commit ea8fa2ab ("bump: correct signature for the new Deputy") overwrote the sepolia test fixture's signature with the mainnet FuS signature by mistake. The regression test testRegressionCallDataMatches_DeputyPauseKeyRotationTemplate pins block 8092613 and asserts calldata that embeds the original FOS-signed 0x3efc7828...1b signature, so any other value breaks the calldata check. Restoring the canonical sepolia signature (same one in the executed sep/009 production task). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../tasks/example/sep/007-deputy-pause-key-rotation/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index f5e73ff86..2f0e42ef2 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -3,6 +3,6 @@ templateName = "DeputyPauseKeyRotationTemplate" newDeputy = "0x6A07d585eddBa8F9A4E17587F4Ea5378De1c3bAc" -newDeputySignature = "0xbfa0011dc0b49416bc4f84fe477d0c059b2871f46e2e186e1fd5172c1cf67940384f8b0944dcf5c88673b5c80c51a38f55c39500afa24896eafc285f8a891a221c" +newDeputySignature = "0x3efc7828dc57f2137dbca8cfe74deb05a707ef8b0f62d4c67321dda5ac09c5ee7597bf41708c4cefbae0697a8455165ef7c61fc1ebcf23dad72669253723b3da1b" safeAddressString = "FoundationOperationsSafe" # Sepolia signs this rotation with FOS; mainnet (default in template) uses FuS. From e38d8d318e7b48195d1c1b109a1aba43e2810720 Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 23 Apr 2026 00:21:30 -0300 Subject: [PATCH 11/17] fix sig --- .../tasks/example/sep/007-deputy-pause-key-rotation/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index 2f0e42ef2..efc3bad86 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -3,6 +3,6 @@ templateName = "DeputyPauseKeyRotationTemplate" newDeputy = "0x6A07d585eddBa8F9A4E17587F4Ea5378De1c3bAc" -newDeputySignature = "0x3efc7828dc57f2137dbca8cfe74deb05a707ef8b0f62d4c67321dda5ac09c5ee7597bf41708c4cefbae0697a8455165ef7c61fc1ebcf23dad72669253723b3da1b" +newDeputySignature = "0x9c993717c629503892a2779150447a39cd8d1a28d6439a2d4fa7c49a32f4be941cbf0730ffdb5366dcebf3c7fdb1757e08724caab6404e8519df8abf728ba4ca1c" safeAddressString = "FoundationOperationsSafe" # Sepolia signs this rotation with FOS; mainnet (default in template) uses FuS. From 7ff92aceb9697ebd1fb9bd61c3a660718a745951 Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 23 Apr 2026 00:23:36 -0300 Subject: [PATCH 12/17] chore: update the fork block with the correct block --- test/tasks/example/sep/007-deputy-pause-key-rotation/.env | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/.env b/test/tasks/example/sep/007-deputy-pause-key-rotation/.env index 6b8fafd5f..3fad53395 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/.env +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/.env @@ -1,2 +1,3 @@ -FORK_BLOCK_NUMBER=8092613 +FORK_BLOCK_NUMBER=10711555 + From 076c57d56b711d6daf6096eb85810d849e4097b3 Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 23 Apr 2026 12:06:03 -0300 Subject: [PATCH 13/17] chore: add space? --- test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index efc3bad86..4338d03cc 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -4,5 +4,6 @@ templateName = "DeputyPauseKeyRotationTemplate" newDeputy = "0x6A07d585eddBa8F9A4E17587F4Ea5378De1c3bAc" newDeputySignature = "0x9c993717c629503892a2779150447a39cd8d1a28d6439a2d4fa7c49a32f4be941cbf0730ffdb5366dcebf3c7fdb1757e08724caab6404e8519df8abf728ba4ca1c" + safeAddressString = "FoundationOperationsSafe" # Sepolia signs this rotation with FOS; mainnet (default in template) uses FuS. From 16152651edcbed9b9853a36654a2a247a7bc38db Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 23 Apr 2026 12:06:30 -0300 Subject: [PATCH 14/17] remove duplicates --- .../tasks/example/sep/007-deputy-pause-key-rotation/config.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index 34b6b6cec..400d56fbe 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -9,6 +9,4 @@ newDeputy = "0x8D2AAe4009418Ef6D83F1F2c90D4dAc3cE2b5D4f" newDeputySignature = "0x9c993717c629503892a2779150447a39cd8d1a28d6439a2d4fa7c49a32f4be941cbf0730ffdb5366dcebf3c7fdb1757e08724caab6404e8519df8abf728ba4ca1c" -newDeputySignature = "0x9c993717c629503892a2779150447a39cd8d1a28d6439a2d4fa7c49a32f4be941cbf0730ffdb5366dcebf3c7fdb1757e08724caab6404e8519df8abf728ba4ca1c" - safeAddressString = "FoundationOperationsSafe" # Sepolia signs this rotation with FOS; mainnet (default in template) uses FuS. From 5058f5d3a81b94279776432de31561977ad84500 Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 23 Apr 2026 12:33:56 -0300 Subject: [PATCH 15/17] chore: updtate with the correct safes --- .../tasks/example/sep/007-deputy-pause-key-rotation/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index 400d56fbe..c1e58b370 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -9,4 +9,4 @@ newDeputy = "0x8D2AAe4009418Ef6D83F1F2c90D4dAc3cE2b5D4f" newDeputySignature = "0x9c993717c629503892a2779150447a39cd8d1a28d6439a2d4fa7c49a32f4be941cbf0730ffdb5366dcebf3c7fdb1757e08724caab6404e8519df8abf728ba4ca1c" -safeAddressString = "FoundationOperationsSafe" # Sepolia signs this rotation with FOS; mainnet (default in template) uses FuS. +safeAddressString = "FoundationUpgradeSafe" # Sepolia signs this rotation with FOS; mainnet (default in template) uses FuS. From a4b713ea096840f4fcb8d6a30f1006f064d018e2 Mon Sep 17 00:00:00 2001 From: ethnical Date: Thu, 23 Apr 2026 12:37:54 -0300 Subject: [PATCH 16/17] chore: remove comments --- .../tasks/example/sep/007-deputy-pause-key-rotation/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml index c1e58b370..a8f10cd19 100644 --- a/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml +++ b/test/tasks/example/sep/007-deputy-pause-key-rotation/config.toml @@ -9,4 +9,4 @@ newDeputy = "0x8D2AAe4009418Ef6D83F1F2c90D4dAc3cE2b5D4f" newDeputySignature = "0x9c993717c629503892a2779150447a39cd8d1a28d6439a2d4fa7c49a32f4be941cbf0730ffdb5366dcebf3c7fdb1757e08724caab6404e8519df8abf728ba4ca1c" -safeAddressString = "FoundationUpgradeSafe" # Sepolia signs this rotation with FOS; mainnet (default in template) uses FuS. +safeAddressString = "FoundationUpgradeSafe" From 9d72a2c2e108c6b9775b0f3b2004c3c427d0ddbb Mon Sep 17 00:00:00 2001 From: ethnical Date: Mon, 27 Apr 2026 18:44:21 -0300 Subject: [PATCH 17/17] chore: fix datahash + nonce to 56 --- src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md | 6 +++--- src/tasks/eth/052-deputy-pause-key-rotation/config.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md b/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md index b76a555d0..e523681f0 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md +++ b/src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md @@ -17,7 +17,7 @@ For each contract listed in the state diff, please verify that no contracts or s > ### Optimism Foundation > > Domain Hash: 0xa4a9c312badf3fcaa05eafe5dc9bee8bd9316c78ee8b0bebe3115bb21b732672 -> Message Hash: 0x172732ded2946632e172146b24eb6c790a9d5572adaca9b430380800c23306cc +> Message Hash: 0xf160ce7b15fe3f530b5ae9b9e471e5ed61dbdf9beea90244fea03266f0ecb54e ## State Overrides @@ -40,8 +40,8 @@ Enables the simulation by setting the threshold to 1: - **Key:** `0x0000000000000000000000000000000000000000000000000000000000000005` - **Decoded Kind:** `uint256` - - **Before:** `118` - - **After:** `119` + - **Before:** `56` + - **After:** `57` - **Summary:** nonce - **Detail:** diff --git a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml index a862c8aa0..31715c133 100644 --- a/src/tasks/eth/052-deputy-pause-key-rotation/config.toml +++ b/src/tasks/eth/052-deputy-pause-key-rotation/config.toml @@ -9,5 +9,5 @@ newDeputySignature = "0xbfa0011dc0b49416bc4f84fe477d0c059b2871f46e2e186e1fd5172c [stateOverrides] # Nonce override for simulation (storage slot 0x5 is the nonce) 0x847B5c174615B1B7fDF770882256e2D3E95b9D92 = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 118} + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 56} ]