Skip to content

Conversation

@winnsterx
Copy link
Contributor

Description

Tests

Additional context

Metadata

@winnsterx winnsterx requested review from a team as code owners September 30, 2025 16:45
@winnsterx winnsterx requested a review from mds1 September 30, 2025 16:45

## Objective

Todo: Describe the objective of the task
Copy link
Contributor

Choose a reason for hiding this comment

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

The objective section contains placeholder text instead of actual documentation. Replace Todo: Describe the objective of the task with a detailed description that includes: what ownership transfer is being performed, why the transfer is needed, and any associated risks or prerequisites. Incomplete documentation reduces task safety by failing to clearly explain the task's purpose and potential impacts.

Suggested change
Todo: Describe the objective of the task
The objective of this task is to safely transfer ownership of the Worldchain cryptographic keys from the current key holders back to the designated protocol governance entities. This handback process is necessary to complete the planned key custody rotation cycle, ensuring that no single entity maintains control of critical protocol keys for extended periods. The transfer helps maintain the decentralized security model of the protocol by preventing centralization of control.
Key risks include potential interruption of protocol operations during the transfer window, possibility of key compromise if transfer procedures aren't strictly followed, and governance disruption if the receiving entities aren't properly prepared. Prerequisites include verification of recipient readiness, backup of all relevant key material, and confirmation that all stakeholders have been notified of the impending transfer timeframe.

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

Fix in Graphite


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

Copy link
Contributor

@blmalone blmalone left a comment

Choose a reason for hiding this comment

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

I don't believe this task is using the correct safe to execute from.

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" No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

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

It's good practice to put in nonce state overrides here so that we know which nonce the task is targeting. That way we know the hashes in VALIDATION.md line up with the nonce specified in here.

- **Summary:** Resource metering params update
- **Detail:** The OptimismPortal2'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
Copy link
Contributor

Choose a reason for hiding this comment

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

Before execution signers should perform a manual validation that the transaction will work on the L2, they can do this by following the steps outlined in this document:
https://github.com/ethereum-optimism/superchain-ops/blob/main/src/doc/simulate-l2-ownership-transfer.md (skip the address aliasing step)

Simulation commands for each safe:
```bash
cd src/tasks/sep/034-worldchain-key-handback-over
SIMULATE_WITHOUT_LEDGER=1 just --dotenv-path $(pwd)/.env simulate
Copy link
Contributor

Choose a reason for hiding this comment

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

Does this also need to have council|foundation?

cast call 0x4200000000000000000000000000000000000018 "owner()(address)" --rpc-url https://worldchain-sepolia.g.alchemy.com/public
# returns 0x2FC3ffc903729a0f03966b917003800B145F67F3

AFAIK, the command above is the aliased L1PAO: 0x1Eb2fFc903729a0F03966B917003800b145F56E2

Copy link
Contributor

Choose a reason for hiding this comment

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

However, the current ProxyAdminOwner for Worldchain sepolia is: https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/sepolia/worldchain.toml#L43C22-L43C64 0x945185C01fb641bA3E63a9bdF66575e35a407837.

Does this transaction not have to be sent from 0x1Eb2fFc903729a0F03966B917003800b145F56E2 for it to work?


---

### `0x945185c01fb641ba3e63a9bdf66575e35a407837` ([Worldchain Sepolia ProxyAdminOwner](https://github.com/ethereum-optimism/superchain-registry/blob/1ff0df40c7602761c55ab2cb693614ca0382bd64/superchain/configs/sepolia/worldchain.toml#L44)) - Chain ID: 11155111
Copy link
Contributor

Choose a reason for hiding this comment

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

This won't work will it? This safe is not the owner of the L2ProxyAdmin.

# Test configuration for TransferL2PAOFromL1ToEOA template
l2chains = [{name = "Worldchain Sepolia", chainId = 4801}]

templateName = "TransferL2PAOFromL1ToEOA"
Copy link
Contributor

Choose a reason for hiding this comment

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

I think you may need to override the ProxyAdminOwner in this file based on comments below.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants