Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/addresses.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
SuperchainConfig = "0x95703e0982140D16f8ebA6d158FccEde42f04a4C"
ProtocolVersions = "0x8062AbC286f5e7D9428a0Ccb9AbD71e50d93b935" # Cannot be found by chain discovery in SuperchainAddressRegistry.sol
DeputyGuardianModule = "0xc6901F65369FC59fC1B4D6D6bE7A2318Ff38dB5B"
DeputyPauseModule = "0x126a736B18E0a64fBA19D421647A530E327E112C"
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DPM should be the instead -> 0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754

FoundationUpgradeSafe = "0x847B5c174615B1B7fDF770882256e2D3E95b9D92"
SecurityCouncil = "0xc2819DC788505Aac350142A7A707BF9D03E3Bd03"
LivenessGuard = "0x24424336F04440b1c28685a38303aC33C9D14a25" # LivenessGuard on security council
Expand Down
26 changes: 26 additions & 0 deletions src/tasks/eth/052-deputy-pause-key-rotation/README.md
Original file line number Diff line number Diff line change
@@ -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).
60 changes: 60 additions & 0 deletions src/tasks/eth/052-deputy-pause-key-rotation/VALIDATION.md
Original file line number Diff line number Diff line change
@@ -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` <br/>
**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`.
12 changes: 12 additions & 0 deletions src/tasks/eth/052-deputy-pause-key-rotation/config.toml
Original file line number Diff line number Diff line change
@@ -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}
]