Open
Conversation
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 <tom@oplabs.co>
Member
|
Rebase and LGTM |
Ethnical
commented
Apr 22, 2026
| SuperchainConfig = "0x95703e0982140D16f8ebA6d158FccEde42f04a4C" | ||
| ProtocolVersions = "0x8062AbC286f5e7D9428a0Ccb9AbD71e50d93b935" # Cannot be found by chain discovery in SuperchainAddressRegistry.sol | ||
| DeputyGuardianModule = "0xc6901F65369FC59fC1B4D6D6bE7A2318Ff38dB5B" | ||
| DeputyPauseModule = "0x126a736B18E0a64fBA19D421647A530E327E112C" |
Contributor
Author
There was a problem hiding this comment.
DPM should be the instead -> 0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754
…radeSafe 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.
… override 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) <noreply@anthropic.com>
Earlier branch commits (1ea27ed, 5671ff9) 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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
Commit ea8fa2a ("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) <noreply@anthropic.com>
…eum-optimism/superchain-ops into feat/deputy-pause-key-rotation-eth
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Split from #1396 — this PR contains only the Mainnet deputy pause key rotation task, plus the
src/addresses.tomlentry it depends on.src/tasks/eth/052-deputy-pause-key-rotation/— rotatesDeputyPauseModuleDeputy EOA on OP Mainnet from0x352f1defb49718e7ea411687e850aa8d6299f7acto0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87cviasetDeputy()on the DeputyPauseModule at0x126a736B18E0a64fBA19D421647A530E327E112C.src/addresses.toml— registersDeputyPauseModuleunder[eth](sep already had its own entry).0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A).Sepolia counterpart: #1398. Recommended order: sign/execute sepolia first, confirm, then proceed with mainnet here.
Original PR: #1396 (to be closed once both splits land).
Authored by @JosepBove, split into separate PRs at review request.
Test plan
just simulate src/tasks/eth/052-deputy-pause-key-rotationand confirm the logs sayUsing script .../DeputyPauseKeyRotationTemplate.solVALIDATION.md:0x9ba6e03d8b90de867373db8cf1a58d2f7f006b3a(118 → 119)0x2on0x126a736b18e0a64fba19d421647a530e327e112cupdatedVALIDATION.md