diff --git a/sepolia/2026-06-23-transfer-solana-bridge-ownership/.env b/sepolia/2026-06-23-transfer-solana-bridge-ownership/.env new file mode 100644 index 00000000..bfda9b6e --- /dev/null +++ b/sepolia/2026-06-23-transfer-solana-bridge-ownership/.env @@ -0,0 +1,31 @@ +BASE_CONTRACTS_COMMIT=be7c7a642e430fa64b04b63203839f8c81f48466 + +# Signer: must be an owner EOA of OWNER_SAFE. Facilitator sets this to their own signer +# address before running `make gen-validation`. Default is the first owner of OWNER_SAFE. +SENDER=0x6e427c3212C0b63BE0C382F97715D49b011bFF33 + +# Old CB L1 multisig (issuer; current owner via its L2 alias). +OWNER_SAFE=0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f + +# New CB L1 multisig (new owner). The script derives its L2 alias via applyL1ToL2Alias. +NEW_OWNER_SAFE=0x646132A1667ca7aD00d36616AFBA1A28116C770A + +# OptimismPortal2 on Sepolia L1. +OPTIMISM_PORTAL_ADDR=0x49f53e41452C74589E85cA1677426Ba426459e85 + +# Shared Solady ERC1967Factory (holds the proxy admins). Same address on every chain. +ERC1967_FACTORY_ADDR=0x0000000000006396FF2a80c067f99B3d2Ab4Df24 + +# Target contracts on Base Sepolia L2. +BRIDGE_ADDR=0x01824a90d32A69022DdAEcC6C5C14Ed08dB4EB9B +TWIN_BEACON_ADDR=0x11bF22cFf007C46C725Dc59A919383326E3cdefB +CROSS_CHAIN_ERC20_BEACON_ADDR=0xc039781ccb3cb281f69f8509bfb17163993dd6d1 +CROSS_CHAIN_ERC20_FACTORY_ADDR=0x488EB7F7cb2568e31595D48cb26F63963Cc7565D +BRIDGE_VALIDATOR_ADDR=0x863Bed3E344035253CC44C75612Ad5fDF5904aEE +RELAYER_ORCHESTRATOR_ADDR=0x1e0842b2E6FA06A59b05a9c1d36a6480730012CE + +# Gas limit for each L2 deposit transaction. +L2_GAS_LIMIT=100000 + +# Required for the task signer tool. +RECORD_STATE_DIFF=true diff --git a/sepolia/2026-06-23-transfer-solana-bridge-ownership/FACILITATOR.md b/sepolia/2026-06-23-transfer-solana-bridge-ownership/FACILITATOR.md new file mode 100644 index 00000000..bd470645 --- /dev/null +++ b/sepolia/2026-06-23-transfer-solana-bridge-ownership/FACILITATOR.md @@ -0,0 +1,86 @@ +# Facilitator Guide + +Guide for facilitators managing the Base Sepolia Solana bridge owner transfer. + +## 1. Generate the validation file + +Run this after any change to [.env](./.env) or +[script/TransferSolanaBridgeOwnership.s.sol](./script/TransferSolanaBridgeOwnership.s.sol). + +```bash +cd contract-deployments +git pull +cd sepolia/2026-06-23-transfer-solana-bridge-ownership +make deps +make gen-validation +``` + +This produces `validations/base-signer.json`. Check that the `cmd` field uses: + +```text +--sender 0x6e427c3212C0b63BE0C382F97715D49b011bFF33 +``` + +(or whichever owner of `OWNER_SAFE` is set as `SENDER` in `.env`). + +### Disable task-origin validation + +This task does not ship task-origin signatures. After generating the validation +file, ensure `validations/base-signer.json` carries the following field at the JSON +root (add it if the signer-tool did not emit it automatically): + +```json +"skipTaskOriginValidation": true +``` + +Commit the file only after that field is set; otherwise signers' UI will demand +task-origin attestations that do not exist for this task. + +## 2. Collect signatures + +Ask signers to follow [README.md](./README.md). They run `make sign-task` from the repo root and +select `sepolia/2026-06-23-transfer-solana-bridge-ownership` in the signing UI. The old multisig +has a threshold of 3, so collect at least 3 signatures. + +## 3. Execute + +This task uses direct signatures from `OWNER_SAFE`, so there are no separate nested Safe approval +transactions. Concatenate the collected signatures and pass them to `make execute`. + +```bash +cd contract-deployments +git pull +cd sepolia/2026-06-23-transfer-solana-bridge-ownership +make deps +SIGNATURES=AAABBBCCC make execute +``` + +Replace `AAABBBCCC` with the concatenated signatures collected from signers. + +## 4. Verify on-chain + +After the L1 deposits are relayed to L2, verify on Base Sepolia that every contract is now controlled +by the new owner alias `0x757232A1667ca7aD00d36616AFBA1A28116C881B`: + +```bash +export RPC=https://sepolia.base.org +export FACTORY=0x0000000000006396FF2a80c067f99B3d2Ab4Df24 + +# Bridge: both the functional owner and the proxy admin must move. +cast call 0x01824a90d32A69022DdAEcC6C5C14Ed08dB4EB9B "owner()(address)" --rpc-url $RPC +cast call $FACTORY "adminOf(address)(address)" 0x01824a90d32A69022DdAEcC6C5C14Ed08dB4EB9B --rpc-url $RPC + +# Beacons. +cast call 0x11bF22cFf007C46C725Dc59A919383326E3cdefB "owner()(address)" --rpc-url $RPC +cast call 0xc039781ccb3cb281f69f8509bfb17163993dd6d1 "owner()(address)" --rpc-url $RPC + +# Proxies (admin held in the factory). +cast call $FACTORY "adminOf(address)(address)" 0x488EB7F7cb2568e31595D48cb26F63963Cc7565D --rpc-url $RPC +cast call $FACTORY "adminOf(address)(address)" 0x863Bed3E344035253CC44C75612Ad5fDF5904aEE --rpc-url $RPC +cast call $FACTORY "adminOf(address)(address)" 0x1e0842b2E6FA06A59b05a9c1d36a6480730012CE --rpc-url $RPC +``` + +Each call must return `0x757232A1667ca7aD00d36616AFBA1A28116C881B`. + +Then update [README.md](./README.md) status to `EXECUTED` with the transaction link and check in any +generated execution records. diff --git a/sepolia/2026-06-23-transfer-solana-bridge-ownership/Makefile b/sepolia/2026-06-23-transfer-solana-bridge-ownership/Makefile new file mode 100644 index 00000000..98a36168 --- /dev/null +++ b/sepolia/2026-06-23-transfer-solana-bridge-ownership/Makefile @@ -0,0 +1,15 @@ +include ../../Makefile +include ../../Multisig.mk +include ../.env +include .env + +RPC_URL = $(L1_RPC_URL) +SCRIPT_NAME = TransferSolanaBridgeOwnership + +.PHONY: gen-validation +gen-validation: deps-signer-tool + $(call GEN_VALIDATION,$(SCRIPT_NAME),,$(SENDER),base-signer.json,) + +.PHONY: execute +execute: + $(call MULTISIG_EXECUTE,$(SIGNATURES)) diff --git a/sepolia/2026-06-23-transfer-solana-bridge-ownership/README.md b/sepolia/2026-06-23-transfer-solana-bridge-ownership/README.md new file mode 100644 index 00000000..06a03c17 --- /dev/null +++ b/sepolia/2026-06-23-transfer-solana-bridge-ownership/README.md @@ -0,0 +1,57 @@ +# Transfer Base Sepolia Solana Bridge Owner + +Status: [EXECUTED](https://sepolia.etherscan.io/tx/0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486) + +## Description + +This task transfers control of the Base Sepolia Solana bridge contracts from the aliased old +Coinbase L1 multisig to the aliased new Coinbase L1 multisig. + +Superchain separation migrated Coinbase upgrade signers to a new multisig address, but these bridge +contracts are still controlled by the old multisig's L2 alias. + +| Role | L1 address | L2 alias | +| -- | -- | -- | +| Current owner | [`0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f`](https://sepolia.etherscan.io/address/0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f) | [`0x6f0fB066334B67355A15dc9b67317fD2a2e20890`](https://sepolia.basescan.org/address/0x6f0fB066334B67355A15dc9b67317fD2a2e20890) | +| New owner | [`0x646132A1667ca7aD00d36616AFBA1A28116C770A`](https://sepolia.etherscan.io/address/0x646132A1667ca7aD00d36616AFBA1A28116C770A) | [`0x757232A1667ca7aD00d36616AFBA1A28116C881B`](https://sepolia.basescan.org/address/0x757232A1667ca7aD00d36616AFBA1A28116C881B) | + +The calls are executed from Sepolia L1 through `OptimismPortal2`, which makes the old L1 multisig's +aliased address transfer ownership of each contract on Base Sepolia. Two ownership mechanisms are +involved: + +| Contract | Address | Mechanism | +| -- | -- | -- | +| Bridge | [`0x01824a90d32A69022DdAEcC6C5C14Ed08dB4EB9B`](https://sepolia.basescan.org/address/0x01824a90d32A69022DdAEcC6C5C14Ed08dB4EB9B) | `transferOwnership` + `ERC1967Factory.changeAdmin` | +| TwinBeacon | [`0x11bF22cFf007C46C725Dc59A919383326E3cdefB`](https://sepolia.basescan.org/address/0x11bF22cFf007C46C725Dc59A919383326E3cdefB) | `transferOwnership` | +| CrossChainERC20Beacon | [`0xc039781ccb3cb281f69f8509bfb17163993dd6d1`](https://sepolia.basescan.org/address/0xc039781ccb3cb281f69f8509bfb17163993dd6d1) | `transferOwnership` | +| CrossChainERC20Factory | [`0x488EB7F7cb2568e31595D48cb26F63963Cc7565D`](https://sepolia.basescan.org/address/0x488EB7F7cb2568e31595D48cb26F63963Cc7565D) | `ERC1967Factory.changeAdmin` | +| BridgeValidator | [`0x863Bed3E344035253CC44C75612Ad5fDF5904aEE`](https://sepolia.basescan.org/address/0x863Bed3E344035253CC44C75612Ad5fDF5904aEE) | `ERC1967Factory.changeAdmin` | +| RelayerOrchestrator | [`0x1e0842b2E6FA06A59b05a9c1d36a6480730012CE`](https://sepolia.basescan.org/address/0x1e0842b2E6FA06A59b05a9c1d36a6480730012CE) | `ERC1967Factory.changeAdmin` | + +## Approving the transaction + +### 1. Update repo + +```bash +cd contract-deployments +git pull +``` + +### 2. Run the signing tool + +Run this command from the repo root. Do not enter the task directory. + +```bash +make sign-task +``` + +### 3. Sign + +Open [http://localhost:3000](http://localhost:3000) and select: + +```text +sepolia/2026-06-23-transfer-solana-bridge-ownership +``` + +After signing, copy the signature and send it to the facilitator. You may then close the signer +tool with `Ctrl + C`. diff --git a/sepolia/2026-06-23-transfer-solana-bridge-ownership/foundry.toml b/sepolia/2026-06-23-transfer-solana-bridge-ownership/foundry.toml new file mode 100644 index 00000000..ec9604d9 --- /dev/null +++ b/sepolia/2026-06-23-transfer-solana-bridge-ownership/foundry.toml @@ -0,0 +1,22 @@ +[profile.default] +src = 'src' +out = 'out' +libs = ['lib'] +broadcast = 'records' +fs_permissions = [{ access = "read-write", path = "./" }] +optimizer = true +optimizer_runs = 999999 +solc_version = "0.8.15" +via-ir = false +evm_version = "shanghai" +remappings = [ + '@base-contracts/=lib/contracts', + '@lib-keccak/=lib/lib-keccak/contracts/lib/', + '@solady/=lib/solady/src/', + 'src/=lib/contracts/src/' +] + +[lint] +lint_on_build = false + +# See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/sepolia/2026-06-23-transfer-solana-bridge-ownership/records/TransferSolanaBridgeOwnership.s.sol/11155111/run-1782242054278.json b/sepolia/2026-06-23-transfer-solana-bridge-ownership/records/TransferSolanaBridgeOwnership.s.sol/11155111/run-1782242054278.json new file mode 100644 index 00000000..aa6f95e2 --- /dev/null +++ b/sepolia/2026-06-23-transfer-solana-bridge-ownership/records/TransferSolanaBridgeOwnership.s.sol/11155111/run-1782242054278.json @@ -0,0 +1,193 @@ +{ + "transactions": [ + { + "hash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "function": "execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes)", + "arguments": [ + "0xA8B8CA1d6F0F5Ce63dCEA9121A01b302c5801303", + "0", + "0x858cc8320000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000e800000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000f80000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010800000000000000000000000000000000000000000000000000000000000001100000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c5801303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000d0482ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000005e0000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104e9e05c4200000000000000000000000001824a90d32a69022ddaecc6c5c14ed08db4eb9b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e9e05c420000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000441acfd02a00000000000000000000000001824a90d32a69022ddaecc6c5c14ed08db4eb9b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104e9e05c4200000000000000000000000011bf22cff007c46c725dc59a919383326e3cdefb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104e9e05c42000000000000000000000000c039781ccb3cb281f69f8509bfb17163993dd6d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e9e05c420000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000441acfd02a000000000000000000000000488eb7f7cb2568e31595d48cb26f63963cc7565d000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e9e05c420000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000441acfd02a000000000000000000000000863bed3e344035253cc44c75612ad5fdf5904aee000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e9e05c420000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000441acfd02a0000000000000000000000001e0842b2e6fa06a59b05a9c1d36a6480730012ce000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "1", + "0", + "0", + "0", + "0x0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000", + "0xaf49f730e72e840cb1f19a1675b18249dfbd0dbcd6d2dc2cac846940f1e55a255f366e7cae8dfd948959e408d9b79505a8ad3094aa97ad92f1f0e1362f049a261cc662f6ee038a75415c8e97f238a373581c38d080b5037ea65525c635696673437c8313ce73c2682dcb3723ca6411c2adbeae307dbb0f69829bcc9f69bc4c40091c227be17b79b62945dbe64b65426dcdd9e7dca1ae2984beee39453aabc354f9d70acf01a48a7ad1bbce75f4552afb8ae43854779c936cb135376ac080459782ba1c" + ], + "transaction": { + "from": "0xb2d9a52e76841279ef0372c534c539a4f68f8c0b", + "to": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "gas": "0x12cfe2", + "value": "0x0", + "input": "0x6a761202000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c580130300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000134000000000000000000000000000000000000000000000000000000000000011c4858cc8320000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000e800000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000f80000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010800000000000000000000000000000000000000000000000000000000000001100000000000000000000000000a8b8ca1d6f0f5ce63dcea9121a01b302c5801303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000d0482ad56cb0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000005e0000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104e9e05c4200000000000000000000000001824a90d32a69022ddaecc6c5c14ed08db4eb9b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e9e05c420000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000441acfd02a00000000000000000000000001824a90d32a69022ddaecc6c5c14ed08db4eb9b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104e9e05c4200000000000000000000000011bf22cff007c46c725dc59a919383326e3cdefb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104e9e05c42000000000000000000000000c039781ccb3cb281f69f8509bfb17163993dd6d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e9e05c420000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000441acfd02a000000000000000000000000488eb7f7cb2568e31595d48cb26f63963cc7565d000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e9e05c420000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000441acfd02a000000000000000000000000863bed3e344035253cc44c75612ad5fdf5904aee000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049f53e41452c74589e85ca1677426ba426459e85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000124e9e05c420000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000441acfd02a0000000000000000000000001e0842b2e6fa06a59b05a9c1d36a6480730012ce000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3af49f730e72e840cb1f19a1675b18249dfbd0dbcd6d2dc2cac846940f1e55a255f366e7cae8dfd948959e408d9b79505a8ad3094aa97ad92f1f0e1362f049a261cc662f6ee038a75415c8e97f238a373581c38d080b5037ea65525c635696673437c8313ce73c2682dcb3723ca6411c2adbeae307dbb0f69829bcc9f69bc4c40091c227be17b79b62945dbe64b65426dcdd9e7dca1ae2984beee39453aabc354f9d70acf01a48a7ad1bbce75f4552afb8ae43854779c936cb135376ac080459782ba1c0000000000000000000000000000000000000000000000000000000000", + "nonce": "0x3d", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x147d67e", + "logs": [ + { + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "topics": [ + "0xb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "0x00000000000000000000000001824a90d32a69022ddaecc6c5c14ed08db4eb9b", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b00000000000000000000000000000000000000", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "blockTimestamp": "0x6a3adb04", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "logIndex": "0x1ec", + "removed": false + }, + { + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "topics": [ + "0xb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "0x0000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0001acfd02a00000000000000000000000001824a90d32a69022ddaecc6c5c14ed08db4eb9b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b00000000000000000000000000000000000000", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "blockTimestamp": "0x6a3adb04", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "logIndex": "0x1ed", + "removed": false + }, + { + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "topics": [ + "0xb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "0x00000000000000000000000011bf22cff007c46c725dc59a919383326e3cdefb", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b00000000000000000000000000000000000000", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "blockTimestamp": "0x6a3adb04", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "logIndex": "0x1ee", + "removed": false + }, + { + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "topics": [ + "0xb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "0x000000000000000000000000c039781ccb3cb281f69f8509bfb17163993dd6d1", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000f2fde38b000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b00000000000000000000000000000000000000", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "blockTimestamp": "0x6a3adb04", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "logIndex": "0x1ef", + "removed": false + }, + { + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "topics": [ + "0xb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "0x0000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0001acfd02a000000000000000000000000488eb7f7cb2568e31595d48cb26f63963cc7565d000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b00000000000000000000000000000000000000", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "blockTimestamp": "0x6a3adb04", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "logIndex": "0x1f0", + "removed": false + }, + { + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "topics": [ + "0xb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "0x0000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0001acfd02a000000000000000000000000863bed3e344035253cc44c75612ad5fdf5904aee000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b00000000000000000000000000000000000000", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "blockTimestamp": "0x6a3adb04", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "logIndex": "0x1f1", + "removed": false + }, + { + "address": "0x49f53e41452c74589e85ca1677426ba426459e85", + "topics": [ + "0xb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "0x0000000000000000000000000000000000006396ff2a80c067f99b3d2ab4df24", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0001acfd02a0000000000000000000000001e0842b2e6fa06a59b05a9c1d36a6480730012ce000000000000000000000000757232a1667ca7ad00d36616afba1a28116c881b00000000000000000000000000000000000000", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "blockTimestamp": "0x6a3adb04", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "logIndex": "0x1f2", + "removed": false + }, + { + "address": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "topics": [ + "0x442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e", + "0x9ee89bab5035304a4f11f96dae6c75cab2803a27763ff8d7b7113c0c69830977" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "blockTimestamp": "0x6a3adb04", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "logIndex": "0x1f3", + "removed": false + } + ], + "logsBloom": "0x80100000400000000000000000000000000000000000000000000000040000000000000022004000000000048000000000000000000000000000000000000000000001000000004000000002000000000000000000000000000800000000000000000000020000000000400000000800000000000020000000000000000008000000000000000000000000000000000000000001000000001000000000000000000000000000000000003000000404080000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000020000000010000000000000440002000000000000020080000000000000000000000", + "type": "0x2", + "transactionHash": "0xe7e9efe67323840d61bfd4517f3604c0ccde0b1a1f99f305f507c5934593e486", + "transactionIndex": "0xbc", + "blockHash": "0x724ed5691caa6f46e42598256d2da0eed6131e32a79f22f61f163b16a190ca13", + "blockNumber": "0xa9c040", + "gasUsed": "0xcd47f", + "effectiveGasPrice": "0x3bd5bcb6", + "from": "0xb2d9a52e76841279ef0372c534c539a4f68f8c0b", + "to": "0x5dfeb066334b67355a15dc9b67317fd2a2e1f77f", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1782242054278, + "chain": 11155111, + "commit": "04752ed" +} \ No newline at end of file diff --git a/sepolia/2026-06-23-transfer-solana-bridge-ownership/script/TransferSolanaBridgeOwnership.s.sol b/sepolia/2026-06-23-transfer-solana-bridge-ownership/script/TransferSolanaBridgeOwnership.s.sol new file mode 100644 index 00000000..c08aa3f2 --- /dev/null +++ b/sepolia/2026-06-23-transfer-solana-bridge-ownership/script/TransferSolanaBridgeOwnership.s.sol @@ -0,0 +1,111 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.15; + +import {Vm} from "forge-std/Vm.sol"; + +import {MultisigScript, Enum} from "@base-contracts/script/universal/MultisigScript.sol"; +import {Simulation} from "@base-contracts/script/universal/Simulation.sol"; +import {IOptimismPortal2} from "@base-contracts/interfaces/L1/IOptimismPortal2.sol"; +import {AddressAliasHelper} from "@base-contracts/src/vendor/AddressAliasHelper.sol"; + +/// @notice Minimal interface for Solady Ownable / OwnableRoles / UpgradeableBeacon ownership transfer. +interface IOwnable { + function transferOwnership(address newOwner) external; +} + +/// @notice Minimal interface for the shared Solady ERC1967Factory proxy-admin transfer. +interface IERC1967Factory { + function changeAdmin(address proxy, address admin) external; +} + +/// @title TransferSolanaBridgeOwnership +/// @notice Transfers ownership/admin of the Base Sepolia Solana bridge contracts from the alias of +/// the old Coinbase L1 multisig to the alias of the new Coinbase L1 multisig. +contract TransferSolanaBridgeOwnership is MultisigScript { + using AddressAliasHelper for address; + + // Task config from .env. + address internal ownerSafeEnv; + address internal newOwnerSafeEnv; + address internal optimismPortalEnv; + address internal erc1967FactoryEnv; + address internal bridgeEnv; + address internal twinBeaconEnv; + address internal crossChainErc20BeaconEnv; + address internal crossChainErc20FactoryEnv; + address internal bridgeValidatorEnv; + address internal relayerOrchestratorEnv; + uint64 internal l2GasLimitEnv; + + function setUp() public { + ownerSafeEnv = vm.envAddress("OWNER_SAFE"); + newOwnerSafeEnv = vm.envAddress("NEW_OWNER_SAFE"); + optimismPortalEnv = vm.envAddress("OPTIMISM_PORTAL_ADDR"); + erc1967FactoryEnv = vm.envAddress("ERC1967_FACTORY_ADDR"); + bridgeEnv = vm.envAddress("BRIDGE_ADDR"); + twinBeaconEnv = vm.envAddress("TWIN_BEACON_ADDR"); + crossChainErc20BeaconEnv = vm.envAddress("CROSS_CHAIN_ERC20_BEACON_ADDR"); + crossChainErc20FactoryEnv = vm.envAddress("CROSS_CHAIN_ERC20_FACTORY_ADDR"); + bridgeValidatorEnv = vm.envAddress("BRIDGE_VALIDATOR_ADDR"); + relayerOrchestratorEnv = vm.envAddress("RELAYER_ORCHESTRATOR_ADDR"); + + uint256 gasLimit = vm.envUint("L2_GAS_LIMIT"); + require(gasLimit <= type(uint64).max, "TransferSolanaBridgeOwnership: L2_GAS_LIMIT too large"); + l2GasLimitEnv = uint64(gasLimit); + } + + /// @notice Post-check is a no-op because the L1 simulation cannot verify post-deposit L2 state. + function _postCheck(Vm.AccountAccess[] memory, Simulation.Payload memory) internal override {} + + /// @notice Builds the L1 deposit transactions that transfer ownership of each bridge contract on L2. + /// @dev Each deposit targets the contract (or the ERC1967Factory) directly rather than routing + /// through an L2 CBMulticall, so that the L2 msg.sender is the owner safe's alias and the + /// onlyOwner / adminOf checks pass. + function _buildCalls() internal view override returns (Call[] memory) { + Call[] memory calls = new Call[](7); + + address newOwnerAlias = newOwnerSafeEnv.applyL1ToL2Alias(); + bytes memory transferOwnerCalldata = abi.encodeCall(IOwnable.transferOwnership, (newOwnerAlias)); + + // Bridge: OwnableRoles functional owner + ERC1967 proxy admin (both currently the old alias). + calls[0] = _deposit({l2Target: bridgeEnv, l2Calldata: transferOwnerCalldata}); + calls[1] = _deposit({ + l2Target: erc1967FactoryEnv, + l2Calldata: abi.encodeCall(IERC1967Factory.changeAdmin, (bridgeEnv, newOwnerAlias)) + }); + + // Beacons: Solady UpgradeableBeacon owner. + calls[2] = _deposit({l2Target: twinBeaconEnv, l2Calldata: transferOwnerCalldata}); + calls[3] = _deposit({l2Target: crossChainErc20BeaconEnv, l2Calldata: transferOwnerCalldata}); + + // Proxies with no Ownable owner: ERC1967 proxy admin only. + calls[4] = _deposit({ + l2Target: erc1967FactoryEnv, + l2Calldata: abi.encodeCall(IERC1967Factory.changeAdmin, (crossChainErc20FactoryEnv, newOwnerAlias)) + }); + calls[5] = _deposit({ + l2Target: erc1967FactoryEnv, + l2Calldata: abi.encodeCall(IERC1967Factory.changeAdmin, (bridgeValidatorEnv, newOwnerAlias)) + }); + calls[6] = _deposit({ + l2Target: erc1967FactoryEnv, + l2Calldata: abi.encodeCall(IERC1967Factory.changeAdmin, (relayerOrchestratorEnv, newOwnerAlias)) + }); + + return calls; + } + + /// @notice Wraps an L2 call into an L1 OptimismPortal deposit transaction. + function _deposit(address l2Target, bytes memory l2Calldata) internal view returns (Call memory) { + return Call({ + operation: Enum.Operation.Call, + target: optimismPortalEnv, + data: abi.encodeCall(IOptimismPortal2.depositTransaction, (l2Target, 0, l2GasLimitEnv, false, l2Calldata)), + value: 0 + }); + } + + function _ownerSafe() internal view override returns (address) { + return ownerSafeEnv; + } +} diff --git a/sepolia/2026-06-23-transfer-solana-bridge-ownership/validations/base-signer.json b/sepolia/2026-06-23-transfer-solana-bridge-ownership/validations/base-signer.json new file mode 100644 index 00000000..0a487acc --- /dev/null +++ b/sepolia/2026-06-23-transfer-solana-bridge-ownership/validations/base-signer.json @@ -0,0 +1,60 @@ +{ + "cmd": "mise exec -- forge script --rpc-url https://ethereum-full-sepolia-k8s-dev.cbhq.net TransferSolanaBridgeOwnership --sig sign(address[]) [] --sender 0x6e427c3212C0b63BE0C382F97715D49b011bFF33", + "ledgerId": 1, + "rpcUrl": "https://ethereum-full-sepolia-k8s-dev.cbhq.net", + "expectedDomainAndMessageHashes": { + "address": "0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f", + "domainHash": "0x0127bbb910536860a0757a9c0ffcdf9e4452220f566ed83af1f27f9e833f0e23", + "messageHash": "0xbfd48921a63fbdeb2f13a0ed969eded82ed5f39f93a1ef1da59a3df68ef6aa2a" + }, + "stateOverrides": [ + { + "name": "CB Signer Safe - Sepolia", + "address": "0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f", + "overrides": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000004", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Override the threshold to 1 so the transaction simulation can occur.", + "allowDifference": false + }, + { + "key": "0x6583b5c8426e42b454adeb4ecf58ab89a2433b8764fccccc72647ffdc55eb78e", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001", + "description": "Simulates an approval from msg.sender in order for the task simulation to succeed.", + "allowDifference": false + } + ] + } + ], + "stateChanges": [ + { + "name": "OptimismPortal - Sepolia", + "address": "0x49f53e41452C74589E85cA1677426Ba426459e85", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000001", + "before": "0x0000000000a9b9120000000000143e110000000000000000000000003b9aca00", + "after": "0x0000000000a9b91d00000000000aae600000000000000000000000003b9aca00", + "description": "Updates the ResourceMetering parameters (prevBlockNum, prevBoughtGas, prevBaseFee).", + "allowDifference": true + } + ] + }, + { + "name": "CB Signer Safe - Sepolia", + "address": "0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f", + "changes": [ + { + "key": "0x0000000000000000000000000000000000000000000000000000000000000005", + "before": "0x0000000000000000000000000000000000000000000000000000000000000018", + "after": "0x0000000000000000000000000000000000000000000000000000000000000019", + "description": "Increments the nonce", + "allowDifference": false + } + ] + } + ], + "balanceChanges": [], + "skipTaskOriginValidation": true +}