From 69a5e181d2343e7c940a2ba6a0682f9e7367917e Mon Sep 17 00:00:00 2001 From: Zak Ayesh <44901995+ZakAyesh@users.noreply.github.com> Date: Fri, 7 Nov 2025 00:09:55 -0300 Subject: [PATCH 01/16] feat:add worldchain sepolia key handback over task --- .../.env | 1 + .../README.md | 21 ++++ .../VALIDATION.md | 109 ++++++++++++++++++ .../config.toml | 8 ++ 4 files changed, 139 insertions(+) create mode 100644 src/tasks/sep/039-worldchain-l2pao-key-handback-over/.env create mode 100644 src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md create mode 100644 src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md create mode 100644 src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/.env b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/.env new file mode 100644 index 0000000000..fe89703585 --- /dev/null +++ b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/.env @@ -0,0 +1 @@ +TENDERLY_GAS=16700000 diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md new file mode 100644 index 0000000000..a554123339 --- /dev/null +++ b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md @@ -0,0 +1,21 @@ +# 039-worldchain-l2pao-key-handback-over + +Status: [DRAFT, NOT READY TO SIGN]() + +## Objective + +Transfer the L2 ProxyAdmin Owner for Worldchain Sepolia to Alchemy-controlled EOA. + +## Simulation & Signing + +Simulation commands for each safe: +```bash +cd src/tasks/sep/039-worldchain-l2pao-key-handback-over +SIMULATE_WITHOUT_LEDGER=1 SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env simulate +``` + +Signing commands for each safe: +```bash +cd src/tasks/sep/039-worldchain-l2pao-key-handback-over +SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env sign council +``` diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md new file mode 100644 index 0000000000..f99cf57c56 --- /dev/null +++ b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md @@ -0,0 +1,109 @@ +# Validation + +This document can be used to validate the inputs and result of the execution of the upgrade transaction which you are signing. + +The steps are: +1. [Validate the Domain and Message Hashes](#expected-domain-and-message-hashes) +2. [Verifying the state changes via the normalized state diff hash](#normalized-state-diff-hash-attestation) +3. [Verifying the transaction input](#understanding-task-calldata) +4. [Verifying the state changes](#task-state-changes) + +## Expected Domain and Message Hashes + +First, we need to 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. +> +> ### Worldchain Sepolia L2 Proxy Admin Owner (Unaliased) (`0x1Eb2fFc903729a0F03966B917003800b145F56E2`) +> +> - Domain Hash: `0xbe081970e9fc104bd1ea27e375cd21ec7bb1eec56bfe43347c3e36c5d27b8533` +> - Message Hash: `0xaaaccdbf1800e8718477851aa8b91ff9477e4ca5d80b2abd848a4e02ad3419a0` + +## Normalized State Diff Hash Attestation + +The normalized state diff hash **MUST** match the hash produced by the state changes attested to in the state diff audit report. As a signer, you are responsible for verifying that this hash is correct. Please compare the hash below with the one in the audit report. If no audit report is available for this task, you must still ensure that the normalized state diff hash matches the output in your terminal. + +**Normalized hash:** `0x569e75fc77c1a856f6daaf9e69d8a9566ca34aa47f9133711ce065a571af0cfd` + +## Understanding Task Calldata + +The transaction initiates a deposit transaction via the OptimismPortal on L1 Sepolia, which will be executed on L2 (Worldchain Sepolia) to transfer the L2 ProxyAdmin ownership to an EOA. + +### Decoding the depositTransaction call: +```bash +# The outer multicall to OptimismPortal +cast calldata-decode "depositTransaction(address,uint256,uint64,bool,bytes)" \ + 0xe9e05c42000000000000000000000000420000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041000000000000000000000000f64bc17485f0b4ea5f06a96514182fc4cb56197700000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000 +``` + +Returns: +- `_to`: `0x4200000000000000000000000000000000000018` (L2 ProxyAdmin predeploy) +- `_value`: `0` (no ETH sent) +- `_gasLimit`: `200000` (gas for L2 execution) +- `_isCreation`: `false` (not a contract creation) +- `_data`: `0xf2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a0` + +### Decoding the inner transferOwnership call: +```bash +cast calldata-decode "transferOwnership(address)" \ + 0xf2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a0 +``` + +Returns: +- `newOwnerEOA`: `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0` (the target EOA) + +# State Validations + +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. + +### State Overrides + +Note: The changes listed below do not include threshold, nonce and owner mapping overrides. These changes are listed and explained in the [SINGLE-VALIDATION.md](../../../../../SINGLE-VALIDATION.md) file. + +### Task State Changes + +--- + +### `0x1Eb2fFc903729a0F03966B917003800b145F56E2` ([Worldchain Sepolia ProxyAdminOwner](https://github.com/ethereum-optimism/superchain-registry/blob/1ff0df40c7602761c55ab2cb693614ca0382bd64/superchain/configs/sepolia/worldchain.toml#L44)) - Chain ID: 11155111 + +- **Key:** `0x0000000000000000000000000000000000000000000000000000000000000005` + - **Decoded Kind:** `uint256` + - **Before:** `0x0000000000000000000000000000000000000000000000000000000000000030` + - **After:** `0x0000000000000000000000000000000000000000000000000000000000000031` + - **Summary:** Safe nonce increment + - **Detail:** The nonce is incremented by 1 as the safe executes the transaction to initiate the L2 ProxyAdmin ownership transfer. + +--- + +### `0xff6eba109271fe6d4237eeed4bab1dd9a77dd1a4` ([OptimismPortal](https://sepolia.etherscan.io/address/0xff6eba109271fe6d4237eeed4bab1dd9a77dd1a4)) - Chain ID: 11155111 + +- **Key:** `0x0000000000000000000000000000000000000000000000000000000000000001` + - **Decoded Kind:** `struct ResourceMetering.ResourceParams` + - **Before:** `0x00000000008cc5de0000000000090a010000000000000000000000003b9aca00` + - **After:** `0x00000000008cc78a0000000000030d400000000000000000000000003b9aca00` + - **Summary:** Resource metering params update + - **Detail:** The OptimismPortal's resource metering parameters are updated as part of processing the deposit transaction. This is an expected side effect of calling `depositTransaction`. + +## Manual L2 Verification Steps + +After the L1 transaction is executed, you must verify that the L2 deposit transaction successfully transfers ownership: + +1. **Find the L2 deposit transaction**: Look for a transaction on Worldchain Sepolia from the L1 caller to the L2 ProxyAdmin at `0x4200000000000000000000000000000000000018`. + +2. **Verify the OwnershipTransferred event**: Confirm that the event shows: + - `previousOwner`: `0x2FC3ffc903729a0f03966b917003800B145F67F3` (aliased 2/2 safe) + - `newOwnerEOA`: `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0` (target EOA) + +3. **Verify final state**: Call `owner()` on the L2 ProxyAdmin to confirm it returns `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0`. + +```bash +# After L2 execution, verify the new owner +cast call 0x4200000000000000000000000000000000000018 "owner()(address)" --rpc-url worldchain-sepolia +# Should return: 0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0 +``` \ No newline at end of file diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml new file mode 100644 index 0000000000..bdc27f10e1 --- /dev/null +++ b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml @@ -0,0 +1,8 @@ +l2chains = [{name = "Worldchain Sepolia", chainId = 4801}] +templateName = "TransferL2PAOFromL1ToEOA" + +# The new owner address (EOA). See here https://www.notion.so/oplabs/Worldchain-key-handback-over-address-validation-272f153ee1628002bfa2e00a718c57d5?source=copy_link +newOwnerEOA = "0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0" + +[addresses] +ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" \ No newline at end of file From 12d2e35bf7804b5e97155183f10c548856fb6931 Mon Sep 17 00:00:00 2001 From: Zak Ayesh <44901995+ZakAyesh@users.noreply.github.com> Date: Fri, 7 Nov 2025 12:57:19 -0300 Subject: [PATCH 02/16] clean up worldchain key handback over task --- .../README.md | 4 +- .../VALIDATION.md | 43 +++++-------------- .../config.toml | 18 +++++++- 3 files changed, 29 insertions(+), 36 deletions(-) diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md index a554123339..c0b05cc160 100644 --- a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md +++ b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md @@ -11,11 +11,11 @@ Transfer the L2 ProxyAdmin Owner for Worldchain Sepolia to Alchemy-controlled EO Simulation commands for each safe: ```bash cd src/tasks/sep/039-worldchain-l2pao-key-handback-over -SIMULATE_WITHOUT_LEDGER=1 SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env simulate +SIMULATE_WITHOUT_LEDGER=1 SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env simulate ``` Signing commands for each safe: ```bash cd src/tasks/sep/039-worldchain-l2pao-key-handback-over -SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env sign council +SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env sign ``` diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md index f99cf57c56..b5c1f7194a 100644 --- a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md +++ b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md @@ -16,16 +16,20 @@ First, we need to validate the domain and message hashes. These values should ma > > Before signing, ensure the below hashes match what is on your ledger. > -> ### Worldchain Sepolia L2 Proxy Admin Owner (Unaliased) (`0x1Eb2fFc903729a0F03966B917003800b145F56E2`) +> ### Standard L2 Proxy Admin Owner (Unaliased) + ### Worldchain has their L2PAO transferred to the standard address but retained controrl of their L1PAO +(`0x1Eb2fFc903729a0F03966B917003800b145F56E2`) + +>### Security Council Safe (`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`) > > - Domain Hash: `0xbe081970e9fc104bd1ea27e375cd21ec7bb1eec56bfe43347c3e36c5d27b8533` > - Message Hash: `0xaaaccdbf1800e8718477851aa8b91ff9477e4ca5d80b2abd848a4e02ad3419a0` +> +> ### Foundation Safe (`0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B`) +> +> - Domain Hash: `0x37e1f5dd3b92a004a23589b741196c8a214629d4ea3a690ec8e41ae45c689cbb` +> - Message Hash: `0xafa8fa98686b901c166bf0656a9cf6b1de80e1ce3475f2626ca490838c142e77` -## Normalized State Diff Hash Attestation - -The normalized state diff hash **MUST** match the hash produced by the state changes attested to in the state diff audit report. As a signer, you are responsible for verifying that this hash is correct. Please compare the hash below with the one in the audit report. If no audit report is available for this task, you must still ensure that the normalized state diff hash matches the output in your terminal. - -**Normalized hash:** `0x569e75fc77c1a856f6daaf9e69d8a9566ca34aa47f9133711ce065a571af0cfd` ## Understanding Task Calldata @@ -62,33 +66,6 @@ For each contract listed in the state diff, please verify that no contracts or s - 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. -### State Overrides - -Note: The changes listed below do not include threshold, nonce and owner mapping overrides. These changes are listed and explained in the [SINGLE-VALIDATION.md](../../../../../SINGLE-VALIDATION.md) file. - -### Task State Changes - ---- - -### `0x1Eb2fFc903729a0F03966B917003800b145F56E2` ([Worldchain Sepolia ProxyAdminOwner](https://github.com/ethereum-optimism/superchain-registry/blob/1ff0df40c7602761c55ab2cb693614ca0382bd64/superchain/configs/sepolia/worldchain.toml#L44)) - Chain ID: 11155111 - -- **Key:** `0x0000000000000000000000000000000000000000000000000000000000000005` - - **Decoded Kind:** `uint256` - - **Before:** `0x0000000000000000000000000000000000000000000000000000000000000030` - - **After:** `0x0000000000000000000000000000000000000000000000000000000000000031` - - **Summary:** Safe nonce increment - - **Detail:** The nonce is incremented by 1 as the safe executes the transaction to initiate the L2 ProxyAdmin ownership transfer. - ---- - -### `0xff6eba109271fe6d4237eeed4bab1dd9a77dd1a4` ([OptimismPortal](https://sepolia.etherscan.io/address/0xff6eba109271fe6d4237eeed4bab1dd9a77dd1a4)) - Chain ID: 11155111 - -- **Key:** `0x0000000000000000000000000000000000000000000000000000000000000001` - - **Decoded Kind:** `struct ResourceMetering.ResourceParams` - - **Before:** `0x00000000008cc5de0000000000090a010000000000000000000000003b9aca00` - - **After:** `0x00000000008cc78a0000000000030d400000000000000000000000003b9aca00` - - **Summary:** Resource metering params update - - **Detail:** The OptimismPortal's resource metering parameters are updated as part of processing the deposit transaction. This is an expected side effect of calling `depositTransaction`. ## Manual L2 Verification Steps diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml index bdc27f10e1..e434ceb200 100644 --- a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml +++ b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml @@ -5,4 +5,20 @@ templateName = "TransferL2PAOFromL1ToEOA" newOwnerEOA = "0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0" [addresses] -ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" \ No newline at end of file +ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" + +[stateOverrides] +# ProxyAdminOwner +0x1Eb2fFc903729a0F03966B917003800b145F56E2 = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 39} +] + +# Foundation Upgrades Safe +0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 53} +] + +# Security Council +0xf64bc17485f0B4Ea5F06A96514182FC4cB561977 = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 50} +] \ No newline at end of file From 9c5d78fb910a50f547dd04b25baf2ab234e76069 Mon Sep 17 00:00:00 2001 From: Zak Ayesh <44901995+ZakAyesh@users.noreply.github.com> Date: Fri, 7 Nov 2025 13:00:46 -0300 Subject: [PATCH 03/16] changed worldchain task number --- .../.env | 1 + .../README.md | 21 +++++ .../VALIDATION.md | 86 +++++++++++++++++++ .../config.toml | 24 ++++++ 4 files changed, 132 insertions(+) create mode 100644 src/tasks/sep/046-worldchain-l2pao-key-handback-over/.env create mode 100644 src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md create mode 100644 src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md create mode 100644 src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/.env b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/.env new file mode 100644 index 0000000000..fe89703585 --- /dev/null +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/.env @@ -0,0 +1 @@ +TENDERLY_GAS=16700000 diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md new file mode 100644 index 0000000000..4de009d693 --- /dev/null +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md @@ -0,0 +1,21 @@ +# 039-worldchain-l2pao-key-handback-over + +Status: [DRAFT, NOT READY TO SIGN]() + +## Objective + +Transfer the L2 ProxyAdmin Owner for Worldchain Sepolia to Alchemy-controlled EOA. + +## Simulation & Signing + +Simulation commands for each safe: +```bash +cd src/tasks/sep/046-worldchain-l2pao-key-handback-over +SIMULATE_WITHOUT_LEDGER=1 SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env simulate +``` + +Signing commands for each safe: +```bash +cd src/tasks/sep/046-worldchain-l2pao-key-handback-over +SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env sign +``` diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md new file mode 100644 index 0000000000..b5c1f7194a --- /dev/null +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md @@ -0,0 +1,86 @@ +# Validation + +This document can be used to validate the inputs and result of the execution of the upgrade transaction which you are signing. + +The steps are: +1. [Validate the Domain and Message Hashes](#expected-domain-and-message-hashes) +2. [Verifying the state changes via the normalized state diff hash](#normalized-state-diff-hash-attestation) +3. [Verifying the transaction input](#understanding-task-calldata) +4. [Verifying the state changes](#task-state-changes) + +## Expected Domain and Message Hashes + +First, we need to 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. +> +> ### Standard L2 Proxy Admin Owner (Unaliased) + ### Worldchain has their L2PAO transferred to the standard address but retained controrl of their L1PAO +(`0x1Eb2fFc903729a0F03966B917003800b145F56E2`) + +>### Security Council Safe (`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`) +> +> - Domain Hash: `0xbe081970e9fc104bd1ea27e375cd21ec7bb1eec56bfe43347c3e36c5d27b8533` +> - Message Hash: `0xaaaccdbf1800e8718477851aa8b91ff9477e4ca5d80b2abd848a4e02ad3419a0` +> +> ### Foundation Safe (`0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B`) +> +> - Domain Hash: `0x37e1f5dd3b92a004a23589b741196c8a214629d4ea3a690ec8e41ae45c689cbb` +> - Message Hash: `0xafa8fa98686b901c166bf0656a9cf6b1de80e1ce3475f2626ca490838c142e77` + + +## Understanding Task Calldata + +The transaction initiates a deposit transaction via the OptimismPortal on L1 Sepolia, which will be executed on L2 (Worldchain Sepolia) to transfer the L2 ProxyAdmin ownership to an EOA. + +### Decoding the depositTransaction call: +```bash +# The outer multicall to OptimismPortal +cast calldata-decode "depositTransaction(address,uint256,uint64,bool,bytes)" \ + 0xe9e05c42000000000000000000000000420000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041000000000000000000000000f64bc17485f0b4ea5f06a96514182fc4cb56197700000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000 +``` + +Returns: +- `_to`: `0x4200000000000000000000000000000000000018` (L2 ProxyAdmin predeploy) +- `_value`: `0` (no ETH sent) +- `_gasLimit`: `200000` (gas for L2 execution) +- `_isCreation`: `false` (not a contract creation) +- `_data`: `0xf2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a0` + +### Decoding the inner transferOwnership call: +```bash +cast calldata-decode "transferOwnership(address)" \ + 0xf2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a0 +``` + +Returns: +- `newOwnerEOA`: `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0` (the target EOA) + +# State Validations + +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. + + +## Manual L2 Verification Steps + +After the L1 transaction is executed, you must verify that the L2 deposit transaction successfully transfers ownership: + +1. **Find the L2 deposit transaction**: Look for a transaction on Worldchain Sepolia from the L1 caller to the L2 ProxyAdmin at `0x4200000000000000000000000000000000000018`. + +2. **Verify the OwnershipTransferred event**: Confirm that the event shows: + - `previousOwner`: `0x2FC3ffc903729a0f03966b917003800B145F67F3` (aliased 2/2 safe) + - `newOwnerEOA`: `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0` (target EOA) + +3. **Verify final state**: Call `owner()` on the L2 ProxyAdmin to confirm it returns `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0`. + +```bash +# After L2 execution, verify the new owner +cast call 0x4200000000000000000000000000000000000018 "owner()(address)" --rpc-url worldchain-sepolia +# Should return: 0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0 +``` \ No newline at end of file diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml new file mode 100644 index 0000000000..e434ceb200 --- /dev/null +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml @@ -0,0 +1,24 @@ +l2chains = [{name = "Worldchain Sepolia", chainId = 4801}] +templateName = "TransferL2PAOFromL1ToEOA" + +# The new owner address (EOA). See here https://www.notion.so/oplabs/Worldchain-key-handback-over-address-validation-272f153ee1628002bfa2e00a718c57d5?source=copy_link +newOwnerEOA = "0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0" + +[addresses] +ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" + +[stateOverrides] +# ProxyAdminOwner +0x1Eb2fFc903729a0F03966B917003800b145F56E2 = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 39} +] + +# Foundation Upgrades Safe +0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 53} +] + +# Security Council +0xf64bc17485f0B4Ea5F06A96514182FC4cB561977 = [ + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 50} +] \ No newline at end of file From f110258012ef9a97653dd51ff5a169a28b61a0bf Mon Sep 17 00:00:00 2001 From: Zak Ayesh <44901995+ZakAyesh@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:04:42 -0500 Subject: [PATCH 04/16] fix:delete task 39 replaced by task 46 --- .../.env | 1 - .../README.md | 21 ----- .../VALIDATION.md | 86 ------------------- .../config.toml | 24 ------ 4 files changed, 132 deletions(-) delete mode 100644 src/tasks/sep/039-worldchain-l2pao-key-handback-over/.env delete mode 100644 src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md delete mode 100644 src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md delete mode 100644 src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/.env b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/.env deleted file mode 100644 index fe89703585..0000000000 --- a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/.env +++ /dev/null @@ -1 +0,0 @@ -TENDERLY_GAS=16700000 diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md deleted file mode 100644 index c0b05cc160..0000000000 --- a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# 039-worldchain-l2pao-key-handback-over - -Status: [DRAFT, NOT READY TO SIGN]() - -## Objective - -Transfer the L2 ProxyAdmin Owner for Worldchain Sepolia to Alchemy-controlled EOA. - -## Simulation & Signing - -Simulation commands for each safe: -```bash -cd src/tasks/sep/039-worldchain-l2pao-key-handback-over -SIMULATE_WITHOUT_LEDGER=1 SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env simulate -``` - -Signing commands for each safe: -```bash -cd src/tasks/sep/039-worldchain-l2pao-key-handback-over -SKIP_DECODE_AND_PRINT=1 just --dotenv-path $(pwd)/.env sign -``` diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md deleted file mode 100644 index b5c1f7194a..0000000000 --- a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/VALIDATION.md +++ /dev/null @@ -1,86 +0,0 @@ -# Validation - -This document can be used to validate the inputs and result of the execution of the upgrade transaction which you are signing. - -The steps are: -1. [Validate the Domain and Message Hashes](#expected-domain-and-message-hashes) -2. [Verifying the state changes via the normalized state diff hash](#normalized-state-diff-hash-attestation) -3. [Verifying the transaction input](#understanding-task-calldata) -4. [Verifying the state changes](#task-state-changes) - -## Expected Domain and Message Hashes - -First, we need to 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. -> -> ### Standard L2 Proxy Admin Owner (Unaliased) - ### Worldchain has their L2PAO transferred to the standard address but retained controrl of their L1PAO -(`0x1Eb2fFc903729a0F03966B917003800b145F56E2`) - ->### Security Council Safe (`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`) -> -> - Domain Hash: `0xbe081970e9fc104bd1ea27e375cd21ec7bb1eec56bfe43347c3e36c5d27b8533` -> - Message Hash: `0xaaaccdbf1800e8718477851aa8b91ff9477e4ca5d80b2abd848a4e02ad3419a0` -> -> ### Foundation Safe (`0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B`) -> -> - Domain Hash: `0x37e1f5dd3b92a004a23589b741196c8a214629d4ea3a690ec8e41ae45c689cbb` -> - Message Hash: `0xafa8fa98686b901c166bf0656a9cf6b1de80e1ce3475f2626ca490838c142e77` - - -## Understanding Task Calldata - -The transaction initiates a deposit transaction via the OptimismPortal on L1 Sepolia, which will be executed on L2 (Worldchain Sepolia) to transfer the L2 ProxyAdmin ownership to an EOA. - -### Decoding the depositTransaction call: -```bash -# The outer multicall to OptimismPortal -cast calldata-decode "depositTransaction(address,uint256,uint64,bool,bytes)" \ - 0xe9e05c42000000000000000000000000420000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041000000000000000000000000f64bc17485f0b4ea5f06a96514182fc4cb56197700000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000 -``` - -Returns: -- `_to`: `0x4200000000000000000000000000000000000018` (L2 ProxyAdmin predeploy) -- `_value`: `0` (no ETH sent) -- `_gasLimit`: `200000` (gas for L2 execution) -- `_isCreation`: `false` (not a contract creation) -- `_data`: `0xf2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a0` - -### Decoding the inner transferOwnership call: -```bash -cast calldata-decode "transferOwnership(address)" \ - 0xf2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a0 -``` - -Returns: -- `newOwnerEOA`: `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0` (the target EOA) - -# State Validations - -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. - - -## Manual L2 Verification Steps - -After the L1 transaction is executed, you must verify that the L2 deposit transaction successfully transfers ownership: - -1. **Find the L2 deposit transaction**: Look for a transaction on Worldchain Sepolia from the L1 caller to the L2 ProxyAdmin at `0x4200000000000000000000000000000000000018`. - -2. **Verify the OwnershipTransferred event**: Confirm that the event shows: - - `previousOwner`: `0x2FC3ffc903729a0f03966b917003800B145F67F3` (aliased 2/2 safe) - - `newOwnerEOA`: `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0` (target EOA) - -3. **Verify final state**: Call `owner()` on the L2 ProxyAdmin to confirm it returns `0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0`. - -```bash -# After L2 execution, verify the new owner -cast call 0x4200000000000000000000000000000000000018 "owner()(address)" --rpc-url worldchain-sepolia -# Should return: 0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0 -``` \ No newline at end of file diff --git a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml b/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml deleted file mode 100644 index e434ceb200..0000000000 --- a/src/tasks/sep/039-worldchain-l2pao-key-handback-over/config.toml +++ /dev/null @@ -1,24 +0,0 @@ -l2chains = [{name = "Worldchain Sepolia", chainId = 4801}] -templateName = "TransferL2PAOFromL1ToEOA" - -# The new owner address (EOA). See here https://www.notion.so/oplabs/Worldchain-key-handback-over-address-validation-272f153ee1628002bfa2e00a718c57d5?source=copy_link -newOwnerEOA = "0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0" - -[addresses] -ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" - -[stateOverrides] -# ProxyAdminOwner -0x1Eb2fFc903729a0F03966B917003800b145F56E2 = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 39} -] - -# Foundation Upgrades Safe -0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 53} -] - -# Security Council -0xf64bc17485f0B4Ea5F06A96514182FC4cB561977 = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 50} -] \ No newline at end of file From 053eed1fbc6ac9f880b3a8ec158192afd4af3121 Mon Sep 17 00:00:00 2001 From: Zak Ayesh <44901995+ZakAyesh@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:08:15 -0500 Subject: [PATCH 05/16] fix:update nonces --- .../sep/046-worldchain-l2pao-key-handback-over/config.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml index e434ceb200..9250ad5cfc 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml @@ -10,15 +10,15 @@ ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" [stateOverrides] # ProxyAdminOwner 0x1Eb2fFc903729a0F03966B917003800b145F56E2 = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 39} + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 44} ] # Foundation Upgrades Safe 0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 53} + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 59} ] # Security Council 0xf64bc17485f0B4Ea5F06A96514182FC4cB561977 = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 50} + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 56} ] \ No newline at end of file From 13ea2589f87a308b1378b6fc6ed5ca20d6861cd7 Mon Sep 17 00:00:00 2001 From: Wazabie <48911235+Wazabie@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:06:16 -0500 Subject: [PATCH 06/16] Update src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> --- src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md index 4de009d693..bb065a574b 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md @@ -1,4 +1,4 @@ -# 039-worldchain-l2pao-key-handback-over +# 046-worldchain-l2pao-key-handback-over Status: [DRAFT, NOT READY TO SIGN]() From 61169b6f75ff44f55b3e9df5a8f8eb8df21e758b Mon Sep 17 00:00:00 2001 From: Zak Ayesh <44901995+ZakAyesh@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:41:27 -0500 Subject: [PATCH 07/16] fix:updated message hashes changed after adding new nonces --- .../VALIDATION.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md index b5c1f7194a..72019c8231 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md @@ -23,12 +23,12 @@ First, we need to validate the domain and message hashes. These values should ma >### Security Council Safe (`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`) > > - Domain Hash: `0xbe081970e9fc104bd1ea27e375cd21ec7bb1eec56bfe43347c3e36c5d27b8533` -> - Message Hash: `0xaaaccdbf1800e8718477851aa8b91ff9477e4ca5d80b2abd848a4e02ad3419a0` +> - Message Hash: `0x4d8de6129399e4cf7348a051044a2c8a6260a3dfc630c8a520d0fc00222481d2` > > ### Foundation Safe (`0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B`) > > - Domain Hash: `0x37e1f5dd3b92a004a23589b741196c8a214629d4ea3a690ec8e41ae45c689cbb` -> - Message Hash: `0xafa8fa98686b901c166bf0656a9cf6b1de80e1ce3475f2626ca490838c142e77` +> - Message Hash: `0xf9d56fd3c2177caf46f16eeecda050fcb3af367c4e9c15fa218590820c97be94` ## Understanding Task Calldata @@ -39,7 +39,7 @@ The transaction initiates a deposit transaction via the OptimismPortal on L1 Sep ```bash # The outer multicall to OptimismPortal cast calldata-decode "depositTransaction(address,uint256,uint64,bool,bytes)" \ - 0xe9e05c42000000000000000000000000420000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041000000000000000000000000f64bc17485f0b4ea5f06a96514182fc4cb56197700000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000 + 0xe9e05c42000000000000000000000000420000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ``` Returns: @@ -83,4 +83,10 @@ After the L1 transaction is executed, you must verify that the L2 deposit transa # After L2 execution, verify the new owner cast call 0x4200000000000000000000000000000000000018 "owner()(address)" --rpc-url worldchain-sepolia # Should return: 0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0 +``` + +## Task Calldata + +``` +0x174dea71000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000ff6eba109271fe6d4237eeed4bab1dd9a77dd1a40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104e9e05c42000000000000000000000000420000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000e78a0a96c5d6ae6c606418ed4a9ced378cb030a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ``` \ No newline at end of file From f8f3278193585c3f73079cea3376d17335512a68 Mon Sep 17 00:00:00 2001 From: Wazabie <48911235+Wazabie@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:41:52 -0500 Subject: [PATCH 08/16] Update README.md --- src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md index bb065a574b..1a32c886d5 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/README.md @@ -1,6 +1,6 @@ # 046-worldchain-l2pao-key-handback-over -Status: [DRAFT, NOT READY TO SIGN]() +Status: [READY TO SIGN]() ## Objective From c82f0c084d933504bf647ba0ca89bc08b3b8ed54 Mon Sep 17 00:00:00 2001 From: Zak Ayesh <44901995+ZakAyesh@users.noreply.github.com> Date: Wed, 12 Nov 2025 17:45:05 -0500 Subject: [PATCH 09/16] fix:clean up text in sepolia validation.md --- .../046-worldchain-l2pao-key-handback-over/VALIDATION.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md index 72019c8231..3e6a24f5b8 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md @@ -60,12 +60,7 @@ Returns: # State Validations -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. - +For a complete walkthrough of validating the state changes on L1 and L2 follow [the steps in this doc](https://github.com/ethereum-optimism/superchain-ops/blob/main/src/doc/simulate-l2-ownership-transfer.md) ## Manual L2 Verification Steps From 390a325bc89daf60fcfadf3693b0c52e9ea514a1 Mon Sep 17 00:00:00 2001 From: Zak Ayesh <44901995+ZakAyesh@users.noreply.github.com> Date: Fri, 14 Nov 2025 11:18:16 -0500 Subject: [PATCH 10/16] Update src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alberto Cuesta CaƱada <38806121+alcueca@users.noreply.github.com> --- .../sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md index 3e6a24f5b8..07658c194e 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md @@ -17,7 +17,7 @@ First, we need to validate the domain and message hashes. These values should ma > Before signing, ensure the below hashes match what is on your ledger. > > ### Standard L2 Proxy Admin Owner (Unaliased) - ### Worldchain has their L2PAO transferred to the standard address but retained controrl of their L1PAO + ### Worldchain has their L2PAO transferred to the standard address but retained control of their L1PAO (`0x1Eb2fFc903729a0F03966B917003800b145F56E2`) >### Security Council Safe (`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`) From a75ddbdeacacdbe006ddf300397fe7495d4f1ee0 Mon Sep 17 00:00:00 2001 From: Matt Solomon Date: Wed, 19 Nov 2025 15:57:45 -0800 Subject: [PATCH 11/16] ci: bump timeout because stacked sims are slow --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 80554e53d1..be6b7a2694 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -85,7 +85,7 @@ jobs: - run: name: "Run stacked simulation for network: <>" # This may need to be increased in the future. We should focus on fixing the performance first before bumping this. - no_output_timeout: 30m + no_output_timeout: 60m command: | just install cd src/ From 3d778cea6c727cfc5b57e9d6e2c3f19977ea7da6 Mon Sep 17 00:00:00 2001 From: Matt Solomon Date: Thu, 20 Nov 2025 06:37:57 -0800 Subject: [PATCH 12/16] =?UTF-8?q?ci:=20this=20really=20shouldn=E2=80=99t?= =?UTF-8?q?=20take=2090m,=20testing=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index be6b7a2694..3504dad17c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -85,7 +85,7 @@ jobs: - run: name: "Run stacked simulation for network: <>" # This may need to be increased in the future. We should focus on fixing the performance first before bumping this. - no_output_timeout: 60m + no_output_timeout: 90m command: | just install cd src/ From f8c469d394f08f54a4ea440a247ef4cfd456a3b2 Mon Sep 17 00:00:00 2001 From: Wazabie <48911235+Wazabie@users.noreply.github.com> Date: Mon, 1 Dec 2025 10:26:38 -0500 Subject: [PATCH 13/16] Update config.toml --- .../sep/046-worldchain-l2pao-key-handback-over/config.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml index 9250ad5cfc..ae7edde0c0 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml @@ -15,10 +15,10 @@ ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" # Foundation Upgrades Safe 0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 59} + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 60} ] # Security Council 0xf64bc17485f0B4Ea5F06A96514182FC4cB561977 = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 56} -] \ No newline at end of file + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 57} +] From efc78b8819a98e6dd5a76375da19d94a6edae048 Mon Sep 17 00:00:00 2001 From: Wazabie <48911235+Wazabie@users.noreply.github.com> Date: Mon, 1 Dec 2025 10:28:20 -0500 Subject: [PATCH 14/16] Update config.yml --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3504dad17c..80554e53d1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -85,7 +85,7 @@ jobs: - run: name: "Run stacked simulation for network: <>" # This may need to be increased in the future. We should focus on fixing the performance first before bumping this. - no_output_timeout: 90m + no_output_timeout: 30m command: | just install cd src/ From 34e57fbfce4e26a94aacefa06e9eb57c680997ec Mon Sep 17 00:00:00 2001 From: JosepBove Date: Mon, 1 Dec 2025 19:38:21 -0300 Subject: [PATCH 15/16] feat: nonce bump --- .../sep/046-worldchain-l2pao-key-handback-over/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml index ae7edde0c0..bb7337fb93 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/config.toml @@ -15,7 +15,7 @@ ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" # Foundation Upgrades Safe 0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B = [ - {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 60} + {key = "0x0000000000000000000000000000000000000000000000000000000000000005", value = 62} ] # Security Council From affe23221ad0c7b83c5e3ad06aaa244cdd584b43 Mon Sep 17 00:00:00 2001 From: Matt Solomon Date: Mon, 1 Dec 2025 15:55:01 -0800 Subject: [PATCH 16/16] fix: remove noGasMetering modifier which causes stacked sims to hang I am unsure exactly why it hangs. This did not used to hang, but now it does. Still need to better understand the root cause here --- src/tasks/StackedSimulator.sol | 4 ++-- .../sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tasks/StackedSimulator.sol b/src/tasks/StackedSimulator.sol index 8416f54fe7..27c2f3fdb1 100644 --- a/src/tasks/StackedSimulator.sol +++ b/src/tasks/StackedSimulator.sol @@ -46,8 +46,8 @@ contract StackedSimulator is Script { _simulateStack(network, task, new address[](0)); } - /// @notice Simulates the execution of all non-terminal tasks for a given network. No gas metering is used. - function simulateStack(string memory network) public noGasMetering { + /// @notice Simulates the execution of all non-terminal tasks for a given network. + function simulateStack(string memory network) public { TaskInfo[] memory tasks = getNonTerminalTasks(network); if (tasks.length == 0) { console.log("No non-terminal tasks found for network: %s", network); diff --git a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md index 07658c194e..a7ebc9d085 100644 --- a/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md +++ b/src/tasks/sep/046-worldchain-l2pao-key-handback-over/VALIDATION.md @@ -23,12 +23,12 @@ First, we need to validate the domain and message hashes. These values should ma >### Security Council Safe (`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`) > > - Domain Hash: `0xbe081970e9fc104bd1ea27e375cd21ec7bb1eec56bfe43347c3e36c5d27b8533` -> - Message Hash: `0x4d8de6129399e4cf7348a051044a2c8a6260a3dfc630c8a520d0fc00222481d2` +> - Message Hash: `0x90174dd31d5ba63b20aa1e5df91fe03c6166a323a17dcea11d6e5e92b744033e` > > ### Foundation Safe (`0xDEe57160aAfCF04c34C887B5962D0a69676d3C8B`) > > - Domain Hash: `0x37e1f5dd3b92a004a23589b741196c8a214629d4ea3a690ec8e41ae45c689cbb` -> - Message Hash: `0xf9d56fd3c2177caf46f16eeecda050fcb3af367c4e9c15fa218590820c97be94` +> - Message Hash: `0x3156bd84f93074952b43af3368d798328835200f04aa6c6c092cc9fcf0af4d79` ## Understanding Task Calldata