Skip to content
1 change: 1 addition & 0 deletions src/tasks/sep/039-U17-sep-op-sony/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
TENDERLY_GAS=16700000
21 changes: 21 additions & 0 deletions src/tasks/sep/039-U17-sep-op-sony/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 039-U17-sep-op-sony

Status: [READY TO SIGN]

## Objective

This task upgrades OP and Soneium Minato Sepolia to U17.

## Simulation & Signing

Simulation commands for each safe:
```bash
cd src/tasks/sep/039-U17-sep-op-sony
SIMULATE_WITHOUT_LEDGER=1 just --dotenv-path $(pwd)/.env simulate <council|foundation>
```

Signing commands for each safe:
```bash
cd src/tasks/sep/039-U17-sep-op-sony
just --dotenv-path $(pwd)/.env sign <council|foundation>
```
29 changes: 29 additions & 0 deletions src/tasks/sep/039-U17-sep-op-sony/VALIDATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Validation

This document can be used to validate the inputs and result of the execution of the upgrade transaction which you are
signing.

## Expected Domain and Message Hashes

Validate the domain and message hashes. These values should match both the values on your ledger and
the values printed to the terminal when you run the task.

> [!CAUTION]
>
> Before signing, ensure the below hashes match what is on your ledger.
>
> ### Security Council Safe (`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`)
>
> - Domain Hash: `0xbe081970e9fc104bd1ea27e375cd21ec7bb1eec56bfe43347c3e36c5d27b8533`
> - Message Hash: `0xeddf4f90ee497856c690c384e4916b37d6e44bbc387ae07c24fe24a7fd3a6018`
>
> ### Foundation Safe (`0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B`)
>
> - Domain Hash: `0x37e1f5dd3b92a004a23589b741196c8a214629d4ea3a690ec8e41ae45c689cbb`
> - Message Hash: `0xf30e8e1669d282f10288ae8706b22f081e492bd76fabc5bfe98752a82d1da899`

## Task Calldata

```
0x82ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000c69e4c24db479191676611a25d977203c3bdca62000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044b0b807eb000000000000000000000000c2be75506d5724086deb7245bd260cc9753911be000000000000000000000000189abaaaa82dfc015a588a7dbad6f13b1d3485bc00000000000000000000000000000000000000000000000000000000000000000000000000000000c69e4c24db479191676611a25d977203c3bdca62000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104ff2dd5a100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000034edd2a225f7f429a63e0f1d2084b9e0a93b538000000000000000000000000189abaaaa82dfc015a588a7dbad6f13b1d3485bc03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b0000000000000000000000004ca9608fef202216bc21d543798ec854539baad3000000000000000000000000ff9d236641962cebf9dbfb54e7b8e91f99f10db003caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b00000000000000000000000000000000000000000000000000000000
```
Comment thread
Wazabie marked this conversation as resolved.
38 changes: 38 additions & 0 deletions src/tasks/sep/039-U17-sep-op-sony/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
l2chains = [
{name = "OP Sepolia Testnet", chainId = 11155420},
{name = "Soneium Testnet Minato", chainId = 1946}
]

templateName = "OPCMUpgradeV500"


# OP Sepolia Testnet (Permissionless)
[[opcmUpgrades]]
chainId = 11155420
# Jovian prestate:
absolutePrestate = "0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b" # prestates."1.8.0-rc.4" https://github.com/ethereum-optimism/superchain-registry/blob/9e3f71cee0e4e2acb4864cb00f5fbee3555d8e9f/validation/standard/standard-prestates.toml#L6C7-L6C73
expectedValidationErrors = "OVERRIDES-L1PAOMULTISIG,OVERRIDES-CHALLENGER" # The template provides PAO and Challenger overrides to the validator from the SCR. These simply indicate overrides were used. PLDG-10 (missing Permissionless implementation) is expected as this is a permissioned chain.


# Soneium Testnet Minato (Permissioned)
[[opcmUpgrades]]
chainId = 1946
# Jovian prestate:
absolutePrestate = "0x03caa1871bb9fe7f9b11217c245c16e4ded33367df5b3ccb2c6d0a847a217d1b" # prestates."1.8.0-rc.4" https://github.com/ethereum-optimism/superchain-registry/blob/9e3f71cee0e4e2acb4864cb00f5fbee3555d8e9f/validation/standard/standard-prestates.toml#L6C7-L6C73
expectedValidationErrors = "OVERRIDES-L1PAOMULTISIG,OVERRIDES-CHALLENGER,PLDG-10" # The template provides PAO and Challenger overrides to the validator from the SCR. These simply indicate overrides were used. PLDG-10 (missing Permissionless implementation) is expected as this is a permissioned chain.


[addresses]
OPCM = "0xc69e4c24db479191676611a25d977203c3bdca62" # Source: https://github.com/ethereum-optimism/superchain-registry/blob/7380dcd87c000394e5528b237de0845779e8d6dd/validation/standard/standard-versions-sepolia.toml#L23


[stateOverrides]
0x1Eb2fFc903729a0F03966B917003800b145F56E2 = [ # L1PAO
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 38}
]
0xf64bc17485f0B4Ea5F06A96514182FC4cB561977 = [ # SC
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 50}
]
0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ # FUS
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 53}
Comment on lines +30 to +37
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The stateOverrides section modifies critical contract storage slots (nonce values) but lacks documentation explaining what these overrides do and why they are necessary. For robustness and safety, state overrides should be clearly documented with explanations of their purpose, as incorrect state modifications could lead to unexpected behavior or security vulnerabilities. Comments should explain that these appear to be nonce overrides and why specific nonce values are being set.

Suggested change
0x1Eb2fFc903729a0F03966B917003800b145F56E2 = [ # L1PAO
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 38}
]
0xf64bc17485f0B4Ea5F06A96514182FC4cB561977 = [ # SC
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 50}
]
0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ # FUS
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 53}
0x1Eb2fFc903729a0F03966B917003800b145F56E2 = [ # L1PAO
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 38} # Override the nonce value (storage slot 0x5) for the L1PAO contract - Setting nonce to 38 to match the expected state for this test scenario
]
0xf64bc17485f0B4Ea5F06A96514182FC4cB561977 = [ # SC
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 50} # Override the nonce value (storage slot 0x5) for the SC contract - Setting nonce to 50 to match the expected state for this test scenario
]
0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ # FUS
{key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 53} # Override the nonce value (storage slot 0x5) for the FUS contract - Setting nonce to 53 to match the expected state for this test scenario
]

Spotted by Graphite Agent (based on custom rule: Superchain Ops task/template review)

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

]