diff --git a/.circleci/config.yml b/.circleci/config.yml index 238d824dc..c9e273da9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -124,6 +124,79 @@ jobs: cd ops go run ./cmd/print_staging_report/main.go + check-codegen: + circleci_ip_ranges: true + docker: + - image: <> + steps: + - utils/checkout-with-mise + - run: + name: check-codegen-for-changed-chains + command: | + set -e + + # Get list of changed files + CHANGED_FILES=$(git diff --name-only origin/main... | grep "^superchain/configs/.*\.toml$" || true) + if [ -z "$CHANGED_FILES" ]; then + echo "No .toml files changed in superchain/configs, skipping codegen check" + exit 0 + fi + + # Extract chain_ids from changed .toml files + CHAIN_IDS="" + CHAIN_ID_COUNT=0 + CHANGED_FILE_COUNT=0 + + for file in $CHANGED_FILES; do + # If the file is the superchain.toml file, skip it + if [[ "$file" == *"superchain.toml" ]]; then + continue + fi + + CHANGED_FILE_COUNT=$((CHANGED_FILE_COUNT + 1)) + # Use yq to extract chain_id from TOML + CHAIN_ID=$(yq -p=toml -o=json '.chain_id' "$file" | grep -v "null" | tr -d '"') + + if [ -n "$CHAIN_ID" ]; then + if [ -z "$CHAIN_IDS" ]; then + CHAIN_IDS="$CHAIN_ID" + else + CHAIN_IDS="$CHAIN_IDS,$CHAIN_ID" + fi + CHAIN_ID_COUNT=$((CHAIN_ID_COUNT + 1)) + echo "Found chain_id $CHAIN_ID in $file" + fi + done + echo "Found $CHAIN_ID_COUNT chain_ids in $CHANGED_FILE_COUNT files" + + cd ops + if [ "$CHAIN_ID_COUNT" -ne "$CHANGED_FILE_COUNT" ] && [ "$CHANGED_FILE_COUNT" -gt 0 ]; then + # This accounts for changes to superchain.toml files + echo "Running codegen for all chains\n" + go run ./cmd/codegen \ + --l1-rpc-urls="<< pipeline.parameters.sepolia_rpc_url >>,<< pipeline.parameters.mainnet_rpc_url >>" + else + echo "Running codegen for the following chain_ids: $CHAIN_IDS\n" + go run ./cmd/codegen \ + --l1-rpc-urls="<< pipeline.parameters.sepolia_rpc_url >>,<< pipeline.parameters.mainnet_rpc_url >>" \ + --chain-ids="$CHAIN_IDS" + fi + + if [ -n "$(git status --porcelain)" ] ; then + echo "\n❌ Changes detected after running codegen. Run the following command locally and commit the changes:\n" + echo "go run ./cmd/codegen \\" + # Show the appropriate command flags based on which mode was run + if [ "$CHAIN_ID_COUNT" -ne "$CHANGED_FILE_COUNT" ] && [ "$CHANGED_FILE_COUNT" -gt 0 ]; then + echo " --l1-rpc-urls=\"\"" + else + echo " --l1-rpc-urls=\"\" \\" + echo " --chain-ids=\"$CHAIN_IDS\"" + fi + exit 1 + else + echo "\n✅ All codegen files are up to date" + fi + workflows: main: jobs: @@ -136,13 +209,12 @@ workflows: - run-tool: name: check-genesis-integrity tool: check_genesis_integrity - - run-tool: + - check-codegen: name: check-codegen - tool: codegen - check_diff: true - run-tool: name: check-staging-synced tool: sync_staging + args: --l1-rpc-urls="<< pipeline.parameters.sepolia_rpc_url >>,<< pipeline.parameters.mainnet_rpc_url >>" check_diff: true - check-staging-empty: name: check-staging-empty @@ -155,4 +227,3 @@ workflows: tool: check_chainlist - run-staging-report: name: run-staging-report - diff --git a/CHAINS.md b/CHAINS.md index f5e27ba3a..7c45e506f 100755 --- a/CHAINS.md +++ b/CHAINS.md @@ -8,11 +8,12 @@ | BOB | ❌ | ✅ | https://explorer.gobob.xyz | `https://rpc.gobob.xyz` | `https://rpc.gobob.xyz` | | Base | ❌ | ✅ | https://explorer.base.org | `https://mainnet.base.org` | `https://mainnet-sequencer.base.org` | | Binary Mainnet | ❌ | ✅ | https://explorer.thebinaryholdings.com | `https://rpc.zero.thebinaryholdings.com` | `https://sequencer.bnry.mainnet.zeeve.net` | +| Boba Mainnet | ❌ | ❌ | https://bobascan.com | `https://mainnet.boba.network` | `https://mainnet.boba.network` | | Cyber Mainnet | ❌ | ❌ | https://cyberscan.co/ | `https://rpc.cyber.co` | `https://cyber.alt.technology/` | | Ethernity | ❌ | ✅ | https://ernscan.io | `https://mainnet.ethernitychain.io` | `https://mainnet.ethernitychain.io` | | Funki | ❌ | ❌ | https://funki.superscan.network | `https://rpc-mainnet.funkichain.com` | `https://rpc-mainnet.funkichain.com` | | HashKey Chain | ❌ | ❌ | https://explorer.hsk.xyz | `https://mainnet.hsk.xyz` | `https://hashkeychain-mainnet.alt.technology` | -| Ink | ✅ | ❌ | https://explorer.inkonchain.com | `https://rpc-gel.inkonchain.com` | `https://rpc-gel.inkonchain.com` | +| Ink | ✅ | ✅ | https://explorer.inkonchain.com | `https://rpc-gel.inkonchain.com` | `https://rpc-gel.inkonchain.com` | | Lisk | ❌ | ✅ | https://blockscout.lisk.com | `https://rpc.api.lisk.com` | `https://rpc.api.lisk.com` | | Lyra Chain | ❌ | ✅ | https://explorer.lyra.finance | `https://rpc.lyra.finance` | `https://rpc.lyra.finance` | | Metal L2 | ✅ | ✅ | https://explorer.metall2.com | `https://rpc.metall2.com` | `https://rpc.metall2.com` | @@ -23,7 +24,9 @@ | Polynomial | ❌ | ✅ | https://polynomialscan.io | `https://rpc.polynomial.fi` | `https://rpc.polynomial.fi` | | RACE Mainnet | ❌ | ❌ | https://racescan.io/ | `https://racemainnet.io` | `https://racemainnet.io` | | Redstone | ❌ | ❌ | https://explorer.redstone.xyz | `https://rpc.redstonechain.com` | `https://rpc.redstonechain.com` | +| Settlus Mainnet | ❌ | ❌ | mainnet.settlus.network | `https://settlus-mainnet.g.alchemy.com/public` | `https://settlus-mainnet-sequencer.g.alchemy.com/` | | Shape | ❌ | ❌ | https://shape-mainnet.explorer.alchemy.com/ | `https://mainnet.shape.network/` | `https://shape-mainnet-sequencer.g.alchemy.com` | +| SnaxChain | ❌ | ✅ | https://explorer.snaxchain.io | `https://mainnet.snaxchain.io` | `https://mainnet.snaxchain.io` | | Soneium | ✅ | ✅ | https://soneium.blockscout.com/ | `https://rpc.soneium.org` | `https://rpc.soneium.org` | | Superseed | ❌ | ❌ | https://explorer.superseed.xyz | `https://mainnet.superseed.xyz` | `https://mainnet.superseed.xyz` | | Swan Chain Mainnet | ❌ | ❌ | https://swanscan.io | `https://mainnet-rpc.swanchain.org` | `https://sequencer-mainnet.swanchain.org` | @@ -39,17 +42,19 @@ |---|---|---|---|---|---| | Base Sepolia Testnet | ❌ | ✅ | https://sepolia-explorer.base.org | `https://sepolia.base.org` | `https://sepolia-sequencer.base.org` | | Binary Sepolia | ❌ | ❌ | https://explorer.sepolia.thebinaryholdings.com | `https://rpc.testnet.thebinaryholdings.com` | `https://sequencer.rpc.bnry.testnet.zeeve.net` | +| Boba Sepolia Testnet | ❌ | ❌ | https://testnet.bobascan.com | `https://sepolia.boba.network` | `https://sepolia.boba.network` | | Creator Chain Testnet | ❌ | ✅ | https://explorer.creatorchain.io | `https://rpc.creatorchain.io` | `https://rpc.creatorchain.io` | | Cyber Testnet | ❌ | ❌ | https://testnet.cyberscan.co/ | `https://rpc.testnet.cyber.co` | `https://cyber.alt.technology/` | | Ethernity Testnet | ❌ | ✅ | https://testnet.ernscan.io | `https://testnet.ethernitychain.io` | `https://testnet.ethernitychain.io` | | Funki Sepolia Testnet | ❌ | ❌ | https://sepolia-sandbox.funkichain.com/ | `https://funki-testnet.alt.technology` | `https://funki-testnet.alt.technology` | | Ink Sepolia | ✅ | ✅ | https://explorer-sepolia.inkonchain.com | `https://rpc-gel-sepolia.inkonchain.com` | `https://rpc-gel-sepolia.inkonchain.com` | -| Lisk Sepolia Testnet | ❌ | ❌ | https://sepolia-blockscout.lisk.com | `https://rpc.sepolia-api.lisk.com` | `https://rpc.sepolia-api.lisk.com` | +| Lisk Sepolia Testnet | ❌ | ✅ | https://sepolia-blockscout.lisk.com | `https://rpc.sepolia-api.lisk.com` | `https://rpc.sepolia-api.lisk.com` | | Metal L2 Testnet | ✅ | ✅ | https://testnet.explorer.metall2.com | `https://testnet.rpc.metall2.com` | `https://testnet.rpc.metall2.com` | | Mode Testnet | ✅ | ✅ | https://sepolia.explorer.mode.network | `https://sepolia.mode.network` | `https://sepolia.mode.network` | | OP Sepolia Testnet | ✅ | ✅ | https://sepolia-optimistic.etherscan.io | `https://sepolia.optimism.io` | `https://sepolia-sequencer.optimism.io` | | Pivotal Sepolia | ❌ | ❌ | https://sepolia.pivotalscan.org/ | `https://sepolia.pivotalprotocol.com/` | `https://sepolia.pivotalprotocol.com/` | | RACE Testnet | ❌ | ❌ | https://testnet.racescan.io/ | `https://racetestnet.io` | `https://racetestnet.io` | +| Settlus Sepolia | ❌ | ❌ | sepolia.settlus.network | `https://settlus-septestnet.g.alchemy.com/public` | `https://settlus-sep-testnet-sequencer.g.alchemy.com/` | | Shape Sepolia Testnet | ❌ | ❌ | https://shape-sepolia.explorer.alchemy.com/ | `https://sepolia.shape.network/` | `https://shape-sepolia-sequencer.g.alchemy.com` | | Soneium Testnet Minato | ✅ | ✅ | https://soneium-minato.blockscout.com/ | `https://rpc.minato.soneium.org` | `https://rpc.minato.soneium.org` | | Unichain Sepolia Testnet | ✅ | ✅ | https://sepolia.uniscan.xyz | `https://sepolia.unichain.org` | `https://sepolia-sequencer.unichain.org` | @@ -61,6 +66,7 @@ | Chain Name | OP Governed[^1] | Superchain Hardforks[^2] | Explorer | Public RPC | Sequencer RPC |---|---|---|---|---|---| | Base devnet 0 | ❌ | ✅ | | `` | `` | +| Boba Devnet | ❌ | ❌ | https://__PLACEHOLDER__.boba.network | `https://devnet.boba.network` | `https://devnet.boba.network` | | OP Labs Sepolia devnet 0 | ✅ | ✅ | | `` | `` | diff --git a/chainList.json b/chainList.json index 0e567f5d1..17c9bc921 100755 --- a/chainList.json +++ b/chainList.json @@ -16,7 +16,10 @@ "type": "L2", "chain": "mainnet" }, - "gasPayingToken": "0xA2120b9e674d3fC3875f415A7DF52e382F141225" + "gasPayingToken": "0xA2120b9e674d3fC3875f415A7DF52e382F141225", + "faultProofs": { + "status": "none" + } }, { "name": "BOB", @@ -34,6 +37,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -52,6 +58,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissionless" } }, { @@ -71,7 +80,10 @@ "type": "L2", "chain": "mainnet" }, - "gasPayingToken": "0x04E9D7e336f79Cdab911b06133D3Ca2Cd0721ce3" + "gasPayingToken": "0x04E9D7e336f79Cdab911b06133D3Ca2Cd0721ce3", + "faultProofs": { + "status": "none" + } }, { "name": "Cyber Mainnet", @@ -89,6 +101,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -107,6 +122,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -125,6 +143,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -144,7 +165,10 @@ "type": "L2", "chain": "mainnet" }, - "gasPayingToken": "0xE7C6BF469e97eEB0bFB74C8dbFF5BD47D4C1C98a" + "gasPayingToken": "0xE7C6BF469e97eEB0bFB74C8dbFF5BD47D4C1C98a", + "faultProofs": { + "status": "permissioned" + } }, { "name": "Ink", @@ -162,6 +186,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissionless" } }, { @@ -180,6 +207,30 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" + } + }, + { + "name": "Boba Mainnet", + "identifier": "mainnet/boba", + "chainId": 288, + "rpc": [ + "https://mainnet.boba.network" + ], + "explorers": [ + "https://bobascan.com" + ], + "superchainLevel": 0, + "governedByOptimism": false, + "dataAvailabilityType": "eth-da", + "parent": { + "type": "L2", + "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -198,6 +249,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -216,6 +270,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -234,6 +291,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -252,6 +312,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -270,6 +333,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissionless" } }, { @@ -288,6 +354,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -306,6 +375,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -324,6 +396,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -342,6 +417,30 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" + } + }, + { + "name": "Settlus Mainnet", + "identifier": "mainnet/settlus-mainnet", + "chainId": 5371, + "rpc": [ + "https://settlus-mainnet.g.alchemy.com/public" + ], + "explorers": [ + "mainnet.settlus.network" + ], + "superchainLevel": 0, + "governedByOptimism": false, + "dataAvailabilityType": "eth-da", + "parent": { + "type": "L2", + "chain": "mainnet" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -360,6 +459,30 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissioned" + } + }, + { + "name": "SnaxChain", + "identifier": "mainnet/snax", + "chainId": 2192, + "rpc": [ + "https://mainnet.snaxchain.io" + ], + "explorers": [ + "https://explorer.snaxchain.io" + ], + "superchainLevel": 0, + "governedByOptimism": false, + "dataAvailabilityType": "eth-da", + "parent": { + "type": "L2", + "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -378,6 +501,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -396,6 +522,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -414,6 +543,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -432,6 +564,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -450,6 +585,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissionless" } }, { @@ -468,6 +606,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -486,6 +627,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -504,6 +648,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "none" } }, { @@ -522,6 +669,9 @@ "parent": { "type": "L2", "chain": "mainnet" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -540,6 +690,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissionless" } }, { @@ -559,7 +712,31 @@ "type": "L2", "chain": "sepolia" }, - "gasPayingToken": "0x46d878bf7BF62Ec542953CB89Ac0bF58d991181e" + "gasPayingToken": "0x46d878bf7BF62Ec542953CB89Ac0bF58d991181e", + "faultProofs": { + "status": "none" + } + }, + { + "name": "Boba Sepolia Testnet", + "identifier": "sepolia/boba", + "chainId": 28882, + "rpc": [ + "https://sepolia.boba.network" + ], + "explorers": [ + "https://testnet.bobascan.com" + ], + "superchainLevel": 0, + "governedByOptimism": false, + "dataAvailabilityType": "eth-da", + "parent": { + "type": "L2", + "chain": "sepolia" + }, + "faultProofs": { + "status": "permissionless" + } }, { "name": "Creator Chain Testnet", @@ -577,6 +754,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -595,6 +775,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -613,6 +796,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -631,6 +817,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -649,6 +838,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissionless" } }, { @@ -667,6 +859,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -685,6 +880,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -703,6 +901,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -721,6 +922,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissionless" } }, { @@ -739,6 +943,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -757,6 +964,30 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissioned" + } + }, + { + "name": "Settlus Sepolia", + "identifier": "sepolia/settlus-sepolia", + "chainId": 5373, + "rpc": [ + "https://settlus-septestnet.g.alchemy.com/public" + ], + "explorers": [ + "sepolia.settlus.network" + ], + "superchainLevel": 0, + "governedByOptimism": false, + "dataAvailabilityType": "eth-da", + "parent": { + "type": "L2", + "chain": "sepolia" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -775,6 +1006,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -793,6 +1027,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -811,6 +1048,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissionless" } }, { @@ -829,6 +1069,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -847,6 +1090,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "permissioned" } }, { @@ -865,6 +1111,9 @@ "parent": { "type": "L2", "chain": "sepolia" + }, + "faultProofs": { + "status": "none" } }, { @@ -883,6 +1132,31 @@ "parent": { "type": "L2", "chain": "sepolia-dev-0" + }, + "faultProofs": { + "status": "permissionless" + } + }, + { + "name": "Boba Devnet", + "identifier": "sepolia-dev-0/boba", + "chainId": 288882, + "rpc": [ + "https://devnet.boba.network" + ], + "explorers": [ + "https://__PLACEHOLDER__.boba.network" + ], + "superchainLevel": 0, + "governedByOptimism": false, + "dataAvailabilityType": "eth-da", + "parent": { + "type": "L2", + "chain": "sepolia-dev-0" + }, + "gasPayingToken": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + "faultProofs": { + "status": "permissionless" } }, { @@ -901,6 +1175,9 @@ "parent": { "type": "L2", "chain": "sepolia-dev-0" + }, + "faultProofs": { + "status": "permissionless" } } ] \ No newline at end of file diff --git a/chainList.toml b/chainList.toml index cc86a09c4..c152522a2 100755 --- a/chainList.toml +++ b/chainList.toml @@ -11,6 +11,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "BOB" @@ -24,6 +26,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Base" @@ -37,6 +41,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "Binary Mainnet" @@ -51,6 +57,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Cyber Mainnet" @@ -64,6 +72,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Ethernity" @@ -77,6 +87,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Funki" @@ -90,6 +102,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "HashKey Chain" @@ -104,6 +118,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Ink" @@ -117,6 +133,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "Lisk" @@ -130,6 +148,23 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" + +[[chains]] + name = "Boba Mainnet" + identifier = "mainnet/boba" + chain_id = 288 + rpc = ["https://mainnet.boba.network"] + explorers = ["https://bobascan.com"] + superchain_level = 0 + governed_by_optimism = false + data_availability_type = "eth-da" + [chains.parent] + type = "L2" + chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Lyra Chain" @@ -143,6 +178,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Metal L2" @@ -156,6 +193,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Mint Mainnet" @@ -169,6 +208,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Mode" @@ -182,6 +223,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "OP Mainnet" @@ -195,6 +238,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "Orderly Mainnet" @@ -208,6 +253,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Polynomial" @@ -221,6 +268,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "RACE Mainnet" @@ -234,6 +283,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Redstone" @@ -247,6 +298,23 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" + +[[chains]] + name = "Settlus Mainnet" + identifier = "mainnet/settlus-mainnet" + chain_id = 5371 + rpc = ["https://settlus-mainnet.g.alchemy.com/public"] + explorers = ["mainnet.settlus.network"] + superchain_level = 0 + governed_by_optimism = false + data_availability_type = "eth-da" + [chains.parent] + type = "L2" + chain = "mainnet" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Shape" @@ -260,6 +328,23 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissioned" + +[[chains]] + name = "SnaxChain" + identifier = "mainnet/snax" + chain_id = 2192 + rpc = ["https://mainnet.snaxchain.io"] + explorers = ["https://explorer.snaxchain.io"] + superchain_level = 0 + governed_by_optimism = false + data_availability_type = "eth-da" + [chains.parent] + type = "L2" + chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Soneium" @@ -273,6 +358,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Superseed" @@ -286,6 +373,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Swan Chain Mainnet" @@ -299,6 +388,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Swellchain" @@ -312,6 +403,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Unichain" @@ -325,6 +418,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "World Chain" @@ -338,6 +433,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Xterio Chain (ETH)" @@ -351,6 +448,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "Zora" @@ -364,6 +463,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "none" [[chains]] name = "arena-z" @@ -377,6 +478,8 @@ [chains.parent] type = "L2" chain = "mainnet" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Base Sepolia Testnet" @@ -390,6 +493,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "Binary Sepolia" @@ -404,6 +509,23 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" + +[[chains]] + name = "Boba Sepolia Testnet" + identifier = "sepolia/boba" + chain_id = 28882 + rpc = ["https://sepolia.boba.network"] + explorers = ["https://testnet.bobascan.com"] + superchain_level = 0 + governed_by_optimism = false + data_availability_type = "eth-da" + [chains.parent] + type = "L2" + chain = "sepolia" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "Creator Chain Testnet" @@ -417,6 +539,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "Cyber Testnet" @@ -430,6 +554,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "Ethernity Testnet" @@ -443,6 +569,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "Funki Sepolia Testnet" @@ -456,6 +584,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "Ink Sepolia" @@ -469,6 +599,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "Lisk Sepolia Testnet" @@ -482,6 +614,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "Metal L2 Testnet" @@ -495,6 +629,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "Mode Testnet" @@ -508,6 +644,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "OP Sepolia Testnet" @@ -521,6 +659,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "Pivotal Sepolia" @@ -534,6 +674,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "RACE Testnet" @@ -547,6 +689,23 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissioned" + +[[chains]] + name = "Settlus Sepolia" + identifier = "sepolia/settlus-sepolia" + chain_id = 5373 + rpc = ["https://settlus-septestnet.g.alchemy.com/public"] + explorers = ["sepolia.settlus.network"] + superchain_level = 0 + governed_by_optimism = false + data_availability_type = "eth-da" + [chains.parent] + type = "L2" + chain = "sepolia" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Shape Sepolia Testnet" @@ -560,6 +719,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Soneium Testnet Minato" @@ -573,6 +734,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Unichain Sepolia Testnet" @@ -586,6 +749,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "World Chain Sepolia Testnet" @@ -599,6 +764,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "Zora Sepolia Testnet" @@ -612,6 +779,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "permissioned" [[chains]] name = "arena-z-testnet" @@ -625,6 +794,8 @@ [chains.parent] type = "L2" chain = "sepolia" + [chains.fault_proofs] + status = "none" [[chains]] name = "Base devnet 0" @@ -638,6 +809,24 @@ [chains.parent] type = "L2" chain = "sepolia-dev-0" + [chains.fault_proofs] + status = "permissionless" + +[[chains]] + name = "Boba Devnet" + identifier = "sepolia-dev-0/boba" + chain_id = 288882 + rpc = ["https://devnet.boba.network"] + explorers = ["https://__PLACEHOLDER__.boba.network"] + superchain_level = 0 + governed_by_optimism = false + data_availability_type = "eth-da" + gas_paying_token = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" + [chains.parent] + type = "L2" + chain = "sepolia-dev-0" + [chains.fault_proofs] + status = "permissionless" [[chains]] name = "OP Labs Sepolia devnet 0" @@ -651,3 +840,5 @@ [chains.parent] type = "L2" chain = "sepolia-dev-0" + [chains.fault_proofs] + status = "permissionless" diff --git a/docs/hardfork-activation-inheritance.md b/docs/hardfork-activation-inheritance.md index 0e8c17ff8..d7d984b31 100644 --- a/docs/hardfork-activation-inheritance.md +++ b/docs/hardfork-activation-inheritance.md @@ -15,9 +15,12 @@ At the time of writing, this is implemented for * [op-geth](https://docs.optimism.io/builders/node-operators/configuration/base-config#initialization-via-network-flags) * [op-node](https://docs.optimism.io/builders/node-operators/configuration/base-config#configuring-op-node) -These components load configuration from the superchain registry. This implies some more conditions which need to hold for a chain to receive the superchain-wide hardfork activation: +> [!NOTE] +> Since [version 2.0](https://github.com/ethereum-optimism/superchain-registry/pull/816) of the superchain registry, the inherited hardfork activation times are applied directly to each chain's individual chain config TOML file. What you see is what you get (unlike in previous iterations of the registry, where the inheritance was applied "magically" by Go bindings). + +The OPStack components above load configuration from the superchain registry. This implies some more conditions which need to hold for a chain to receive the superchain-wide hardfork activation: * They must be running the above OP Stack software which supports this feature, with the relevant initialization invocations to trigger it -* The software must be up-to-date enough to embed the latest superchain-wide default hardfork activation times as well as the chain's individual configuration file (complete with `superchain_time` field). +* The software must be up-to-date enough to embed the chain's latest configuration file. > [!CAUTION] > If (for example) OP Stack components are initialized without the network flags, this will require manual coordination to pass hardfork activation times into the command line invocation of the relevant commands. diff --git a/justfile b/justfile index a46391056..1ef701082 100644 --- a/justfile +++ b/justfile @@ -47,8 +47,6 @@ print-staging-report: (_run_ops_bin 'print_staging_report') check-genesis-integrity: (_run_ops_bin 'check_genesis_integrity') -codegen: (_run_ops_bin 'codegen') - create-config SHORTNAME FILENAME: @just _run_ops_bin "create_config" "--shortname {{SHORTNAME}} --state-filename $(realpath {{FILENAME}})" diff --git a/mise.toml b/mise.toml index ece3589a8..3b4be42d4 100644 --- a/mise.toml +++ b/mise.toml @@ -3,6 +3,7 @@ # Core dependencies go = "1.23.1" just = "1.37.0" +yq = "4.44.5" # Go dependencies "go:gotest.tools/gotestsum" = "1.12.0" diff --git a/ops/cmd/check_genesis_integrity/main.go b/ops/cmd/check_genesis_integrity/main.go index 24026e61e..eb55719f9 100644 --- a/ops/cmd/check_genesis_integrity/main.go +++ b/ops/cmd/check_genesis_integrity/main.go @@ -35,8 +35,10 @@ func mainErr() error { } for _, cfg := range cfgs { - if cfg.ShortName == "op" { - output.WriteWarn("skipping op %s - chain was migrated from a legacy state", superchain) + if (cfg.ShortName == "op" && superchain == "mainnet") || + (cfg.ShortName == "boba" && superchain == "mainnet") || + (cfg.ShortName == "boba" && superchain == "sepolia") { + output.WriteWarn("skipping %s %s - chain was migrated from a legacy state", cfg.ShortName, superchain) continue } diff --git a/ops/cmd/codegen/main.go b/ops/cmd/codegen/main.go index 050a21ea7..8794f7d20 100644 --- a/ops/cmd/codegen/main.go +++ b/ops/cmd/codegen/main.go @@ -3,28 +3,105 @@ package main import ( "fmt" "os" + "strconv" + "strings" + "github.com/ethereum-optimism/optimism/op-fetcher/pkg/fetcher/fetch/script" + "github.com/ethereum-optimism/superchain-registry/ops/internal/config" "github.com/ethereum-optimism/superchain-registry/ops/internal/manage" "github.com/ethereum-optimism/superchain-registry/ops/internal/output" "github.com/ethereum-optimism/superchain-registry/ops/internal/paths" + "github.com/ethereum/go-ethereum/log" + "github.com/urfave/cli/v2" +) + +var ( + L1RPCURLsFlag = &cli.StringFlag{ + Name: "l1-rpc-urls", + Usage: "comma-separated list of L1 RPC URLs (only need multiple if fetching from multiple superchains)", + EnvVars: []string{"L1_RPC_URLS"}, + Required: true, + } + ChainIDFlag = &cli.StringFlag{ + Name: "chain-ids", + Usage: "comma-separated list of l2 chainIds to update (optional, fetches all chains if not provided)", + } + SuperchainsFlag = &cli.StringFlag{ + Name: "superchains", + Usage: "comma-separated list of superchains to update (cannot provide both chain-ids and superchains flags, default to all superchains if not provided)", + } ) func main() { - if err := mainErr(); err != nil { - output.WriteNotOK("application error: %v", err) + app := &cli.App{ + Name: "codegen", + Usage: "uses op-fetcher to fetch onchain config data for chain(s) in the superchain-registry, then propagates the data to codegen files", + Flags: []cli.Flag{ + L1RPCURLsFlag, + ChainIDFlag, + SuperchainsFlag, + }, + Action: CodegenCLI, + } + if err := app.Run(os.Args); err != nil { + output.WriteStderr("%v", err) os.Exit(1) } } -func mainErr() error { +func CodegenCLI(cliCtx *cli.Context) error { + l1RpcUrls := strings.Split(cliCtx.String("l1-rpc-urls"), ",") + chainIdStr := cliCtx.String("chain-ids") + superchainsStr := cliCtx.String("superchains") + if chainIdStr != "" && superchainsStr != "" { + return fmt.Errorf("cannot provide both chain-ids and superchains flags") + } + + var superchains []config.Superchain + if superchainsStr != "" { + superchainStrs := strings.Split(superchainsStr, ",") + for _, superchainStr := range superchainStrs { + superchainStr = strings.TrimSpace(superchainStr) + superchain, err := config.ParseSuperchain(superchainStr) + if err != nil { + return err + } + superchains = append(superchains, superchain) + } + } + + var chainIds []uint64 + if chainIdStr != "" { + chainIdStrs := strings.Split(chainIdStr, ",") + // Convert each string to uint64 + for _, idStr := range chainIdStrs { + idStr = strings.TrimSpace(idStr) + id, err := strconv.ParseUint(idStr, 10, 64) + if err != nil { + return fmt.Errorf("invalid chain ID '%s': %w", idStr, err) + } + chainIds = append(chainIds, id) + } + } + + lgr := log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelInfo, false)) wd, err := paths.FindRepoRoot() if err != nil { return fmt.Errorf("failed to get working directory: %w", err) } - if err := manage.GenAllCode(wd); err != nil { - return fmt.Errorf("error generating code: %w", err) + var onchainCfgs map[uint64]script.ChainConfig + ctx := cliCtx.Context + onchainCfgs, err = manage.FetchChains(ctx, lgr, wd, l1RpcUrls, chainIds, superchains) + if err != nil { + return fmt.Errorf("error fetching onchain configs: %w", err) + } + syncer, err := manage.NewCodegenSyncer(lgr, wd, onchainCfgs) + if err != nil { + return fmt.Errorf("error creating codegen syncer: %w", err) + } + if err := syncer.SyncAll(); err != nil { + return fmt.Errorf("error syncing codegen: %w", err) } - return nil } diff --git a/ops/cmd/sync_staging/main.go b/ops/cmd/sync_staging/main.go index aa4548b5d..85b42de8f 100644 --- a/ops/cmd/sync_staging/main.go +++ b/ops/cmd/sync_staging/main.go @@ -5,10 +5,13 @@ import ( "fmt" "os" "path" + "strings" + "github.com/ethereum-optimism/superchain-registry/ops/internal/config" "github.com/ethereum-optimism/superchain-registry/ops/internal/manage" "github.com/ethereum-optimism/superchain-registry/ops/internal/output" "github.com/ethereum-optimism/superchain-registry/ops/internal/paths" + "github.com/ethereum/go-ethereum/log" "github.com/urfave/cli/v2" ) @@ -21,6 +24,11 @@ var ( Name: "preserve-input", Usage: "Skip cleanup of staging directory.", } + FlagL1RPCURLs = &cli.StringFlag{ + Name: "l1-rpc-urls", + Usage: "Comma-separated list of L1 RPC URLs", + Required: true, + } ) func main() { @@ -30,6 +38,7 @@ func main() { Flags: []cli.Flag{ FlagCheck, FlagPreserveInput, + FlagL1RPCURLs, }, Action: action, } @@ -96,8 +105,20 @@ func action(cliCtx *cli.Context) error { output.WriteOK("wrote genesis files") - if err := manage.GenAllCode(wd); err != nil { - return fmt.Errorf("failed to generate code: %w", err) + // Codegen + lgr := log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelInfo, false)) + l1RpcUrls := strings.Split(cliCtx.String("l1-rpc-urls"), ",") + ctx := cliCtx.Context + onchainCfgs, err := manage.FetchChains(ctx, lgr, wd, l1RpcUrls, []uint64{chainCfg.ChainID}, []config.Superchain{}) + if err != nil { + return fmt.Errorf("error fetching onchain configs: %w", err) + } + syncer, err := manage.NewCodegenSyncer(lgr, wd, onchainCfgs) + if err != nil { + return fmt.Errorf("error creating codegen syncer: %w", err) + } + if err := syncer.SyncAll(); err != nil { + return fmt.Errorf("error syncing codegen: %w", err) } if !noCleanup { diff --git a/ops/go.mod b/ops/go.mod index 45e6d17ea..136d1c775 100644 --- a/ops/go.mod +++ b/ops/go.mod @@ -4,106 +4,83 @@ go 1.23.1 require ( github.com/BurntSushi/toml v1.4.0 - github.com/ethereum-optimism/optimism v1.10.1-0.20250119231617-e6277226d156 - github.com/ethereum/go-ethereum v1.14.12 - github.com/lmittmann/w3 v0.17.4 + github.com/ethereum-optimism/optimism v1.12.3-0.20250402215013-5391bf29692d + github.com/ethereum/go-ethereum v1.15.3 + github.com/lmittmann/w3 v0.17.8 github.com/stretchr/testify v1.10.0 github.com/urfave/cli/v2 v2.27.5 ) require ( - github.com/ethereum-optimism/superchain-registry/validation v0.0.0-20241225221610-a64f6a26aa8e + github.com/ethereum-optimism/superchain-registry/validation v0.0.0-20250314162817-2c60e5723c64 github.com/google/go-github/v68 v68.0.0 - github.com/klauspost/compress v1.17.11 + github.com/klauspost/compress v1.18.0 + golang.org/x/sync v0.10.0 ) require ( - github.com/DataDog/zstd v1.5.6-0.20230824185856-869dae002e5e // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.13.0 // indirect + github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/btcsuite/btcd v0.24.2 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/btcutil v1.1.5 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cockroachdb/errors v1.11.3 // indirect - github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect - github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.3 // indirect - github.com/cockroachdb/redact v1.1.5 // indirect - github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/consensys/bavard v0.1.13 // indirect - github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/consensys/bavard v0.1.27 // indirect + github.com/consensys/gnark-crypto v0.16.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect - github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect + github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 // indirect - github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20250115145553-996c7aba6565 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect + github.com/ethereum/go-verkle v0.2.2 // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect - github.com/getsentry/sentry-go v0.27.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/gofrs/flock v0.8.1 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.5.1 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-bexpr v0.1.11 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect github.com/holiman/uint256 v1.3.2 // indirect - github.com/huin/goupnp v1.3.0 // indirect - github.com/jackpal/go-nat-pmp v1.0.2 // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mitchellh/pointerstructure v1.2.1 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/naoina/go-stringutil v0.1.0 // indirect + github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.5 // indirect + github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/rs/cors v1.11.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/schollz/progressbar/v3 v3.18.0 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect - github.com/supranational/blst v0.3.13 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect + github.com/supranational/blst v0.3.14 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect - golang.org/x/crypto v0.31.0 // indirect + golang.org/x/crypto v0.32.0 // indirect golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect - golang.org/x/mod v0.21.0 // indirect - golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/term v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/time v0.9.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect + golang.org/x/time v0.10.0 // indirect + google.golang.org/protobuf v1.36.3 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) -replace github.com/ethereum/go-ethereum => github.com/ethereum-optimism/op-geth v1.101412.0-rc.1 +replace github.com/ethereum/go-ethereum => github.com/ethereum-optimism/op-geth v1.101503.2-rc.5.0.20250401164435-02dfe8692a3c diff --git a/ops/go.sum b/ops/go.sum index de9b80c6c..ad0cbf982 100644 --- a/ops/go.sum +++ b/ops/go.sum @@ -12,8 +12,8 @@ github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKS github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= -github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= +github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= @@ -45,34 +45,30 @@ github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= -github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM= +github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.3 h1:GM5YY3Yb09KCGUQoyWdi3vsLErXHsmc3qRRWsX+tBqw= -github.com/cockroachdb/pebble v1.1.3/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.4 h1:5II1uEP4MyHLDnsrbv/EZ36arcb9Mxg3n+owhZ3GrG8= +github.com/cockroachdb/pebble v1.1.4/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= -github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= -github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/consensys/bavard v0.1.27 h1:j6hKUrGAy/H+gpNrpLU3I26n1yc+VMGmd6ID5+gAhOs= +github.com/consensys/bavard v0.1.27/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= +github.com/consensys/gnark-crypto v0.16.0 h1:8Dl4eYmUWK9WmlP1Bj6je688gBRJCJbT8Mw4KoTAawo= +github.com/consensys/gnark-crypto v0.16.0/go.mod h1:Ke3j06ndtPTVvo++PhGNgvm+lgpLvzbcE2MqljY7diU= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= -github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= -github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= +github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= +github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= +github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -89,37 +85,31 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3 github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 h1:RWHKLhCrQThMfch+QJ1Z8veEq5ZO3DfIhZ7xgRP9WTc= github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3/go.mod h1:QziizLAiF0KqyLdNJYD7O5cpDlaFMNZzlxYNcWsJUxs= -github.com/ethereum-optimism/op-geth v1.101412.0-rc.1 h1:Un6Cnr4QkQx+s/Rp1iWvsBD+lIE1xZd8RKIKxGmChTk= -github.com/ethereum-optimism/op-geth v1.101412.0-rc.1/go.mod h1:lRTd6c45e98fA9Cm0c8SrtqiSNYtxUBBZo3ofJbQh5I= -github.com/ethereum-optimism/optimism v1.10.1-0.20250119231617-e6277226d156 h1:JIvz10NB1ToTiLyKhHZHHNuOuHtbvjbbZlwjASm8UpA= -github.com/ethereum-optimism/optimism v1.10.1-0.20250119231617-e6277226d156/go.mod h1:gooqC+mAy2VNLr2ToVFHSTO0TwwCUGu1tREmFkBhO0k= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20250115145553-996c7aba6565 h1:jhMVWUohS71nsNg8Q8d7DatiGpPocvUNGr/zP8a+79A= -github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20250115145553-996c7aba6565/go.mod h1:9feO8jcL5OZ1tvRjEfNAHz4Aggvd6373l+ZxmZZAyZs= -github.com/ethereum-optimism/superchain-registry/validation v0.0.0-20241225221610-a64f6a26aa8e h1:LgBlPe5BoHx7bFf7pZH8mI1XXCk4/QE9PWy7gJ0Qvf8= -github.com/ethereum-optimism/superchain-registry/validation v0.0.0-20241225221610-a64f6a26aa8e/go.mod h1:5fkx5lOi+eFqnVF52kKBIGOtjjkEWyD0HhYCT6zIRD8= +github.com/ethereum-optimism/op-geth v1.101503.2-rc.5.0.20250401164435-02dfe8692a3c h1:2uU1Jx+wuqGtWR/qsZrmB+jfR+/hslowPS11bvBAda4= +github.com/ethereum-optimism/op-geth v1.101503.2-rc.5.0.20250401164435-02dfe8692a3c/go.mod h1:QUo3fn+45vWqJWzJW+rIzRHUV7NmhhHLPdI87mAn1M8= +github.com/ethereum-optimism/optimism v1.12.3-0.20250402215013-5391bf29692d h1:UGWjnYcPm7e0AOWZGyKhgBj+67oq8ZRrJYYu4Kfh7uw= +github.com/ethereum-optimism/optimism v1.12.3-0.20250402215013-5391bf29692d/go.mod h1:Pf1bUvfjbot5RyCmsfPKFR0kcBCT/HZvSlISRtB1+KE= +github.com/ethereum-optimism/superchain-registry/validation v0.0.0-20250314162817-2c60e5723c64 h1:teDhU4h4ryaE8rSBl+vJJiwKHjxdnnHPkKZ9iNr2R8k= +github.com/ethereum-optimism/superchain-registry/validation v0.0.0-20250314162817-2c60e5723c64/go.mod h1:NZ816PzLU1TLv1RdAvYAb6KWOj4Zm5aInT0YpDVml2Y= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= -github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= +github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= -github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= -github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= -github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= +github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -127,8 +117,6 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -136,16 +124,14 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github/v68 v68.0.0 h1:ZW57zeNZiXTdQ16qrDiZ0k6XucrxZ2CGmoTvcCyQG6s= github.com/google/go-github/v68 v68.0.0/go.mod h1:K9HAUBovM2sLwM408A18h+wd9vqdLOEqTUCbnRIcx68= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 h1:Ep/joEub9YwcjRY6ND3+Y/w0ncE540RtGatVhtZL0/Q= github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -170,36 +156,37 @@ github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/lmittmann/w3 v0.17.4 h1:nHaX3EymuMoup5eQ/qpU4YVR67boSDGewGQt90DgJng= -github.com/lmittmann/w3 v0.17.4/go.mod h1:+NTGtk54BK1W7572qRaiZ9ywVSaKeObg490bUVvKjAs= +github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= +github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= +github.com/lmittmann/w3 v0.17.8 h1:Rv0xCIvmxyNOZrr24pTphhgE9WUrgVOMUkRBwATq42s= +github.com/lmittmann/w3 v0.17.8/go.mod h1:FAT1oPIK/NTHE2g8k9z0zOoAQ+Fl0pB2fsMQLYurzaE= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.1 h1:ZhBBeX8tSlRpu/FFhXH4RC4OJzFlqsQhoHZAz4x7TIw= @@ -209,65 +196,67 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 h1:shk/vn9oCoOTmwcouEdwIeOtOGA/ELRUw/GwvxwfT+0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk= +github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE= +github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= +github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= +github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= +github.com/pion/stun/v2 v2.0.0 h1:A5+wXKLAypxQri59+tmQKVs7+l6mMM+3d+eER9ifRU0= +github.com/pion/stun/v2 v2.0.0/go.mod h1:22qRSh08fSEttYUmJZGlriq9+03jtVmXNODgLccj8GQ= +github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= +github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= +github.com/pion/transport/v3 v3.0.7 h1:iRbMH05BzSNwhILHoBoAPxoB9xQgOaJk+591KC9P1o0= +github.com/pion/transport/v3 v3.0.7/go.mod h1:YleKiTZ4vqNxVwh77Z0zytYi7rXHl7j6uPLGhhz9rwo= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= +github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/cors v1.11.0 h1:0B9GE/r9Bc2UxRMMtymBkHTenPkHDv0CW4Y98GBY+po= github.com/rs/cors v1.11.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/schollz/progressbar/v3 v3.18.0 h1:uXdoHABRFmNIjUfte/Ex7WtuyVslrw2wVPQmCN62HpA= +github.com/schollz/progressbar/v3 v3.18.0/go.mod h1:IsO3lpbaGuzh8zIMzgY3+J8l4C8GjO0Y9S69eFvNsec= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= -github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= +github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a h1:1ur3QoCqvE5fl+nylMaIr9PVV1w343YRDtsy+Rwu7XI= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= @@ -279,42 +268,27 @@ github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2n github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= +github.com/wlynxg/anet v0.0.4 h1:0de1OFQxnNqAu+x2FAKKCVIrnfGKQbs7FQz++tB0+Uw= +github.com/wlynxg/anet v0.0.4/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= -golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -324,69 +298,43 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU= +google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= diff --git a/ops/internal/config/address.go b/ops/internal/config/address.go index 81b21cde4..bc5ee3f7e 100644 --- a/ops/internal/config/address.go +++ b/ops/internal/config/address.go @@ -1,6 +1,7 @@ package config import ( + "encoding/json" "fmt" "github.com/ethereum/go-ethereum/common" @@ -19,20 +20,7 @@ func (a *ChecksummedAddress) UnmarshalTOML(data any) error { return fmt.Errorf("expected a string, got %T", data) } - if len(dataStr) != 42 { - return fmt.Errorf("invalid address: %s", dataStr) - } - - if !common.IsHexAddress(dataStr) { - return fmt.Errorf("invalid address: %s", dataStr) - } - - addr := common.HexToAddress(dataStr) - if addr.Hex() != dataStr { - return fmt.Errorf("invalid checksummed address: %s", dataStr) - } - *a = ChecksummedAddress(addr) - return nil + return a.parseAddress(dataStr) } func (a ChecksummedAddress) MarshalTOML() ([]byte, error) { @@ -43,6 +31,43 @@ func (a ChecksummedAddress) String() string { return common.Address(a).Hex() } -func (a ChecksummedAddress) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, common.Address(a).Hex())), nil +func (a *ChecksummedAddress) UnmarshalJSON(data []byte) error { + var dataStr string + if err := json.Unmarshal(data, &dataStr); err != nil { + return fmt.Errorf("failed to unmarshal ChecksummedAddress: %w", err) + } + + return a.parseAddress(dataStr) +} + +func (a *ChecksummedAddress) MarshalJSON() ([]byte, error) { + if common.Address(*a) == (common.Address{}) { + // Return null for zero addresses so it doesn't pollute the json output + return []byte("null"), nil + } + return []byte(fmt.Sprintf(`"%s"`, common.Address(*a).Hex())), nil +} + +// Helper function for validating and parsing Ethereum addresses +func (a *ChecksummedAddress) parseAddress(addrStr string) error { + // Validate length + if len(addrStr) != 42 { + return fmt.Errorf("invalid address length: %s", addrStr) + } + + // Validate hex format + if !common.IsHexAddress(addrStr) { + return fmt.Errorf("invalid hex address: %s", addrStr) + } + + // Convert to checksummed address + addr := common.HexToAddress(addrStr) + + // Validate that the address is properly checksummed + if addr.Hex() != addrStr { + return fmt.Errorf("invalid checksummed address: %s", addrStr) + } + + *a = ChecksummedAddress(addr) + return nil } diff --git a/ops/internal/config/chain.go b/ops/internal/config/chain.go index c7288f31e..37783119b 100644 --- a/ops/internal/config/chain.go +++ b/ops/internal/config/chain.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/artifacts" + "github.com/ethereum-optimism/optimism/op-fetcher/pkg/fetcher/fetch/script" "github.com/ethereum-optimism/optimism/op-service/jsonutil" "github.com/ethereum/go-ethereum/common" ) @@ -149,8 +150,8 @@ type Roles struct { ProxyAdminOwner *ChecksummedAddress `json:"ProxyAdminOwner" toml:"ProxyAdminOwner"` Guardian *ChecksummedAddress `json:"Guardian" toml:"Guardian"` Challenger *ChecksummedAddress `json:"Challenger" toml:"Challenger"` - Proposer *ChecksummedAddress `json:"Proposer,omitempty" toml:"Proposer,omitempty"` - UnsafeBlockSigner *ChecksummedAddress `json:"UnsafeBlockSigner,omitempty" toml:"UnsafeBlockSigner,omitempty"` + Proposer *ChecksummedAddress `json:"Proposer" toml:"Proposer"` + UnsafeBlockSigner *ChecksummedAddress `json:"UnsafeBlockSigner" toml:"UnsafeBlockSigner"` BatchSubmitter *ChecksummedAddress `json:"BatchSubmitter" toml:"BatchSubmitter"` } @@ -182,34 +183,93 @@ type AddressesWithRoles struct { Roles } +func CreateAddressesWithRolesFromFetcher(addresses script.Addresses, roles script.Roles) AddressesWithRoles { + addressesWithRoles := AddressesWithRoles{ + Addresses: Addresses{ + AddressManager: NewChecksummedAddress(addresses.AddressManager), + L1CrossDomainMessengerProxy: NewChecksummedAddress(addresses.L1CrossDomainMessengerProxy), + L1ERC721BridgeProxy: NewChecksummedAddress(addresses.L1ERC721BridgeProxy), + L1StandardBridgeProxy: NewChecksummedAddress(addresses.L1StandardBridgeProxy), + L2OutputOracleProxy: NewChecksummedAddress(addresses.L2OutputOracleProxy), + OptimismMintableERC20FactoryProxy: NewChecksummedAddress(addresses.OptimismMintableERC20FactoryProxy), + OptimismPortalProxy: NewChecksummedAddress(addresses.OptimismPortalProxy), + SystemConfigProxy: NewChecksummedAddress(addresses.SystemConfigProxy), + ProxyAdmin: NewChecksummedAddress(addresses.OpChainProxyAdmin), + SuperchainConfig: NewChecksummedAddress(addresses.SuperchainConfig), + AnchorStateRegistryProxy: NewChecksummedAddress(addresses.AnchorStateRegistryProxy), + DisputeGameFactoryProxy: NewChecksummedAddress(addresses.DisputeGameFactoryProxy), + FaultDisputeGame: NewChecksummedAddress(addresses.FaultDisputeGame), + MIPS: NewChecksummedAddress(addresses.Mips), + PermissionedDisputeGame: NewChecksummedAddress(addresses.PermissionedDisputeGame), + PreimageOracle: NewChecksummedAddress(addresses.PreimageOracle), + }, + Roles: Roles{ + SystemConfigOwner: NewChecksummedAddress(roles.SystemConfigOwner), + ProxyAdminOwner: NewChecksummedAddress(roles.OpChainProxyAdminOwner), + Guardian: NewChecksummedAddress(roles.Guardian), + Challenger: NewChecksummedAddress(roles.Challenger), + Proposer: NewChecksummedAddress(roles.Proposer), + UnsafeBlockSigner: NewChecksummedAddress(roles.UnsafeBlockSigner), + BatchSubmitter: NewChecksummedAddress(roles.BatchSubmitter), + }, + } + // Hack until we separate the permissioned and permissionless WETH proxies + if addresses.DelayedWETHPermissionlessGameProxy != (common.Address{}) { + addressesWithRoles.Addresses.DelayedWETHProxy = NewChecksummedAddress(addresses.DelayedWETHPermissionlessGameProxy) + } else { + addressesWithRoles.Addresses.DelayedWETHProxy = NewChecksummedAddress(addresses.DelayedWETHPermissionedGameProxy) + } + + return addressesWithRoles +} + func (a AddressesWithRoles) MarshalJSON() ([]byte, error) { - // Create a map to hold all fields - allFields := make(map[string]*ChecksummedAddress) + // Create a map to hold non-zero address fields + allFields := make(map[string]string) + + // Declare processStruct variable first to allow recursion + var processStruct func(interface{}) + + processStruct = func(structVal interface{}) { + val := reflect.ValueOf(structVal) + typ := reflect.TypeOf(structVal) - for _, embed := range []any{a.Addresses, a.Roles} { - val := reflect.ValueOf(embed) - typ := reflect.TypeOf(embed) for i := 0; i < val.NumField(); i++ { field := val.Field(i) - jsonTag := typ.Field(i).Tag.Get("json") - tagSplit := strings.Split(jsonTag, ",") - fieldName := tagSplit[0] - var omitEmpty bool - if fieldName == "" { - fieldName = typ.Field(i).Name - } - if len(tagSplit) > 1 { - omitEmpty = tagSplit[1] == "omitempty" + // Handle embedded structs + if field.Kind() == reflect.Struct && typ.Field(i).Anonymous { + processStruct(field.Interface()) + continue } - if !omitEmpty && field.IsNil() { - allFields[fieldName] = nil - } else if !field.IsNil() { - allFields[fieldName] = field.Interface().(*ChecksummedAddress) + // Process ChecksummedAddress pointers + if field.Type() == reflect.TypeOf((*ChecksummedAddress)(nil)) { + // Get field name from JSON tag or struct field name + jsonTag := typ.Field(i).Tag.Get("json") + fieldName := strings.Split(jsonTag, ",")[0] + if fieldName == "" { + fieldName = typ.Field(i).Name + } + + // Skip nil pointers + if field.IsNil() { + continue + } + + // Get the address as string + addrPtr := field.Interface().(*ChecksummedAddress) + if addrPtr != nil && *addrPtr != (ChecksummedAddress{}) { + allFields[fieldName] = addrPtr.String() + } + continue } } } + // Process both embedded structs + processStruct(a.Addresses) + processStruct(a.Roles) + return json.Marshal(allFields) } diff --git a/ops/internal/config/chain_list.go b/ops/internal/config/chain_list.go index daad0f664..5c2866c55 100644 --- a/ops/internal/config/chain_list.go +++ b/ops/internal/config/chain_list.go @@ -11,6 +11,11 @@ type ChainListEntry struct { DataAvailabilityType string `json:"dataAvailabilityType" toml:"data_availability_type"` Parent ChainListEntryParent `json:"parent" toml:"parent"` GasPayingToken *ChecksummedAddress `json:"gasPayingToken,omitempty" toml:"gas_paying_token,omitempty"` + FaultProofs FaultProofs `json:"faultProofs,omitempty" toml:"fault_proofs,omitempty"` +} + +type FaultProofs struct { + Status string `json:"status" toml:"status"` } type ChainListEntryParent struct { diff --git a/ops/internal/config/superchain.go b/ops/internal/config/superchain.go index 9c74a748b..1f00d906e 100644 --- a/ops/internal/config/superchain.go +++ b/ops/internal/config/superchain.go @@ -1,6 +1,13 @@ package config -import "fmt" +import ( + "context" + "fmt" + "strings" + + "github.com/ethereum/go-ethereum/ethclient" + "github.com/ethereum/go-ethereum/log" +) type Superchain string @@ -27,6 +34,56 @@ func MustParseSuperchain(in string) Superchain { return sup } +// FindValidL1URL finds a valid l1-rpc-url for a given superchain by finding matching l1 chainId +func FindValidL1URL(ctx context.Context, lgr log.Logger, urls []string, superchainId uint64) (string, error) { + lgr.Info("searching for valid l1-rpc-url", "superchainId", superchainId) + for i, url := range urls { + url = strings.TrimSpace(url) + if url == "" { + continue + } + + if err := validateL1ChainID(ctx, url, superchainId); err != nil { + lgr.Warn("l1-rpc-url has mismatched l1 chainId", "urlIndex", i) + continue + } + + lgr.Info("l1-rpc-url has matching l1 chainId", "urlIndex", i) + return url, nil + } + return "", fmt.Errorf("no valid L1 RPC URL found for superchain %d", superchainId) +} + +// validateL1ChainID checks if the l1RpcUrl has the expected chain ID for the superchain +func validateL1ChainID(ctx context.Context, l1RpcUrl string, superchainId uint64) error { + chainID, err := getL1ChainId(ctx, l1RpcUrl) + if err != nil { + return fmt.Errorf("failed to get chainId from l1RpcUrl: %w", err) + } + + if chainID != superchainId { + return fmt.Errorf("l1RpcUrl chainId mismatch: got %d, expected %d", chainID, superchainId) + } + + return nil +} + +// getL1ChainId connects to an Ethereum RPC endpoint and retrieves its chain ID +func getL1ChainId(ctx context.Context, rpcURL string) (uint64, error) { + client, err := ethclient.Dial(rpcURL) + if err != nil { + return 0, fmt.Errorf("failed to connect to L1 RPC: %w", err) + } + defer client.Close() + + chainID, err := client.ChainID(ctx) + if err != nil { + return 0, fmt.Errorf("failed to get chain ID: %w", err) + } + + return chainID.Uint64(), nil +} + func (s *Superchain) UnmarshalText(text []byte) error { sup, err := ParseSuperchain(string(text)) if err != nil { @@ -46,7 +103,7 @@ type SuperchainDefinition struct { } type SuperchainL1 struct { - ChainID uint64 + ChainID uint64 `toml:"chain_id"` PublicRPC string `toml:"public_rpc"` Explorer string `toml:"explorer"` } diff --git a/ops/internal/manage/codegen.go b/ops/internal/manage/codegen.go index 13ea7f67b..69a221a73 100644 --- a/ops/internal/manage/codegen.go +++ b/ops/internal/manage/codegen.go @@ -5,140 +5,246 @@ import ( _ "embed" "encoding/json" "fmt" - "path" + "os" + "path/filepath" "strconv" + "strings" "text/template" "time" "github.com/BurntSushi/toml" + "github.com/ethereum-optimism/optimism/op-fetcher/pkg/fetcher/fetch/script" "github.com/ethereum-optimism/superchain-registry/ops/internal/config" "github.com/ethereum-optimism/superchain-registry/ops/internal/fs" - "github.com/ethereum-optimism/superchain-registry/ops/internal/output" "github.com/ethereum-optimism/superchain-registry/ops/internal/paths" + "github.com/ethereum/go-ethereum/log" ) -//go:embed chains.md.tmpl -var chainsReadmeTemplateData string - -var funcMap = template.FuncMap{ - "checkmark": func(in bool) string { - if in { - return "✅" - } +// CodegenSyncer manages syncing of codegen files with on-chain data +type CodegenSyncer struct { + lgr log.Logger + ChainList []config.ChainListEntry + Addresses config.AddressesJSON + inputWd string + outputWd string + onchainCfgs map[uint64]script.ChainConfig + diskCfgs map[uint64]DiskChainConfig +} - return "❌" - }, - "optedInSuperchain": func(in *uint64) string { - if in != nil && *in < uint64(time.Now().Unix()) { - return "✅" - } +type CodegenSyncerOption func(*CodegenSyncer) - return "❌" - }, +func WithOutputDirectory(outputDir string) CodegenSyncerOption { + return func(s *CodegenSyncer) { + s.outputWd = outputDir + } } -var tmpl = template.Must(template.New("chains-readme").Funcs(funcMap).Parse(chainsReadmeTemplateData)) +func NewCodegenSyncer(lgr log.Logger, wd string, chainCfgs map[uint64]script.ChainConfig, opts ...CodegenSyncerOption) (*CodegenSyncer, error) { + // Load addresses.json data + var addresses config.AddressesJSON + addressesData, err := os.ReadFile(paths.AddressesFile(wd)) + if err != nil { + return nil, fmt.Errorf("error reading addresses file: %w", err) + } + if err := json.Unmarshal(addressesData, &addresses); err != nil { + return nil, fmt.Errorf("error unmarshaling addresses.json: %w", err) + } + + // Load chainList.json data + var chainList []config.ChainListEntry + chainListData, err := os.ReadFile(paths.ChainListJsonFile(wd)) + if err != nil { + return nil, fmt.Errorf("error reading chainList file: %w", err) + } + if err := json.Unmarshal(chainListData, &chainList); err != nil { + return nil, fmt.Errorf("error unmarshaling chainList file: %w", err) + } -func GenAllCode(rootP string) error { - if err := GenAddressesFile(rootP); err != nil { - return fmt.Errorf("error generating addresses file: %w", err) + // Load disk chain configs + diskChainCfgsSlice, err := CollectChainConfigs(paths.SuperchainConfigsDir(wd)) + lgr.Info("collected chain configs from disk", "numDiskCfgs", len(diskChainCfgsSlice)) + if err != nil { + return nil, fmt.Errorf("error collecting chain configs: %w", err) } - output.WriteOK("generated addresses file") - if err := GenChainListFile(rootP, path.Join(rootP, "chainList.json")); err != nil { - return fmt.Errorf("error generating JSON chain list: %w", err) + diskChainCfgs := make(map[uint64]DiskChainConfig) + for _, cfg := range diskChainCfgsSlice { + diskChainCfgs[cfg.Config.ChainID] = cfg } - output.WriteOK("generated JSON chain list") - if err := GenChainListFile(rootP, path.Join(rootP, "chainList.toml")); err != nil { - return fmt.Errorf("error generating TOML chain list: %w", err) + + syncer := &CodegenSyncer{ + lgr: lgr, + ChainList: chainList, + Addresses: addresses, + inputWd: wd, + outputWd: wd, + onchainCfgs: chainCfgs, + diskCfgs: diskChainCfgs, } - output.WriteOK("generated TOML chain list") - if err := GenChainsReadme(rootP, path.Join(rootP, "CHAINS.md")); err != nil { - return fmt.Errorf("error generating chains readme: %w", err) + + for _, opt := range opts { + opt(syncer) } - output.WriteOK("generated chains readme") - return nil + + return syncer, nil } -func GenAddressesFile(rootP string) error { - superchains, err := paths.Superchains(rootP) - if err != nil { - return fmt.Errorf("error getting superchains: %w", err) +// SyncAll syncs codegen files with all entries in syncer.onchainCfgs +func (s *CodegenSyncer) SyncAll() error { + if err := s.ProcessAllChains(); err != nil { + return err } - addrs := make(config.AddressesJSON) - for _, superchain := range superchains { - cfgs, err := CollectChainConfigs(paths.SuperchainDir(rootP, superchain)) - if err != nil { - return fmt.Errorf("error collecting chain configs: %w", err) - } + return s.WriteFiles() +} + +// ProcessSingleChain updates syncer's internal data for a given chain +func (s *CodegenSyncer) ProcessSingleChain(chainId uint64, onchainCfg script.ChainConfig) error { + s.lgr.Info("processing chain", "chainId", chainId) + chainIdStr := strconv.FormatUint(chainId, 10) + addressesWithRoles := config.CreateAddressesWithRolesFromFetcher(onchainCfg.Addresses, onchainCfg.Roles) + s.Addresses[chainIdStr] = &addressesWithRoles + + if err := s.UpdateChainList(chainIdStr, onchainCfg); err != nil { + return err + } + + s.lgr.Info("finished processing chain", "chainId", chainId) + return nil +} - for _, cfg := range cfgs { - addrs[strconv.FormatUint(cfg.Config.ChainID, 10)] = &config.AddressesWithRoles{ - Addresses: cfg.Config.Addresses, - Roles: cfg.Config.Roles, - } +// ProcessAllChains reads all input chain files and updates syncer's internal data accordingly +func (s *CodegenSyncer) ProcessAllChains() error { + for chainId, cfg := range s.onchainCfgs { + if err := s.ProcessSingleChain(chainId, cfg); err != nil { + return err } } + return nil +} + +// UpdateChainList updates the ChainList entry for the given chain ID +func (s *CodegenSyncer) UpdateChainList(chainID string, onchainCfg script.ChainConfig) error { + chainIdUint64, err := strconv.ParseUint(chainID, 10, 64) + if err != nil { + return fmt.Errorf("error converting chainID to uint64: %w", err) + } - data, err := json.MarshalIndent(addrs, "", " ") + diskCfg, ok := s.diskCfgs[chainIdUint64] + if !ok { + return fmt.Errorf("disk chain config not found for chain ID %s", chainID) + } + + dir := filepath.Dir(diskCfg.Filepath) + lastDir := filepath.Base(dir) + superchain, err := config.ParseSuperchain(lastDir) if err != nil { - return fmt.Errorf("failed to marshal addresses: %w", err) + return fmt.Errorf("error parsing superchain: %w", err) } - if err := fs.AtomicWrite(paths.AddressesFile(rootP), 0o755, data); err != nil { - return fmt.Errorf("failed to write addresses file: %w", err) + found := false + chain := diskCfg.Config + chainListEntry := chain.ChainListEntry(superchain, diskCfg.ShortName) + + if onchainCfg.FaultProofStatus == nil { + chainListEntry.FaultProofs = config.FaultProofs{Status: "none"} + } else if onchainCfg.FaultProofStatus.RespectedGameType == 1 { + chainListEntry.FaultProofs = config.FaultProofs{Status: "permissioned"} + } else { + chainListEntry.FaultProofs = config.FaultProofs{Status: "permissionless"} } + for i, entry := range s.ChainList { + if entry.ChainID == chainIdUint64 { + s.ChainList[i] = chainListEntry + s.lgr.Info("updating existing chainList entry", "chainID", chainID) + found = true + break + } + } + if !found { + s.ChainList = append(s.ChainList, chainListEntry) + s.lgr.Info("adding new chainList entry", "chainID", chainID) + } return nil } -func GenChainListFile(rootP string, outP string) error { - superchains, err := paths.Superchains(rootP) +// WriteFiles writes all updated data to disk +func (s *CodegenSyncer) WriteFiles() error { + // Write addresses.json + updatedAddressesData, err := json.MarshalIndent(s.Addresses, "", " ") if err != nil { - return fmt.Errorf("error getting superchains: %w", err) + return fmt.Errorf("error marshaling updated addresses: %w", err) } - ext := path.Ext(outP) - var marshaler func([]config.ChainListEntry) ([]byte, error) - switch ext { - case ".json": - marshaler = func(entries []config.ChainListEntry) ([]byte, error) { - return json.MarshalIndent(entries, "", " ") - } - case ".toml": - marshaler = func(entries []config.ChainListEntry) ([]byte, error) { - return toml.Marshal(config.ChainListTOML{ - Chains: entries, - }) - } - default: - return fmt.Errorf("unsupported file extension: %s", ext) + // Ensure the addresses directory exists + addressesPath := paths.AddressesFile(s.outputWd) + if err := paths.EnsureDir(filepath.Dir(addressesPath)); err != nil { + return fmt.Errorf("error creating addresses.json directory: %w", err) + } + if err := os.WriteFile(addressesPath, updatedAddressesData, 0o644); err != nil { + return fmt.Errorf("error writing updated addresses.json: %w", err) } + s.lgr.Info("successfully updated addresses.json", "updatedChains", len(s.onchainCfgs), "totalChains", len(s.Addresses)) - var chains []config.ChainListEntry - for _, superchain := range superchains { - cfgs, err := CollectChainConfigs(paths.SuperchainDir(rootP, superchain)) - if err != nil { - return fmt.Errorf("error collecting chain configs: %w", err) - } + // Write chainList.json + updatedChainListData, err := json.MarshalIndent(s.ChainList, "", " ") + if err != nil { + return fmt.Errorf("error marshaling updated chainList: %w", err) + } + if err := os.WriteFile(paths.ChainListJsonFile(s.outputWd), updatedChainListData, 0o644); err != nil { + return fmt.Errorf("error writing updated chainList.json: %w", err) + } + s.lgr.Info("successfully updated chainList.json", "updatedChains", len(s.onchainCfgs), "totalChains", len(s.ChainList)) - for _, cfg := range cfgs { - chains = append(chains, cfg.Config.ChainListEntry(superchain, cfg.ShortName)) - } + // Write chainList.toml + chainListToml := struct { + Chains []config.ChainListEntry `toml:"chains"` + }{ + Chains: s.ChainList, } - data, err := marshaler(chains) - if err != nil { - return fmt.Errorf("failed to marshal chain list: %w", err) + var buf strings.Builder + encoder := toml.NewEncoder(&buf) + if err := encoder.Encode(chainListToml); err != nil { + return fmt.Errorf("error marshaling updated chainList to TOML: %w", err) } - if err := fs.AtomicWrite(outP, 0o755, data); err != nil { - return fmt.Errorf("failed to write chain list file: %w", err) + if err := os.WriteFile(paths.ChainListTomlFile(s.outputWd), []byte(buf.String()), 0o644); err != nil { + return fmt.Errorf("error writing updated chainList.toml: %w", err) } + s.lgr.Info("successfully updated chainList.toml", "updatedChains", len(s.onchainCfgs), "totalChains", len(s.ChainList)) + + // Write CHAINS.md + if err := GenChainsReadme(s.inputWd, paths.ChainMdFile(s.outputWd)); err != nil { + return fmt.Errorf("error generating readme: %w", err) + } + s.lgr.Info("successfully updated CHAINS.md") return nil } +//go:embed chains.md.tmpl +var chainsReadmeTemplateData string + +var funcMap = template.FuncMap{ + "checkmark": func(in bool) string { + if in { + return "✅" + } + + return "❌" + }, + "optedInSuperchain": func(in *uint64) string { + if in != nil && *in < uint64(time.Now().Unix()) { + return "✅" + } + + return "❌" + }, +} + +var tmpl = template.Must(template.New("chains-readme").Funcs(funcMap).Parse(chainsReadmeTemplateData)) + type ChainsReadmeData struct { Superchains []config.Superchain ChainData [][]*config.Chain diff --git a/ops/internal/manage/codegen_test.go b/ops/internal/manage/codegen_test.go index f060b904f..18c28d98b 100644 --- a/ops/internal/manage/codegen_test.go +++ b/ops/internal/manage/codegen_test.go @@ -1,76 +1,262 @@ package manage import ( + "encoding/json" "fmt" "os" + "path/filepath" + "reflect" "strings" "testing" + "github.com/BurntSushi/toml" + "github.com/ethereum-optimism/optimism/op-fetcher/pkg/fetcher/fetch/script" + "github.com/ethereum-optimism/superchain-registry/ops/internal/config" "github.com/ethereum-optimism/superchain-registry/ops/internal/paths" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" "github.com/stretchr/testify/require" ) -func TestGenAddressesFile(t *testing.T) { - require.NoError(t, GenAddressesFile("testdata")) - - addrsFile := paths.AddressesFile("testdata") +func TestGenChainsReadme(t *testing.T) { + readmeFile, err := os.CreateTemp("", "chains-*.md") + require.NoError(t, err) t.Cleanup(func() { - require.NoError(t, os.Remove(addrsFile)) + require.NoError(t, os.Remove(readmeFile.Name())) }) - expected, err := os.ReadFile("testdata/expected-addresses.json") + require.NoError(t, GenChainsReadme("testdata", readmeFile.Name())) + + expectedBytes, err := os.ReadFile("testdata/CHAINS.md") require.NoError(t, err) - actual, err := os.ReadFile(addrsFile) + actualBytes, err := os.ReadFile(readmeFile.Name()) require.NoError(t, err) + require.Equal(t, strings.TrimSpace(string(expectedBytes)), strings.TrimSpace(string(actualBytes))) +} - require.JSONEq(t, string(expected), string(actual)) +// loadTestAddressesJSON loads the expected addresses JSON from testdata +func loadTestAddressesJSON(t *testing.T) config.AddressesJSON { + data, err := os.ReadFile(paths.AddressesFile("testdata")) + require.NoError(t, err) + + var addresses config.AddressesJSON + err = json.Unmarshal(data, &addresses) + require.NoError(t, err) + + return addresses } -func TestGenChainList(t *testing.T) { - for _, ext := range []string{"toml", "json"} { - t.Run(ext, func(t *testing.T) { - t.Parallel() - - outFile, err := os.CreateTemp("", fmt.Sprintf("chainList-*.%s", ext)) - require.NoError(t, err) - defer outFile.Close() - t.Cleanup(func() { - require.NoError(t, os.Remove(outFile.Name())) - }) - - outPath := outFile.Name() - require.NoError(t, GenChainListFile("testdata", outPath)) - actualBytes, err := os.ReadFile(outPath) - require.NoError(t, err) - expectedBytes, err := os.ReadFile(fmt.Sprintf("testdata/expected-chainList.%s", ext)) - require.NoError(t, err) - require.Equal(t, strings.TrimSpace(string(expectedBytes)), strings.TrimSpace(string(actualBytes))) - }) +// loadTestChainList loads the expected chain list from testdata +func loadTestChainList(t *testing.T) []config.ChainListEntry { + data, err := os.ReadFile(paths.ChainListJsonFile("testdata")) + require.NoError(t, err) + + var chainList []config.ChainListEntry + err = json.Unmarshal(data, &chainList) + require.NoError(t, err) + + return chainList +} + +// createTestChainConfigs creates chain configs for testing based on testdata +func createTestChainConfigs(t *testing.T) map[uint64]script.ChainConfig { + addresses := loadTestAddressesJSON(t) + chainList := loadTestChainList(t) + + chainCfgs := make(map[uint64]script.ChainConfig) + for _, entry := range chainList { + chainID := entry.ChainID + chainIDStr := fmt.Sprintf("%d", chainID) + + // Only include chains that exist in addresses + if chainAddrs, ok := addresses[chainIDStr]; ok { + chainCfgs[chainID] = convertToScriptChainConfig(t, chainAddrs, entry.FaultProofs) + } } - t.Run("any other extension", func(t *testing.T) { - t.Parallel() + return chainCfgs +} - err := GenChainListFile("testdata", "any-path.txt") - require.ErrorContains(t, err, "unsupported file extension") - }) +// convertToScriptChainConfig converts from config types to script types +func convertToScriptChainConfig(t *testing.T, chainAddrs *config.AddressesWithRoles, faultProofStatus config.FaultProofs) script.ChainConfig { + var scriptAddrs script.Addresses + var scriptRoles script.Roles + + // First, convert to a map of string addresses + addressMap := make(map[string]string) + bytes, err := json.Marshal(chainAddrs) + require.NoError(t, err) + err = json.Unmarshal(bytes, &addressMap) + require.NoError(t, err) + + // Now populate the script structs manually using the map + // For each field in scriptAddrs struct + addressVal := reflect.ValueOf(&scriptAddrs).Elem() + for i := 0; i < addressVal.NumField(); i++ { + field := addressVal.Type().Field(i) + jsonTag := strings.Split(field.Tag.Get("json"), ",")[0] + if jsonTag == "" { + jsonTag = field.Name + } + + if addrStr, ok := addressMap[jsonTag]; ok && addrStr != "" { + addr := common.HexToAddress(addrStr) + addressVal.Field(i).Set(reflect.ValueOf(addr)) + } + } + + // For each field in scriptRoles struct + rolesVal := reflect.ValueOf(&scriptRoles).Elem() + for i := 0; i < rolesVal.NumField(); i++ { + field := rolesVal.Type().Field(i) + jsonTag := strings.Split(field.Tag.Get("json"), ",")[0] + if jsonTag == "" { + jsonTag = field.Name + } + + if addrStr, ok := addressMap[jsonTag]; ok && addrStr != "" { + addr := common.HexToAddress(addrStr) + rolesVal.Field(i).Set(reflect.ValueOf(addr)) + } + } + + cfg := script.ChainConfig{ + Addresses: scriptAddrs, + Roles: scriptRoles, + } + if faultProofStatus.Status == "permissioned" { + cfg.FaultProofStatus = &script.FaultProofStatus{ + Permissioned: true, + RespectedGameType: 1, + } + } else if faultProofStatus.Status == "permissionless" { + cfg.FaultProofStatus = &script.FaultProofStatus{ + Permissioned: true, + Permissionless: true, + RespectedGameType: 0, + } + } else { + cfg.FaultProofStatus = nil + } + return cfg } -func TestGenChainsReadme(t *testing.T) { - readmeFile, err := os.CreateTemp("", "chains-*.md") +func TestCodegenSyncer_NewCodegenSyncer(t *testing.T) { + chainCfgs := createTestChainConfigs(t) + + // Test successful initialization + lgr := log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelError, false)) + syncer, err := NewCodegenSyncer(lgr, "./testdata", chainCfgs) + require.NoError(t, err) - t.Cleanup(func() { - require.NoError(t, os.Remove(readmeFile.Name())) + require.NotNil(t, syncer) + require.NotEmpty(t, syncer.ChainList) + require.NotEmpty(t, syncer.Addresses) + require.Equal(t, "./testdata", syncer.inputWd) + require.Equal(t, "./testdata", syncer.outputWd) + + // Test initialization with separate output directory + tempDir := t.TempDir() + syncer, err = NewCodegenSyncer(lgr, "./testdata", chainCfgs, WithOutputDirectory(tempDir)) + require.NoError(t, err) + require.Equal(t, "./testdata", syncer.inputWd) + require.Equal(t, tempDir, syncer.outputWd) + + // Test initialization with invalid directory + _, err = NewCodegenSyncer(lgr, "/nonexistent", chainCfgs) + require.Error(t, err) +} + +func TestCodegenSyncer_UpdateChainList(t *testing.T) { + chainCfgs := createTestChainConfigs(t) + var testChainID uint64 + for id := range chainCfgs { + testChainID = id + break + } + + lgr := log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelError, false)) + syncer, err := NewCodegenSyncer(lgr, "testdata", chainCfgs) + require.NoError(t, err) + + err = syncer.UpdateChainList(fmt.Sprintf("%d", testChainID), script.ChainConfig{ + FaultProofStatus: &script.FaultProofStatus{ + RespectedGameType: 0, + }, }) + require.NoError(t, err) - require.NoError(t, GenChainsReadme("testdata", readmeFile.Name())) + // Verify the chain list was updated in memory + for _, chain := range syncer.ChainList { + if chain.ChainID == testChainID { + require.Equal(t, "permissionless", chain.FaultProofs.Status) + } + } + + // Test with invalid chain ID format + err = syncer.UpdateChainList("not-a-number", script.ChainConfig{}) + require.Error(t, err) +} - expectedBytes, err := os.ReadFile("testdata/expected-chains.md") +func TestCodegenSyncer_SyncAll(t *testing.T) { + tempDir := t.TempDir() + chainCfgs := createTestChainConfigs(t) + + for chainID := range chainCfgs { + config := chainCfgs[chainID] + config.FaultProofStatus = &script.FaultProofStatus{ + RespectedGameType: 1, + } + chainCfgs[chainID] = config + } + + lgr := log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.LevelError, false)) + + syncer, err := NewCodegenSyncer(lgr, "testdata", chainCfgs, WithOutputDirectory(tempDir)) require.NoError(t, err) - actualBytes, err := os.ReadFile(readmeFile.Name()) + err = syncer.SyncAll() require.NoError(t, err) - require.Equal(t, strings.TrimSpace(string(expectedBytes)), strings.TrimSpace(string(actualBytes))) + // Verify chainList files were created in tempDir and updated for all chains + chainListData, err := os.ReadFile(paths.ChainListJsonFile(tempDir)) + require.NoError(t, err) + var chainList []config.ChainListEntry + err = json.Unmarshal(chainListData, &chainList) + require.NoError(t, err) + + for chainID := range chainCfgs { + foundUpdatedChain := false + for _, chain := range chainList { + if chain.ChainID == chainID { + require.Equal(t, "permissioned", chain.FaultProofs.Status) + foundUpdatedChain = true + } + } + require.True(t, foundUpdatedChain, "Chain %d not found in written chainList.json", chainID) + } + + // Verify chainList.toml was created and contains updated status + chainListTomlData, err := os.ReadFile(filepath.Join(tempDir, "chainList.toml")) + require.NoError(t, err) + var chainListToml struct { + Chains []config.ChainListEntry `toml:"chains"` + } + err = toml.Unmarshal(chainListTomlData, &chainListToml) + require.NoError(t, err) + + for chainID := range chainCfgs { + foundUpdatedChain := false + for _, chain := range chainListToml.Chains { + if chain.ChainID == chainID { + require.Equal(t, "permissioned", chain.FaultProofs.Status) + foundUpdatedChain = true + } + } + require.True(t, foundUpdatedChain, "Chain %d not found in written chainList.toml", chainID) + } + + _, err = os.Stat(filepath.Join(tempDir, "CHAINS.md")) + require.NoError(t, err) } diff --git a/ops/internal/manage/collect.go b/ops/internal/manage/collect.go index 2978b487c..6a8c33d12 100644 --- a/ops/internal/manage/collect.go +++ b/ops/internal/manage/collect.go @@ -17,9 +17,10 @@ import ( const CollectorConcurrency = 8 type DiskChainConfig struct { - ShortName string - Filepath string - Config *config.Chain + ShortName string + Filepath string + Superchain config.Superchain + Config *config.Chain } func CollectChainConfigs(p string) ([]DiskChainConfig, error) { @@ -61,11 +62,19 @@ func CollectChainConfigs(p string) ([]DiskChainConfig, error) { return } + superchainStr := filepath.Base(filepath.Dir(file)) + superchain, err := config.ParseSuperchain(superchainStr) + if err != nil { + firstErr.Set(fmt.Errorf("failed to parse superchain %s: %w", superchainStr, err)) + return + } + mtx.Lock() out = append(out, DiskChainConfig{ - ShortName: strings.TrimSuffix(basename, ".toml"), - Filepath: file, - Config: &chain, + ShortName: strings.TrimSuffix(basename, ".toml"), + Filepath: file, + Superchain: superchain, + Config: &chain, }) mtx.Unlock() } diff --git a/ops/internal/manage/collect_test.go b/ops/internal/manage/collect_test.go index c4fb207fa..08bd5fde6 100644 --- a/ops/internal/manage/collect_test.go +++ b/ops/internal/manage/collect_test.go @@ -22,14 +22,16 @@ func TestCollectChainConfigs(t *testing.T) { require.Equal(t, []DiskChainConfig{ { - ShortName: "op", - Filepath: paths.ChainConfig("testdata", "sepolia", "op"), - Config: &opConfig, + ShortName: "op", + Filepath: paths.ChainConfig("testdata", "sepolia", "op"), + Superchain: config.SepoliaSuperchain, + Config: &opConfig, }, { - ShortName: "testchain", - Filepath: paths.ChainConfig("testdata", "sepolia", "testchain"), - Config: &testChainConfig, + ShortName: "testchain", + Filepath: paths.ChainConfig("testdata", "sepolia", "testchain"), + Superchain: config.SepoliaSuperchain, + Config: &testChainConfig, }, }, chains) } diff --git a/ops/internal/manage/fetch_onchain.go b/ops/internal/manage/fetch_onchain.go new file mode 100644 index 000000000..c709eca91 --- /dev/null +++ b/ops/internal/manage/fetch_onchain.go @@ -0,0 +1,157 @@ +package manage + +import ( + "context" + "fmt" + "sync" + + "github.com/ethereum-optimism/optimism/op-fetcher/pkg/fetcher/fetch" + "github.com/ethereum-optimism/optimism/op-fetcher/pkg/fetcher/fetch/script" + "github.com/ethereum-optimism/superchain-registry/ops/internal/config" + "github.com/ethereum-optimism/superchain-registry/ops/internal/paths" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + "golang.org/x/sync/errgroup" +) + +// FetchChains fetches chain configurations for specified chain IDs or all chains if none specified +func FetchChains(egCtx context.Context, lgr log.Logger, wd string, l1RpcUrls []string, chainIds []uint64, superchains []config.Superchain) (map[uint64]script.ChainConfig, error) { + chainsBySuperchain, err := collectChainsBySuperchain(wd, chainIds, superchains) + if err != nil { + return nil, err + } + + allChainConfigs := make(map[uint64]script.ChainConfig) + var mu sync.Mutex + eg, egCtx := errgroup.WithContext(egCtx) + + superchainIds, err := paths.SuperchainIds(wd) + if err != nil { + return nil, fmt.Errorf("error getting superchain chainIds: %w", err) + } + + for superchain, chains := range chainsBySuperchain { + lgr.Info("fetching superchain", "superchain", superchain, "numChains", len(chains)) + superchainId, ok := superchainIds[superchain] + if !ok { + return nil, fmt.Errorf("missing superchain chainId for superchain %s", superchain) + } + + l1RpcUrl, err := config.FindValidL1URL(egCtx, lgr, l1RpcUrls, superchainId) + if err != nil { + return nil, fmt.Errorf("missing L1 RPC URL for superchain %s", superchain) + } + + for _, cfg := range chains { + // Capture variables for goroutine + currentConfig := cfg + currentRpcUrl := l1RpcUrl + + eg.Go(func() error { + result, err := fetchChainInfo(egCtx, lgr, currentRpcUrl, currentConfig) + if err != nil { + return fmt.Errorf("failed to fetch chain info for chainId %d: %w", currentConfig.Config.ChainID, err) + } + + mu.Lock() + allChainConfigs[currentConfig.Config.ChainID] = result + mu.Unlock() + + lgr.Info("fetched chain config", "chainId", currentConfig.Config.ChainID) + return nil + }) + } + } + + if err := eg.Wait(); err != nil { + return nil, err + } + + lgr.Info("completed fetching", "totalChains", len(allChainConfigs)) + return allChainConfigs, nil +} + +// collectChainsBySuperchain assembles a map of chains grouped by their superchain +// based on provided chainIds or superchains or all chains if neither are provided +func collectChainsBySuperchain(wd string, chainIds []uint64, superchainsInput []config.Superchain) (map[config.Superchain][]DiskChainConfig, error) { + result := make(map[config.Superchain][]DiskChainConfig) + if len(chainIds) > 0 && len(superchainsInput) > 0 { + return nil, fmt.Errorf("cannot provide both chainIds and superchains inputs") + } + + superchains := superchainsInput + if len(superchains) == 0 { + var err error + superchains, err = paths.Superchains(wd) + if err != nil { + return nil, fmt.Errorf("error getting superchains: %w", err) + } + } + + // Create a map for quick chain ID lookup if we're filtering + chainIdMap := make(map[uint64]bool) + for _, id := range chainIds { + chainIdMap[id] = true + } + + foundChainIdMap := make(map[uint64]bool) + + // Process all superchains + for _, superchain := range superchains { + // Collect all chain configs from this superchain + configs, err := CollectChainConfigs(paths.SuperchainDir(wd, superchain)) + if err != nil { + return nil, fmt.Errorf("error collecting chain configs for superchain %s: %w", superchain, err) + } + + // Filter configs if chainIds is specified + if len(chainIds) > 0 { + var filteredConfigs []DiskChainConfig + for _, cfg := range configs { + if chainIdMap[cfg.Config.ChainID] { + filteredConfigs = append(filteredConfigs, cfg) + foundChainIdMap[cfg.Config.ChainID] = true + } + } + + // Only add to map if we found matching chains for this superchain + if len(filteredConfigs) > 0 { + result[superchain] = filteredConfigs + } + } else { + // If no chain IDs specified, include all chains + result[superchain] = configs + } + } + + if len(chainIds) > 0 { + // Ensure all requested chainIds were found + for _, chainId := range chainIds { + if !foundChainIdMap[chainId] { + return nil, fmt.Errorf("chainId %d not found", chainId) + } + } + } + + return result, nil +} + +// fetchChainInfo handles the common logic for creating an op-fetcher instance using it to fetch chain info +func fetchChainInfo(ctx context.Context, lgr log.Logger, l1RpcUrl string, cfg DiskChainConfig) (script.ChainConfig, error) { + fetcher, err := fetch.NewFetcher( + lgr, + l1RpcUrl, + common.HexToAddress(cfg.Config.Addresses.SystemConfigProxy.String()), + common.HexToAddress(cfg.Config.Addresses.L1StandardBridgeProxy.String()), + ) + if err != nil { + return script.ChainConfig{}, fmt.Errorf("error creating fetcher for chain %d: %w", cfg.Config.ChainID, err) + } + + result, err := fetcher.FetchChainInfo(ctx) + if err != nil { + return script.ChainConfig{}, fmt.Errorf("error fetching chain info for chain %d: %w", cfg.Config.ChainID, err) + } + + return script.CreateChainConfig(result), nil +} diff --git a/ops/internal/manage/fetch_onchain_test.go b/ops/internal/manage/fetch_onchain_test.go new file mode 100644 index 000000000..64bc2615e --- /dev/null +++ b/ops/internal/manage/fetch_onchain_test.go @@ -0,0 +1,64 @@ +package manage + +import ( + "path/filepath" + "testing" + + "github.com/ethereum-optimism/superchain-registry/ops/internal/config" + "github.com/stretchr/testify/require" +) + +func TestCollectChainsBySuperchain(t *testing.T) { + testdataDir, err := filepath.Abs("testdata") + require.NoError(t, err, "Failed to get absolute path to testdata") + + // Known testdata chainIds + opSepolia := uint64(11155420) + testChain := uint64(1952805748) + + t.Run("all chains", func(t *testing.T) { + chains, err := collectChainsBySuperchain(testdataDir, []uint64{}, []config.Superchain{}) + require.NoError(t, err) + + require.Equal(t, len(chains[config.SepoliaSuperchain]), 2) + require.Equal(t, len(chains[config.MainnetSuperchain]), 0) + require.Equal(t, len(chains[config.SepoliaDev0Superchain]), 0) + }) + + t.Run("single chain", func(t *testing.T) { + chains, err := collectChainsBySuperchain(testdataDir, []uint64{opSepolia}, []config.Superchain{}) + require.NoError(t, err) + + require.Equal(t, len(chains[config.SepoliaSuperchain]), 1) + require.Equal(t, len(chains[config.MainnetSuperchain]), 0) + require.Equal(t, len(chains[config.SepoliaDev0Superchain]), 0) + }) + + t.Run("two chains", func(t *testing.T) { + chains, err := collectChainsBySuperchain(testdataDir, []uint64{opSepolia, testChain}, []config.Superchain{}) + require.NoError(t, err) + + require.Equal(t, len(chains[config.SepoliaSuperchain]), 2) + require.Equal(t, len(chains[config.MainnetSuperchain]), 0) + require.Equal(t, len(chains[config.SepoliaDev0Superchain]), 0) + }) + + t.Run("fails for non-existent chainId", func(t *testing.T) { + _, err := collectChainsBySuperchain(testdataDir, []uint64{999999999}, []config.Superchain{}) + require.Error(t, err) + }) + + t.Run("sepolia superchain", func(t *testing.T) { + chains, err := collectChainsBySuperchain(testdataDir, []uint64{}, []config.Superchain{config.SepoliaSuperchain}) + require.NoError(t, err) + + require.Equal(t, len(chains[config.SepoliaSuperchain]), 2) + require.Equal(t, len(chains[config.MainnetSuperchain]), 0) + require.Equal(t, len(chains[config.SepoliaDev0Superchain]), 0) + }) + + t.Run("fails if both chainIds and superchains are provided", func(t *testing.T) { + _, err := collectChainsBySuperchain(testdataDir, []uint64{opSepolia}, []config.Superchain{config.SepoliaSuperchain}) + require.Error(t, err) + }) +} diff --git a/ops/internal/manage/staging.go b/ops/internal/manage/staging.go index ad318176e..632072fac 100644 --- a/ops/internal/manage/staging.go +++ b/ops/internal/manage/staging.go @@ -73,7 +73,7 @@ func InflateChainConfig(st *state.State) (*config.StagedChain, error) { chainState := st.Chains[0] cfg.Genesis = config.Genesis{ - L2Time: chainState.StartBlock.Time, + L2Time: uint64(chainState.StartBlock.Time), L1: config.GenesisRef{ Hash: rollup.Genesis.L1.Hash, Number: rollup.Genesis.L1.Number, diff --git a/ops/internal/manage/testdata/expected-chains.md b/ops/internal/manage/testdata/CHAINS.md similarity index 100% rename from ops/internal/manage/testdata/expected-chains.md rename to ops/internal/manage/testdata/CHAINS.md diff --git a/ops/internal/manage/testdata/expected-chainList.json b/ops/internal/manage/testdata/chainList.json similarity index 100% rename from ops/internal/manage/testdata/expected-chainList.json rename to ops/internal/manage/testdata/chainList.json diff --git a/ops/internal/manage/testdata/expected-chainList.toml b/ops/internal/manage/testdata/chainList.toml similarity index 100% rename from ops/internal/manage/testdata/expected-chainList.toml rename to ops/internal/manage/testdata/chainList.toml diff --git a/ops/internal/manage/testdata/superchain/extra/addresses/.gitkeep b/ops/internal/manage/testdata/superchain/extra/addresses/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/ops/internal/manage/testdata/expected-addresses.json b/ops/internal/manage/testdata/superchain/extra/addresses/addresses.json similarity index 99% rename from ops/internal/manage/testdata/expected-addresses.json rename to ops/internal/manage/testdata/superchain/extra/addresses/addresses.json index c6468f3af..0aaa48766 100644 --- a/ops/internal/manage/testdata/expected-addresses.json +++ b/ops/internal/manage/testdata/superchain/extra/addresses/addresses.json @@ -40,7 +40,6 @@ "SystemConfigOwner": "0x0000000000000000000000000000000000000001", "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": null, "Proposer": "0x0000000000000000000000000000000000000001", "UnsafeBlockSigner": "0x0000000000000000000000000000000000000001", "BatchSubmitter": "0x0000000000000000000000000000000000000001" diff --git a/ops/internal/paths/paths.go b/ops/internal/paths/paths.go index 99a08eb96..94d7d8914 100644 --- a/ops/internal/paths/paths.go +++ b/ops/internal/paths/paths.go @@ -8,6 +8,7 @@ import ( "path" "path/filepath" + "github.com/BurntSushi/toml" "github.com/ethereum-optimism/superchain-registry/ops/internal/config" ) @@ -51,12 +52,39 @@ func ChainConfig(wd string, superchain config.Superchain, shortName string) stri return path.Join(SuperchainDir(wd, superchain), shortName+".toml") } +func SuperchainIds(wd string) (map[config.Superchain]uint64, error) { + superchains, err := Superchains(wd) + if err != nil { + return nil, fmt.Errorf("failed to get superchains: %w", err) + } + + superchainIds := make(map[config.Superchain]uint64) + for _, superchain := range superchains { + superchainFile := SuperchainConfig(wd, superchain) + data, err := os.ReadFile(superchainFile) + if err != nil { + return nil, fmt.Errorf("failed to read superchain config: %w", err) + } + + var superchainDef config.SuperchainDefinition + if err := toml.Unmarshal(data, &superchainDef); err != nil { + return nil, fmt.Errorf("failed to unmarshal superchain config: %w", err) + } + superchainIds[superchain] = superchainDef.L1.ChainID + } + return superchainIds, nil +} + func SuperchainConfig(wd string, superchain config.Superchain) string { return path.Join(SuperchainDir(wd, superchain), "superchain.toml") } +func SuperchainConfigsDir(wd string) string { + return path.Join(wd, "superchain", "configs") +} + func Superchains(wd string) ([]config.Superchain, error) { - configsDir := path.Join(wd, "superchain", "configs") + configsDir := SuperchainConfigsDir(wd) dir, err := os.ReadDir(configsDir) if err != nil { @@ -84,6 +112,18 @@ func AddressesFile(wd string) string { return path.Join(ExtraDir(wd), "addresses", "addresses.json") } +func ChainListJsonFile(wd string) string { + return path.Join(wd, "chainList.json") +} + +func ChainListTomlFile(wd string) string { + return path.Join(wd, "chainList.toml") +} + +func ChainMdFile(wd string) string { + return path.Join(wd, "CHAINS.md") +} + func ValidationsDir(wd string) string { return path.Join(wd, "validation", "standard") } @@ -105,6 +145,10 @@ func RequireDir(p string) error { return nil } +func EnsureDir(p string) error { + return os.MkdirAll(p, 0o755) +} + func RequireRoot(wd string) error { p := StagingDir(wd) if err := RequireDir(p); err != nil { diff --git a/ops/internal/report/all.go b/ops/internal/report/all.go index 536190ae2..740970902 100644 --- a/ops/internal/report/all.go +++ b/ops/internal/report/all.go @@ -37,14 +37,11 @@ func ScanAll( return report } - afacts, cleanup, err := artifacts.Download(ctx, chainCfg.DeploymentL2ContractsVersion, artifacts.NoopDownloadProgressor) + afacts, err := artifacts.Download(ctx, chainCfg.DeploymentL2ContractsVersion, artifacts.NoopProgressor(), "") if err != nil { report.L2Err = fmt.Errorf("error downloading L2 artifacts: %w", err) return report } - defer func() { - _ = cleanup() - }() report.L2, err = ScanL2( startBlock, diff --git a/ops/internal/report/l2.go b/ops/internal/report/l2.go index f5c9bd348..d46b20388 100644 --- a/ops/internal/report/l2.go +++ b/ops/internal/report/l2.go @@ -9,12 +9,14 @@ import ( "github.com/ethereum-optimism/optimism/op-chain-ops/foundry" "github.com/ethereum-optimism/optimism/op-chain-ops/genesis" "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/broadcaster" - opcmv170 "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/opcm/v170" + "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/opcm" "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/state" "github.com/ethereum-optimism/optimism/op-deployer/pkg/env" + "github.com/ethereum-optimism/optimism/op-service/eth" "github.com/ethereum-optimism/superchain-registry/ops/internal/config" "github.com/ethereum-optimism/superchain-registry/validation" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" @@ -28,8 +30,8 @@ func ScanL2( ) (*L2Report, error) { var report L2Report - if !chainCfg.DeploymentL2ContractsVersion.Canonical { - return nil, errors.New("contracts version is not canonical") + if !chainCfg.DeploymentL2ContractsVersion.IsTag() { + return nil, errors.New("contracts version is not a tag") } report.Release = chainCfg.DeploymentL2ContractsVersion.Tag @@ -66,7 +68,7 @@ func DiffL2Genesis( } standardIntent := &state.Intent{ - ConfigType: state.IntentConfigTypeStrict, + ConfigType: state.IntentTypeStandard, FundDevAccounts: false, UseInterop: false, L1ContractsLocator: chainCfg.DeploymentL1ContractsVersion, @@ -114,8 +116,13 @@ func DiffL2Genesis( } standardChainState := &state.ChainState{ - ID: common.BigToHash(new(big.Int).SetUint64(chainCfg.ChainID)), - StartBlock: startBlock, + ID: common.BigToHash(new(big.Int).SetUint64(chainCfg.ChainID)), + StartBlock: &state.L1BlockRefJSON{ + Hash: startBlock.Hash(), + ParentHash: startBlock.ParentHash, + Number: hexutil.Uint64(startBlock.Number.Uint64()), + Time: hexutil.Uint64(startBlock.Time), + }, L1StandardBridgeProxyAddress: common.Address(*chainCfg.Addresses.L1StandardBridgeProxy), L1CrossDomainMessengerProxyAddress: common.Address(*chainCfg.Addresses.L1CrossDomainMessengerProxy), L1ERC721BridgeProxyAddress: common.Address(*chainCfg.Addresses.L1ERC721BridgeProxy), @@ -140,15 +147,15 @@ func DiffL2Genesis( return standardHash, nil, fmt.Errorf("failed to create script host: %w", err) } - if err := opcmv170.L2Genesis(host, &opcmv170.L2GenesisInput{ - L1Deployments: opcmv170.L1Deployments{ + if err := opcm.L2Genesis(host, &opcm.L2GenesisInput{ + L1Deployments: opcm.L1Deployments{ L1CrossDomainMessengerProxy: common.Address(*chainCfg.Addresses.L1CrossDomainMessengerProxy), L1StandardBridgeProxy: common.Address(*chainCfg.Addresses.L1StandardBridgeProxy), L1ERC721BridgeProxy: common.Address(*chainCfg.Addresses.L1ERC721BridgeProxy), }, L2Config: standardDeployConfig.L2InitializationConfig, }); err != nil { - return standardHash, nil, fmt.Errorf("failed to call v170 L2Genesis script: %w", err) + return standardHash, nil, fmt.Errorf("failed to call L2Genesis script: %w", err) } host.Wipe(deployer) @@ -158,7 +165,12 @@ func DiffL2Genesis( return standardHash, nil, fmt.Errorf("failed to dump state: %w", err) } - standardGenesis, err := genesis.BuildL2Genesis(&standardDeployConfig, standardAllocs, startBlock) + standardGenesis, err := genesis.BuildL2Genesis(&standardDeployConfig, standardAllocs, ð.BlockRef{ + Hash: startBlock.Hash(), + Number: startBlock.Number.Uint64(), + ParentHash: startBlock.ParentHash, + Time: startBlock.Time, + }) if err != nil { return standardHash, nil, fmt.Errorf("failed to build standard genesis: %w", err) } diff --git a/ops/internal/report/l2_test.go b/ops/internal/report/l2_test.go index f61b100ca..3dab41447 100644 --- a/ops/internal/report/l2_test.go +++ b/ops/internal/report/l2_test.go @@ -28,13 +28,15 @@ func TestScanL2(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - afacts, cleanup, err := artifacts.Download(ctx, artifacts.MustNewLocatorFromURL("tag://"+string(validation.Semver170)), artifacts.NoopDownloadProgressor) + downloadDir := t.TempDir() + afacts, err := artifacts.Download(ctx, artifacts.MustNewLocatorFromURL("tag://"+string(validation.Semver170)), artifacts.NoopProgressor(), downloadDir) require.NoError(t, err) t.Cleanup(func() { - require.NoError(t, cleanup()) + require.NoError(t, os.RemoveAll(downloadDir)) }) testAddr := common.HexToAddress("0x4200000000000000000000000000000000000000") + standardGenesisHash := common.HexToHash("0xcd901673f97d59259fa09b0b01b8787f5d25d9f1808566990673519be65cc3ae") tests := []struct { name string @@ -49,17 +51,10 @@ func TestScanL2(t *testing.T) { wantReport: L2Report{ Release: string(validation.Semver170), ProvidedGenesisHash: common.HexToHash("0xcd901673f97d59259fa09b0b01b8787f5d25d9f1808566990673519be65cc3ae"), - StandardGenesisHash: common.HexToHash("0xcd901673f97d59259fa09b0b01b8787f5d25d9f1808566990673519be65cc3ae"), + StandardGenesisHash: standardGenesisHash, AccountDiffs: []AccountDiff{}, }, }, - { - name: "non-canonical L2 contracts locator", - setup: func(_ *types.Header, sc *config.StagedChain, _ *core.Genesis) { - sc.DeploymentL2ContractsVersion.Canonical = false - }, - wantErr: "contracts version is not canonical", - }, { name: "different account balance", setup: func(_ *types.Header, sc *config.StagedChain, genesis *core.Genesis) { @@ -69,7 +64,7 @@ func TestScanL2(t *testing.T) { wantReport: L2Report{ Release: string(validation.Semver170), ProvidedGenesisHash: common.HexToHash("0x42c3817d6176e7764ad7920049859cd97fe217394c3f45171355b8d5b392ae52"), - StandardGenesisHash: common.HexToHash("0xcd901673f97d59259fa09b0b01b8787f5d25d9f1808566990673519be65cc3ae"), + StandardGenesisHash: standardGenesisHash, AccountDiffs: []AccountDiff{ { Address: testAddr, @@ -95,7 +90,7 @@ func TestScanL2(t *testing.T) { wantReport: L2Report{ Release: string(validation.Semver170), ProvidedGenesisHash: common.HexToHash("0x233c30d682b8c318aa6a8be73e4123076b40618b9943f517f93c67eecd115319"), - StandardGenesisHash: common.HexToHash("0xcd901673f97d59259fa09b0b01b8787f5d25d9f1808566990673519be65cc3ae"), + StandardGenesisHash: standardGenesisHash, AccountDiffs: []AccountDiff{ { Address: common.HexToAddress("0x111"), @@ -124,7 +119,7 @@ func TestScanL2(t *testing.T) { wantReport: L2Report{ Release: string(validation.Semver170), ProvidedGenesisHash: common.HexToHash("0x34ef89a965ff95832f1de620ec385fc4191f695dfffe20ca1595f33586f24374"), - StandardGenesisHash: common.HexToHash("0xcd901673f97d59259fa09b0b01b8787f5d25d9f1808566990673519be65cc3ae"), + StandardGenesisHash: standardGenesisHash, AccountDiffs: []AccountDiff{ { Address: testAddr, @@ -147,7 +142,7 @@ func TestScanL2(t *testing.T) { wantReport: L2Report{ Release: string(validation.Semver170), ProvidedGenesisHash: common.HexToHash("0xf80d466dc95792601043a3d769d3d018e0cf5a71386cceab07cc2cd4a94a5f55"), - StandardGenesisHash: common.HexToHash("0xcd901673f97d59259fa09b0b01b8787f5d25d9f1808566990673519be65cc3ae"), + StandardGenesisHash: standardGenesisHash, AccountDiffs: []AccountDiff{ { Address: common.HexToAddress("0x4200000000000000000000000000000000000043"), diff --git a/ops/internal/validation/versions_test.go b/ops/internal/validation/versions_test.go index e91009319..a84dd0099 100644 --- a/ops/internal/validation/versions_test.go +++ b/ops/internal/validation/versions_test.go @@ -52,6 +52,7 @@ var versionMappings = map[string]validation.Versions{ var versionsToCheck = []validation.Semver{ "op-contracts/v2.0.0-rc.1", "op-contracts/v3.0.0-rc.1", + "op-contracts/v3.0.0-rc.2", } func TestVersionsIntegrity(t *testing.T) { @@ -81,10 +82,18 @@ func testVersionIntegrity(t *testing.T, stdVer validation.VersionConfig, w3Clien ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() + getVersion := func(address common.Address) string { + var contractVer string + require.NoError(t, w3Client.CallCtx(ctx, eth.CallFunc(address, versionFn).Returns(&contractVer))) + return contractVer + } + require.NotNil(t, stdVer.OPContractsManager) opcmAddr := stdVer.OPContractsManager.Address require.NotNil(t, opcmAddr) + require.Equal(t, stdVer.OPContractsManager.Version, getVersion(common.Address(*opcmAddr))) + var impls opcmImpls require.NoError(t, w3Client.CallCtx( ctx, @@ -111,7 +120,7 @@ func testVersionIntegrity(t *testing.T, stdVer validation.VersionConfig, w3Clien for _, field := range fields { implsField := implsValue.FieldByName(field) - require.True(t, implsField.IsValid()) + require.True(t, implsField.IsValid(), "field %s not found", field) address := implsField.Interface().(common.Address) contractData := vValue.FieldByName(field).Interface().(*validation.ContractData) @@ -125,8 +134,7 @@ func testVersionIntegrity(t *testing.T, stdVer validation.VersionConfig, w3Clien require.Empty(t, address, "address %s should be empty", field) } - var contractVer string - require.NoError(t, w3Client.CallCtx(ctx, eth.CallFunc(address, versionFn).Returns(&contractVer))) + contractVer := getVersion(address) require.Equal(t, contractData.Version, contractVer, "invalid version for %s", field) } @@ -134,3 +142,12 @@ func testVersionIntegrity(t *testing.T, stdVer validation.VersionConfig, w3Clien require.NoError(t, w3Client.CallCtx(ctx, eth.CallFunc(common.Address(*stdVer.Mips.Address), oracleFn).Returns(&oracleAddr))) require.Equal(t, common.Address(*stdVer.PreimageOracle.Address), oracleAddr, "invalid oracle address") } + +// TestV300RCEquality tests that the versions for v3.0.0-rc.1 and v3.0.0-rc.2 are equal. +// This is a sanity check to make sure that the L1 deployments did not change between these +// RCs. +func TestV300RCEquality(t *testing.T) { + for _, versions := range []validation.Versions{validation.StandardVersionsMainnet, validation.StandardVersionsSepolia} { + require.Equal(t, versions["op-contracts/v3.0.0-rc.1"], versions["op-contracts/v3.0.0-rc.2"]) + } +} diff --git a/superchain/configs/mainnet/arena-z.toml b/superchain/configs/mainnet/arena-z.toml index b56168f0e..9db0dc48b 100755 --- a/superchain/configs/mainnet/arena-z.toml +++ b/superchain/configs/mainnet/arena-z.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 0 # Thu 1 Jan 1970 00:00:00 UTC granite_time = 0 # Thu 1 Jan 1970 00:00:00 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 20 diff --git a/superchain/configs/mainnet/base.toml b/superchain/configs/mainnet/base.toml index 00b813ddc..2345b27c9 100755 --- a/superchain/configs/mainnet/base.toml +++ b/superchain/configs/mainnet/base.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/bob.toml b/superchain/configs/mainnet/bob.toml index 0eaf62231..06a630d56 100755 --- a/superchain/configs/mainnet/bob.toml +++ b/superchain/configs/mainnet/bob.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/boba.toml b/superchain/configs/mainnet/boba.toml new file mode 100755 index 000000000..c16aa238f --- /dev/null +++ b/superchain/configs/mainnet/boba.toml @@ -0,0 +1,60 @@ +name = "Boba Mainnet" +public_rpc = "https://mainnet.boba.network" +sequencer_rpc = "https://mainnet.boba.network" +explorer = "https://bobascan.com" +superchain_level = 0 +governed_by_optimism = false +data_availability_type = "eth-da" +chain_id = 288 +batch_inbox_addr = "0xfFF0000000000000000000000000000000000288" +block_time = 2 +seq_window_size = 3600 +max_sequencer_drift = 600 + +[hardforks] + canyon_time = 1713302879 # Tue 16 Apr 2024 21:27:59 UTC + delta_time = 1713302879 # Tue 16 Apr 2024 21:27:59 UTC + ecotone_time = 1713302880 # Tue 16 Apr 2024 21:28:00 UTC + fjord_time = 1725951600 # Tue 10 Sep 2024 07:00:00 UTC + granite_time = 1729753200 # Thu 24 Oct 2024 07:00:00 UTC + holocene_time = 1738785600 # Wed 5 Feb 2025 20:00:00 UTC + +[optimism] + eip1559_elasticity = 6 + eip1559_denominator = 50 + eip1559_denominator_canyon = 250 + +[genesis] + l2_time = 1713302879 + [genesis.l1] + hash = "0x945d6244d259e63892abf93e5e6dd3388b79e25ae5ec0502e290a0d0163aa5cf" + number = 19670718 + [genesis.l2] + hash = "0x0a555516317be2719d9befcbcca5f5516b6b7ce0f05b759f5a166b697a8a0fbd" + number = 1149019 + [genesis.system_config] + batcherAddress = "0xe1B64045351B0B6e9821F19b39f81bc4711D2230" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 30000000 + +[roles] + SystemConfigOwner = "0x56121a8612474C3eB65D69a3b871f284705b9bC4" + ProxyAdminOwner = "0x56121a8612474C3eB65D69a3b871f284705b9bC4" + Guardian = "0x56121a8612474C3eB65D69a3b871f284705b9bC4" + Challenger = "0x56121a8612474C3eB65D69a3b871f284705b9bC4" + Proposer = "0xbfBAB4363034A930687B9320599a69DfBf1D21d0" + UnsafeBlockSigner = "0x4Ac69842680847e1135f514eE3d75172B685ECBf" + BatchSubmitter = "0xe1B64045351B0B6e9821F19b39f81bc4711D2230" + +[addresses] + AddressManager = "0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089" + L1CrossDomainMessengerProxy = "0x6D4528d192dB72E282265D6092F4B872f9Dff69e" + L1ERC721BridgeProxy = "0xA6Ad22bb0E73DEF40a24E510cFbc93807d8bf87e" + L1StandardBridgeProxy = "0xdc1664458d2f0B6090bEa60A8793A4E66c2F1c00" + L2OutputOracleProxy = "0xbB7aD3f9CCbC94085b7F7B1D5258e59F5F068741" + OptimismMintableERC20FactoryProxy = "0x4d898F66327Fa050131A17ed17a39EBeCC81f0c3" + OptimismPortalProxy = "0x7B02D13904D8e6E0f0Efaf756aB14Cb0FF21eE7e" + SystemConfigProxy = "0x158Fd5715F16Ac1F2Dc959A299B383aAaf9B59EB" + ProxyAdmin = "0x6e598cec2701FfAA3c06175dc3Af0317a749a0Dc" + SuperchainConfig = "0x996ffD627901f10C80A7d4B72A12316D2e77c076" diff --git a/superchain/configs/mainnet/ethernity.toml b/superchain/configs/mainnet/ethernity.toml index 6ebcc791e..6253d9555 100755 --- a/superchain/configs/mainnet/ethernity.toml +++ b/superchain/configs/mainnet/ethernity.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 20 diff --git a/superchain/configs/mainnet/ink.toml b/superchain/configs/mainnet/ink.toml index f68c9f626..886266e43 100755 --- a/superchain/configs/mainnet/ink.toml +++ b/superchain/configs/mainnet/ink.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 0 # Thu 1 Jan 1970 00:00:00 UTC granite_time = 0 # Thu 1 Jan 1970 00:00:00 UTC holocene_time = 1742396400 # Wed 19 Mar 2025 15:00:00 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/lisk.toml b/superchain/configs/mainnet/lisk.toml index 09750358a..319a4f710 100755 --- a/superchain/configs/mainnet/lisk.toml +++ b/superchain/configs/mainnet/lisk.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 20 diff --git a/superchain/configs/mainnet/lyra.toml b/superchain/configs/mainnet/lyra.toml index bf43a3973..62384b149 100755 --- a/superchain/configs/mainnet/lyra.toml +++ b/superchain/configs/mainnet/lyra.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/metal.toml b/superchain/configs/mainnet/metal.toml index 457814774..72271a7a7 100755 --- a/superchain/configs/mainnet/metal.toml +++ b/superchain/configs/mainnet/metal.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/mint.toml b/superchain/configs/mainnet/mint.toml index 2bbd2dc9e..2d71d81d9 100755 --- a/superchain/configs/mainnet/mint.toml +++ b/superchain/configs/mainnet/mint.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/mode.toml b/superchain/configs/mainnet/mode.toml index 515068722..3a59da7d0 100755 --- a/superchain/configs/mainnet/mode.toml +++ b/superchain/configs/mainnet/mode.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/op.toml b/superchain/configs/mainnet/op.toml index be2e27a99..6fc1a1ace 100755 --- a/superchain/configs/mainnet/op.toml +++ b/superchain/configs/mainnet/op.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/orderly.toml b/superchain/configs/mainnet/orderly.toml index 4b898be6e..341b5020c 100755 --- a/superchain/configs/mainnet/orderly.toml +++ b/superchain/configs/mainnet/orderly.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/polynomial.toml b/superchain/configs/mainnet/polynomial.toml index 81a525730..50610cda3 100755 --- a/superchain/configs/mainnet/polynomial.toml +++ b/superchain/configs/mainnet/polynomial.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/settlus-mainnet.toml b/superchain/configs/mainnet/settlus-mainnet.toml new file mode 100755 index 000000000..f9ff8712f --- /dev/null +++ b/superchain/configs/mainnet/settlus-mainnet.toml @@ -0,0 +1,63 @@ +name = "Settlus Mainnet" +public_rpc = "https://settlus-mainnet.g.alchemy.com/public" +sequencer_rpc = "https://settlus-mainnet-sequencer.g.alchemy.com/" +explorer = "mainnet.settlus.network" +superchain_level = 0 +governed_by_optimism = false +data_availability_type = "eth-da" +chain_id = 5371 +batch_inbox_addr = "0x003E40D3125591bD722aB1bB880c78e4D74d0977" +block_time = 1 +seq_window_size = 3600 +max_sequencer_drift = 1800 + +[hardforks] + canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + delta_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + ecotone_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + fjord_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + granite_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + holocene_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + +[optimism] + eip1559_elasticity = 6 + eip1559_denominator = 50 + eip1559_denominator_canyon = 250 + +[genesis] + l2_time = 1740171575 + [genesis.l1] + hash = "0x7737a04d48b78bd5ce39fdd16a5ecf652e3c35ee5226a56869aa0cbb230acbcb" + number = 21897258 + [genesis.l2] + hash = "0x47a86b86dc4ba2e8c877515717dab337673a24dc3fb06d69ac9f07e9949a48c6" + number = 0 + [genesis.system_config] + batcherAddress = "0xD0b4c3aC8A50B6F1B3949ADaf55Cc9805620EB57" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000000" + scalar = "0x010000000000000000000000000000000000000000000000000c5fc500000558" + gasLimit = 60000000 + +[roles] + SystemConfigOwner = "0x57669299e2a7D5BE46Ba817d8039C1350af830e8" + ProxyAdminOwner = "0xA4fB12D15Eb85dc9284a7df0AdBC8B696EdbbF1d" + Guardian = "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2" + Challenger = "0xA4fB12D15Eb85dc9284a7df0AdBC8B696EdbbF1d" + Proposer = "0x1bC6Df949b8eDC8EE61adB99d578A7a6E6Ff7310" + UnsafeBlockSigner = "0xE7c264af5bdF997A78105A6e0FF32C126Eda66D9" + BatchSubmitter = "0xD0b4c3aC8A50B6F1B3949ADaf55Cc9805620EB57" + +[addresses] + AddressManager = "0xC24C700BC65a3b15De13e489e155c81F621B1856" + L1CrossDomainMessengerProxy = "0x9BdA922e6f1bD53c24F9bCFb88B9638199A82CEb" + L1ERC721BridgeProxy = "0xCcfa1f8A93640488E3E1AE90A0edAf44680E9f82" + L1StandardBridgeProxy = "0xFD4918e51d1e5aa2195C42654CF769b152C9d9C0" + OptimismMintableERC20FactoryProxy = "0x44e9388e88Bb8edE446d62590d8A4C6d34813e98" + OptimismPortalProxy = "0xFc1D560eB01443e31B0EB56620703E80e42A7E4e" + SystemConfigProxy = "0x15C1dAED5443A77b4DcF6FE35cAFcCEBb0c6da0E" + ProxyAdmin = "0xd35FeF329Bb6569baa373BDa702F3dfF59D57321" + SuperchainConfig = "0x95703e0982140D16f8ebA6d158FccEde42f04a4C" + AnchorStateRegistryProxy = "0xb5150595F1E2240b76F414dc96509f5125ba5DD0" + DelayedWETHProxy = "0xC206D300b07cB905Cb1831d8a9172d4c66394638" + DisputeGameFactoryProxy = "0xde9FDA9C499bA1C0168AC083acF5BEc5cC67fA76" + PermissionedDisputeGame = "0xf9534EBc84082dF9d35Fb1Ed8786bF8cE8a90294" diff --git a/superchain/configs/mainnet/snax.toml b/superchain/configs/mainnet/snax.toml new file mode 100755 index 000000000..3113dac74 --- /dev/null +++ b/superchain/configs/mainnet/snax.toml @@ -0,0 +1,67 @@ +name = "SnaxChain" +public_rpc = "https://mainnet.snaxchain.io" +sequencer_rpc = "https://mainnet.snaxchain.io" +explorer = "https://explorer.snaxchain.io" +superchain_level = 0 +governed_by_optimism = false +superchain_time = 0 +data_availability_type = "eth-da" +chain_id = 2192 +batch_inbox_addr = "0xFeC57BD3729a5F930d4Ee8ac5992Fdc8988426e4" +block_time = 2 +seq_window_size = 3600 +max_sequencer_drift = 600 + +[hardforks] + canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + delta_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + ecotone_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + fjord_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC + holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC + +[optimism] + eip1559_elasticity = 6 + eip1559_denominator = 50 + eip1559_denominator_canyon = 250 + +[genesis] + l2_time = 1723562231 + [genesis.l1] + hash = "0x920dc48c1f037d444cb4dee5c69f41853f469dd9e7751398458126a6f76ecea6" + number = 20520542 + [genesis.l2] + hash = "0x518aadbc56e4ca8b03aa141c13b2fc246a9eae88edea09ee477f3d620b00d5ae" + number = 0 + [genesis.system_config] + batcherAddress = "0x060b915cA4904b56adA63565626b9c97F6CaD212" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[roles] + SystemConfigOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + ProxyAdminOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + Guardian = "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A" + Challenger = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + Proposer = "0x85C73d8F7a3C95667779E0d9b8104982A5C1d04e" + UnsafeBlockSigner = "0x22c48998635C2D7Ea8B82aB50761f2c1EEae5D21" + BatchSubmitter = "0x060b915cA4904b56adA63565626b9c97F6CaD212" + +[addresses] + AddressManager = "0xd7BF8B8618c21F337d8eD30aC797Fa330eb94411" + L1CrossDomainMessengerProxy = "0x2A4fC0E3B365052d71B9853Efd0123985559f62E" + L1ERC721BridgeProxy = "0x45561F85e43Ac0d2258c0F0C16540ce128EA1634" + L1StandardBridgeProxy = "0xA5fb68C24b02852e8B514E98A1014faf12547Fa5" + L2OutputOracleProxy = "0xF8f3EbF2469C00A00EA9D1D04913B73896268B25" + OptimismMintableERC20FactoryProxy = "0xeEC78bcEA0EfBbA6e1BE7aFc58C93b70f97d3A6A" + OptimismPortalProxy = "0x936D881b4760D5e9b6D55b774f65c509236b4743" + SystemConfigProxy = "0x9c9B78f798F821C2f6398f603825fd175e2427f9" + ProxyAdmin = "0x672B75103c0CbFdCC4A40737a80724f87a8A25D7" + SuperchainConfig = "0x7439cCf2f0c7569a9B69c86fcE0B58EC771cf1a6" + AnchorStateRegistryProxy = "0xe184371E73A90f7676A3f518964B409c49aF17B2" + DelayedWETHProxy = "0xface4DD95FF0Ce212928C7B6D160b84D6df28BB2" + DisputeGameFactoryProxy = "0x8aF5b3ED56D4a822532A07a84C499d600eCD5cf5" + MIPS = "0x10C68eE05b4f9773b5D77b9eb7023DDe3F8D7741" + PreimageOracle = "0x133790bDaE0aCFd5288d8974318CE408678E2380" diff --git a/superchain/configs/mainnet/soneium.toml b/superchain/configs/mainnet/soneium.toml index 39ad546c7..39e6ad4c5 100755 --- a/superchain/configs/mainnet/soneium.toml +++ b/superchain/configs/mainnet/soneium.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 0 # Thu 1 Jan 1970 00:00:00 UTC granite_time = 0 # Thu 1 Jan 1970 00:00:00 UTC holocene_time = 1738573200 # Mon 3 Feb 2025 09:00:00 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/superchain.toml b/superchain/configs/mainnet/superchain.toml index a496bffe9..54fe80748 100644 --- a/superchain/configs/mainnet/superchain.toml +++ b/superchain/configs/mainnet/superchain.toml @@ -8,7 +8,8 @@ delta_time = 1708560000 # Thu 22 Feb 2024 00:00:00 UTC ecotone_time = 1710374401 # Thu 14 Mar 2024 00:00:01 UTC fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC -holocene_time = 1736445601 # Thu 09 Jan 2025 18:00:01 UTC +holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC +isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [l1] chain_id = 1 diff --git a/superchain/configs/mainnet/tbn.toml b/superchain/configs/mainnet/tbn.toml index 0f2775ef9..c083b4011 100755 --- a/superchain/configs/mainnet/tbn.toml +++ b/superchain/configs/mainnet/tbn.toml @@ -20,6 +20,7 @@ gas_paying_token = "0x04E9D7e336f79Cdab911b06133D3Ca2Cd0721ce3" fjord_time = 1725536344 # Thu 5 Sep 2024 11:39:04 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/unichain.toml b/superchain/configs/mainnet/unichain.toml index 9dd7ac7c2..a059984d3 100755 --- a/superchain/configs/mainnet/unichain.toml +++ b/superchain/configs/mainnet/unichain.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 0 # Thu 1 Jan 1970 00:00:00 UTC granite_time = 0 # Thu 1 Jan 1970 00:00:00 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/mainnet/zora.toml b/superchain/configs/mainnet/zora.toml index d722342fa..081eda780 100755 --- a/superchain/configs/mainnet/zora.toml +++ b/superchain/configs/mainnet/zora.toml @@ -19,6 +19,7 @@ max_sequencer_drift = 600 fjord_time = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC granite_time = 1726070401 # Wed 11 Sep 2024 16:00:01 UTC holocene_time = 1736445601 # Thu 9 Jan 2025 18:00:01 UTC + isthmus_time = 1746806401 # Fri 9 May 2025 16:00:01 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia-dev-0/base-devnet-0.toml b/superchain/configs/sepolia-dev-0/base-devnet-0.toml index 848ec63cf..e5a4ae637 100755 --- a/superchain/configs/sepolia-dev-0/base-devnet-0.toml +++ b/superchain/configs/sepolia-dev-0/base-devnet-0.toml @@ -19,7 +19,8 @@ max_sequencer_drift = 600 fjord_time = 1715961600 # Fri 17 May 2024 16:00:00 UTC granite_time = 1723046400 # Wed 7 Aug 2024 16:00:00 UTC holocene_time = 1731682800 # Fri 15 Nov 2024 15:00:00 UTC - pectra_blob_schedule_time = 1741687200 # Tue 11 Mar 2025 10:00:00 UTC + pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744300800 # Thu 10 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia-dev-0/boba.toml b/superchain/configs/sepolia-dev-0/boba.toml new file mode 100755 index 000000000..a55665b07 --- /dev/null +++ b/superchain/configs/sepolia-dev-0/boba.toml @@ -0,0 +1,60 @@ +name = "Boba Devnet" +public_rpc = "https://devnet.boba.network" +sequencer_rpc = "https://devnet.boba.network" +explorer = "https://__PLACEHOLDER__.boba.network" +superchain_level = 0 +governed_by_optimism = false +data_availability_type = "eth-da" +chain_id = 288882 +batch_inbox_addr = "0xfFF0000000000000000000000000000000288882" +block_time = 2 +seq_window_size = 3600 +max_sequencer_drift = 600 +gas_paying_token = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" + +[hardforks] + canyon_time = 1724692140 # Mon 26 Aug 2024 17:09:00 UTC + delta_time = 1724692140 # Mon 26 Aug 2024 17:09:00 UTC + ecotone_time = 1724692141 # Mon 26 Aug 2024 17:09:01 UTC + fjord_time = 1724692150 # Mon 26 Aug 2024 17:09:10 UTC + granite_time = 1724914800 # Thu 29 Aug 2024 07:00:00 UTC + holocene_time = 1732435200 # Sun 24 Nov 2024 08:00:00 UTC + pectra_blob_schedule_time = 1743534000 # Tue 1 Apr 2025 19:00:00 UTC + +[optimism] + eip1559_elasticity = 6 + eip1559_denominator = 50 + eip1559_denominator_canyon = 250 + +[genesis] + l2_time = 1724692140 + [genesis.l1] + hash = "0xb6404ecff691edd6895c474f4dfca5b3e27b92a19deabd80cbe05c75c1b4c924" + number = 6576100 + [genesis.l2] + hash = "0xe919706177d2c568ed21a4b443d421c8098b4e453a29bd432258fab3f7fe1d07" + number = 0 + [genesis.system_config] + batcherAddress = "0xe40d3fB61A6a9e16ffD17ae4Ed225dE00a4B16fd" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 30000000 + +[roles] + SystemConfigOwner = "0xe62B0E3a9F715493301eBdEC8310C899eae5b30c" + ProxyAdminOwner = "0xe62B0E3a9F715493301eBdEC8310C899eae5b30c" + Guardian = "0xe62B0E3a9F715493301eBdEC8310C899eae5b30c" + Challenger = "0xe62B0E3a9F715493301eBdEC8310C899eae5b30c" + Proposer = "0x10AAf74A0735332b0fFB11935abA51F2A4170F91" + UnsafeBlockSigner = "0x9e43BFCbcb21fCcc1Dfb41a3DaB1ACfaE3C03834" + BatchSubmitter = "0xe40d3fB61A6a9e16ffD17ae4Ed225dE00a4B16fd" + +[addresses] + L1ERC721BridgeProxy = "0x57B679c04EAe2A9cee67414511E4A9f5a9F674E3" + L1StandardBridgeProxy = "0x9F10198e4c1e267757ca55ed29F028b8cD7Ee76D" + L2OutputOracleProxy = "0xcFf51852d3E96912ea1cC8C6F12D6c86b0B37B4F" + OptimismMintableERC20FactoryProxy = "0xd5C40568cB199cCc3bC6d4931742074225781686" + OptimismPortalProxy = "0xD00d5Cc5620697a31014E5594AABba590793836D" + SystemConfigProxy = "0xcc3c025036612B849340D6866eC0bd4d2d794a36" + ProxyAdmin = "0xd7D6C90d94156dBd1251a57c28c7336F8B464C66" + SuperchainConfig = "0x59230BEeaF4225B1E2C4ED391592c8962bb97ba4" diff --git a/superchain/configs/sepolia-dev-0/oplabs-devnet-0.toml b/superchain/configs/sepolia-dev-0/oplabs-devnet-0.toml index 1cc8caa64..aa2d4aa40 100755 --- a/superchain/configs/sepolia-dev-0/oplabs-devnet-0.toml +++ b/superchain/configs/sepolia-dev-0/oplabs-devnet-0.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723046400 # Wed 7 Aug 2024 16:00:00 UTC holocene_time = 1731682800 # Fri 15 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1741687200 # Tue 11 Mar 2025 10:00:00 UTC + isthmus_time = 1744300800 # Thu 10 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia-dev-0/superchain.toml b/superchain/configs/sepolia-dev-0/superchain.toml index b85ec055d..4c8101895 100644 --- a/superchain/configs/sepolia-dev-0/superchain.toml +++ b/superchain/configs/sepolia-dev-0/superchain.toml @@ -10,6 +10,7 @@ fjord_time = 1715961600 # Fri May 17 2024 16:00:00 UTC granite_time = 1723046400 # Wed Aug 7 16:00:00 UTC 2024 holocene_time = 1731682800 # Fri Nov 15 15:00:00 UTC 2024 pectra_blob_schedule_time = 1741687200 # Tue Mar 11 10:00:00 UTC 2025 +isthmus_time = 1744300800 # Thu Apr 10 16:00:00 UTC 2025 [l1] chain_id = 11155111 diff --git a/superchain/configs/sepolia/arena-z-testnet.toml b/superchain/configs/sepolia/arena-z-testnet.toml index 25eb5dc10..07571a6ce 100755 --- a/superchain/configs/sepolia/arena-z-testnet.toml +++ b/superchain/configs/sepolia/arena-z-testnet.toml @@ -18,6 +18,8 @@ max_sequencer_drift = 600 fjord_time = 0 # Thu 1 Jan 1970 00:00:00 UTC granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC + pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 10 diff --git a/superchain/configs/sepolia/base.toml b/superchain/configs/sepolia/base.toml index 0377076f6..ff80bbf7a 100755 --- a/superchain/configs/sepolia/base.toml +++ b/superchain/configs/sepolia/base.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 10 diff --git a/superchain/configs/sepolia/boba.toml b/superchain/configs/sepolia/boba.toml new file mode 100755 index 000000000..d7d5d4da8 --- /dev/null +++ b/superchain/configs/sepolia/boba.toml @@ -0,0 +1,61 @@ +name = "Boba Sepolia Testnet" +public_rpc = "https://sepolia.boba.network" +sequencer_rpc = "https://sepolia.boba.network" +explorer = "https://testnet.bobascan.com" +superchain_level = 0 +governed_by_optimism = false +data_availability_type = "eth-da" +chain_id = 28882 +batch_inbox_addr = "0xfFf0000000000000000000000000000000028882" +block_time = 2 +seq_window_size = 3600 +max_sequencer_drift = 600 + +[hardforks] + canyon_time = 1705600788 # Thu 18 Jan 2024 17:59:48 UTC + delta_time = 1709078400 # Wed 28 Feb 2024 00:00:00 UTC + ecotone_time = 1709078400 # Wed 28 Feb 2024 00:00:00 UTC + fjord_time = 1722297600 # Tue 30 Jul 2024 00:00:00 UTC + granite_time = 1726470000 # Mon 16 Sep 2024 07:00:00 UTC + holocene_time = 1736150400 # Mon 6 Jan 2025 08:00:00 UTC + pectra_blob_schedule_time = 1743534000 # Tue 1 Apr 2025 19:00:00 UTC + +[optimism] + eip1559_elasticity = 6 + eip1559_denominator = 50 + eip1559_denominator_canyon = 250 + +[genesis] + l2_time = 1705600788 + [genesis.l1] + hash = "0x632d8caedbfd573e09c1b49134bd5147147e0904e0f04eba15c662be0258f517" + number = 5109513 + [genesis.l2] + hash = "0x097654c4c932c97808933b42179388f7bbcefaed3bd93fdf69157e19f1deea0e" + number = 511 + [genesis.system_config] + batcherAddress = "0xf598b6388eC06945021699F0bbb23dfCFc5edbE8" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 30000000 + +[roles] + SystemConfigOwner = "0x17070B4AF21625106E7971983Aa524f59EA40c57" + ProxyAdminOwner = "0x17070B4AF21625106E7971983Aa524f59EA40c57" + Guardian = "0x66930dd34EA64bD4B9F32464e363511b49966C5D" + Challenger = "0x17070B4AF21625106E7971983Aa524f59EA40c57" + Proposer = "0x0AB197DdeE146c01A0C6Cadf3d91fbb4340A999A" + UnsafeBlockSigner = "0x274a47436C7C896827633805d924d41BBa1D19e9" + BatchSubmitter = "0xf598b6388eC06945021699F0bbb23dfCFc5edbE8" + +[addresses] + AddressManager = "0xC62C429390B7bCE9960fa647d5556CA7238168AB" + L1CrossDomainMessengerProxy = "0x9253E76E2fA3f72aF18e08914b3528F725779495" + L1ERC721BridgeProxy = "0x13B397A08322973B45e063F29746Fb278f189916" + L1StandardBridgeProxy = "0x244d7b81EE3949788Da5F1178D911e83bA24E157" + L2OutputOracleProxy = "0xdBdb238185f9BB40f742aE249f9a083381EC39eC" + OptimismMintableERC20FactoryProxy = "0xE6ebece6936528804BB4c43AdcA10c2623919852" + OptimismPortalProxy = "0xB079E6FA9B3eb072fEbf7F746044834eab308dB6" + SystemConfigProxy = "0xfDC9bCE032cEF55a71b4fde9B9a2198ad1551965" + ProxyAdmin = "0x66930dd34EA64bD4B9F32464e363511b49966C5D" + SuperchainConfig = "0x029A23c6E9D3026f984cd1Fd9C47906e4F5327F3" diff --git a/superchain/configs/sepolia/creator-chain-testnet.toml b/superchain/configs/sepolia/creator-chain-testnet.toml index d014b33e3..e677bab26 100755 --- a/superchain/configs/sepolia/creator-chain-testnet.toml +++ b/superchain/configs/sepolia/creator-chain-testnet.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia/cyber.toml b/superchain/configs/sepolia/cyber.toml index 6ee5ce37e..993e13a77 100755 --- a/superchain/configs/sepolia/cyber.toml +++ b/superchain/configs/sepolia/cyber.toml @@ -15,6 +15,7 @@ max_sequencer_drift = 600 canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC delta_time = 0 # Thu 1 Jan 1970 00:00:00 UTC ecotone_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + pectra_blob_schedule_time = 1744696800 # Tue 15 Apr 2025 06:00:00 UTC [optimism] eip1559_elasticity = 10 diff --git a/superchain/configs/sepolia/ethernity.toml b/superchain/configs/sepolia/ethernity.toml index 0965a9d6f..3657a0637 100755 --- a/superchain/configs/sepolia/ethernity.toml +++ b/superchain/configs/sepolia/ethernity.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia/funki.toml b/superchain/configs/sepolia/funki.toml index 4723a2f32..3ae002cb2 100755 --- a/superchain/configs/sepolia/funki.toml +++ b/superchain/configs/sepolia/funki.toml @@ -15,6 +15,7 @@ max_sequencer_drift = 600 canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC delta_time = 0 # Thu 1 Jan 1970 00:00:00 UTC ecotone_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + pectra_blob_schedule_time = 1744696800 # Tue 15 Apr 2025 06:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia/ink.toml b/superchain/configs/sepolia/ink.toml index 9f191a04a..0823aedd8 100755 --- a/superchain/configs/sepolia/ink.toml +++ b/superchain/configs/sepolia/ink.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia/lisk.toml b/superchain/configs/sepolia/lisk.toml index a2747dafa..302dfd7ec 100755 --- a/superchain/configs/sepolia/lisk.toml +++ b/superchain/configs/sepolia/lisk.toml @@ -4,6 +4,7 @@ sequencer_rpc = "https://rpc.sepolia-api.lisk.com" explorer = "https://sepolia-blockscout.lisk.com" superchain_level = 1 governed_by_optimism = false +superchain_time = 1708534800 data_availability_type = "eth-da" chain_id = 4202 batch_inbox_addr = "0xff00000000000000000000000000000000004202" @@ -17,6 +18,9 @@ max_sequencer_drift = 600 ecotone_time = 1708534800 # Wed 21 Feb 2024 17:00:00 UTC fjord_time = 1716998400 # Wed 29 May 2024 16:00:00 UTC granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC + holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC + pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 10 diff --git a/superchain/configs/sepolia/metal.toml b/superchain/configs/sepolia/metal.toml index 133e9b337..e01d29a6a 100755 --- a/superchain/configs/sepolia/metal.toml +++ b/superchain/configs/sepolia/metal.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia/mode.toml b/superchain/configs/sepolia/mode.toml index ae3d07991..4831618ad 100755 --- a/superchain/configs/sepolia/mode.toml +++ b/superchain/configs/sepolia/mode.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia/op.toml b/superchain/configs/sepolia/op.toml index e3bcdc6e0..9ca3348d4 100755 --- a/superchain/configs/sepolia/op.toml +++ b/superchain/configs/sepolia/op.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia/settlus-sepolia.toml b/superchain/configs/sepolia/settlus-sepolia.toml new file mode 100755 index 000000000..948f7b0e4 --- /dev/null +++ b/superchain/configs/sepolia/settlus-sepolia.toml @@ -0,0 +1,63 @@ +name = "Settlus Sepolia" +public_rpc = "https://settlus-septestnet.g.alchemy.com/public" +sequencer_rpc = "https://settlus-sep-testnet-sequencer.g.alchemy.com/" +explorer = "sepolia.settlus.network" +superchain_level = 0 +governed_by_optimism = false +data_availability_type = "eth-da" +chain_id = 5373 +batch_inbox_addr = "0x00b18C246d9b94634a54DcC2A2d258a048ab2227" +block_time = 1 +seq_window_size = 3600 +max_sequencer_drift = 1800 + +[hardforks] + canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + delta_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + ecotone_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + fjord_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + granite_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + holocene_time = 0 # Thu 1 Jan 1970 00:00:00 UTC + +[optimism] + eip1559_elasticity = 6 + eip1559_denominator = 50 + eip1559_denominator_canyon = 250 + +[genesis] + l2_time = 1736459256 + [genesis.l1] + hash = "0xd8c9f415fe06484e7713d1e08144a4d1b37e064813b6f3ca45c9d9a29a1f13db" + number = 7456555 + [genesis.l2] + hash = "0xa055eed3718c2ed1f04692c707b7045a804505b5e5184a37143514ba9d14281e" + number = 0 + [genesis.system_config] + batcherAddress = "0x26A1bABee918f55bfdDB002066C63678147B03A2" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000000" + scalar = "0x010000000000000000000000000000000000000000000000000c5fc500000558" + gasLimit = 60000000 + +[roles] + SystemConfigOwner = "0xC5019AC7B57Ae7918BC3430a92D92bCcD3079aB6" + ProxyAdminOwner = "0xC5019AC7B57Ae7918BC3430a92D92bCcD3079aB6" + Guardian = "0x8C7E4A51acb17719D225bd17598B8a94B46c8767" + Challenger = "0xAC165b92E4f98D0Dfd9fB7d2aB474feE56B98A0d" + Proposer = "0x3Fb1cAa16477704bD679C5a883D9DbB1924F4Ee0" + UnsafeBlockSigner = "0xb1fed649e18588D081C5Ea4aE14b61836dd0062a" + BatchSubmitter = "0x26A1bABee918f55bfdDB002066C63678147B03A2" + +[addresses] + AddressManager = "0xed768f41dBe97D81D77316818c2802d322cE21Db" + L1CrossDomainMessengerProxy = "0xffAe0c2cf1547057CD0828e3B01aF11C266C1b3C" + L1ERC721BridgeProxy = "0xbD07617F0Ce47DB1cd51Eb6b9b5E7b3c109410F2" + L1StandardBridgeProxy = "0x1Fe9c3b11Ed334fC049aE9a92Ec290aA69C39267" + OptimismMintableERC20FactoryProxy = "0x71c23513fA05827e168b5A4dCa1f1C81A9a5EEf4" + OptimismPortalProxy = "0x55585368857DcC7E0F89475d28963977DB0b1Ee1" + SystemConfigProxy = "0x7f73514A7eC19f3F51E3c607D536560818dF4205" + ProxyAdmin = "0x4b339825002823Af8B6cA1Ecdf5F9D08cA1f584A" + SuperchainConfig = "0xC2Be75506d5724086DEB7245bd260Cc9753911Be" + AnchorStateRegistryProxy = "0xC31B23208e7F7f8c8bC2Ce6816cbB6867C026b1f" + DelayedWETHProxy = "0xe2a6eFaC27793D4cC9a14B3BF3089817cFA41AA9" + DisputeGameFactoryProxy = "0x017D15a6854CCAaa89c63d1A9fea8da45Ced97Cf" + PermissionedDisputeGame = "0xEb0d28F0474103480eCD393C8e0C64C003a4914e" diff --git a/superchain/configs/sepolia/soneium-minato.toml b/superchain/configs/sepolia/soneium-minato.toml index a9baf1edc..72056d8d0 100755 --- a/superchain/configs/sepolia/soneium-minato.toml +++ b/superchain/configs/sepolia/soneium-minato.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 1800 granite_time = 1730106000 # Mon 28 Oct 2024 09:00:00 UTC holocene_time = 1734685200 # Fri 20 Dec 2024 09:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/configs/sepolia/superchain.toml b/superchain/configs/sepolia/superchain.toml index f05cecb3c..15c6155ea 100644 --- a/superchain/configs/sepolia/superchain.toml +++ b/superchain/configs/sepolia/superchain.toml @@ -9,8 +9,8 @@ ecotone_time = 1708534800 # Wed 21 Feb 2024 17:00:00 UTC fjord_time = 1716998400 # Wed 29 May 2024 16:00:00 UTC granite_time = 1723478400 # Mon Aug 12 16:00:00 UTC 2024 holocene_time = 1732633200 # Tue Nov 26 15:00:00 UTC 2024 - pectra_blob_schedule_time = 1742486400 # Thu Mar 20 16:00:00 UTC 2025 +isthmus_time = 1744905600 # Thu Apr 17 16:00:00 UTC 2025 [l1] chain_id = 11155111 diff --git a/superchain/configs/sepolia/unichain.toml b/superchain/configs/sepolia/unichain.toml index 8cbd1c064..09067eee7 100755 --- a/superchain/configs/sepolia/unichain.toml +++ b/superchain/configs/sepolia/unichain.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 0 # Thu 1 Jan 1970 00:00:00 UTC holocene_time = 1734559200 # Wed 18 Dec 2024 22:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 @@ -58,7 +59,7 @@ max_sequencer_drift = 600 OptimismPortalProxy = "0x0d83dab629f0e0F9d36c0Cbc89B69a489f0751bD" SystemConfigProxy = "0xaeE94b9aB7752D3F7704bDE212c0C6A0b701571D" ProxyAdmin = "0x2BF403E5353A7a082ef6bb3Ae2Be3B866D8D3ea4" - SuperchainConfig = "0xe7e23eBa32A6FD2aC79dd5EC72FE7f6217b41BDC" + SuperchainConfig = "0xC2Be75506d5724086DEB7245bd260Cc9753911Be" AnchorStateRegistryProxy = "0xf971F1b0D80eb769577135b490b913825BfcF00B" DisputeGameFactoryProxy = "0xeff73e5aa3B9AEC32c659Aa3E00444d20a84394b" MIPS = "0x1cEc5b1954302F6FAf45515145C72d7f7266546c" diff --git a/superchain/configs/sepolia/worldchain.toml b/superchain/configs/sepolia/worldchain.toml index 13030a8d7..9faff4ff5 100755 --- a/superchain/configs/sepolia/worldchain.toml +++ b/superchain/configs/sepolia/worldchain.toml @@ -18,6 +18,7 @@ max_sequencer_drift = 1800 fjord_time = 1721739600 # Tue 23 Jul 2024 13:00:00 UTC granite_time = 1726570800 # Tue 17 Sep 2024 11:00:00 UTC holocene_time = 1737633600 # Thu 23 Jan 2025 12:00:00 UTC + pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC [optimism] eip1559_elasticity = 10 diff --git a/superchain/configs/sepolia/zora.toml b/superchain/configs/sepolia/zora.toml index 44cee81d4..3249dbb76 100755 --- a/superchain/configs/sepolia/zora.toml +++ b/superchain/configs/sepolia/zora.toml @@ -20,6 +20,7 @@ max_sequencer_drift = 600 granite_time = 1723478400 # Mon 12 Aug 2024 16:00:00 UTC holocene_time = 1732633200 # Tue 26 Nov 2024 15:00:00 UTC pectra_blob_schedule_time = 1742486400 # Thu 20 Mar 2025 16:00:00 UTC + isthmus_time = 1744905600 # Thu 17 Apr 2025 16:00:00 UTC [optimism] eip1559_elasticity = 6 diff --git a/superchain/extra/addresses/addresses.json b/superchain/extra/addresses/addresses.json index 1027331b7..c9f4e90b3 100755 --- a/superchain/extra/addresses/addresses.json +++ b/superchain/extra/addresses/addresses.json @@ -1,72 +1,74 @@ { "10": { "AddressManager": "0xdE1FCfB0851916CA5101820A69b13a4E276bd81F", - "AnchorStateRegistryProxy": "0x18DAc71c228D1C32c99489B7323d441E1175e443", + "AnchorStateRegistryProxy": "0x1c68ECfbf9C8B1E6C0677965b3B9Ecf9A104305b", "BatchSubmitter": "0x6887246668a3b87F54DeB3b94Ba47a6f63F32985", "Challenger": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", - "DelayedWETHProxy": "0x82511d494B5C942BE57498a70Fdd7184Ee33B975", + "DelayedWETHProxy": "0x323dFC63c9B83CB83f40325AaB74b245937cbdF0", "DisputeGameFactoryProxy": "0xe5965Ab5962eDc7477C8520243A95517CD252fA9", - "FaultDisputeGame": "0xA6f3DFdbf4855a43c529bc42EDE96797252879af", + "FaultDisputeGame": "0xbA94955CA3422fC57f9D982a0BaD2a9c88e2a9D0", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1", "L1ERC721BridgeProxy": "0x5a7749f83b81B301cAb5f48EB8516B986DAef23D", "L1StandardBridgeProxy": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1", - "MIPS": "0x16e83cE5Ce29BF90AD9Da06D2fE6a15d5f344ce4", + "MIPS": "0xaA59A0777648BC75cd10364083e878c1cCd6112a", "OptimismMintableERC20FactoryProxy": "0x75505a97BD334E7BD3C476893285569C4136Fa0F", "OptimismPortalProxy": "0xbEb5Fc579115071764c7423A4f12eDde41f106Ed", - "PermissionedDisputeGame": "0x050ed6F6273c7D836a111E42153BC00D0380b87d", - "PreimageOracle": "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277", + "PermissionedDisputeGame": "0xd113ad136a0dF1c7FfB7F1606Be1c778bCfE2f3b", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0x473300df21D047806A082244b417f96b32f13A33", "ProxyAdmin": "0x543bA4AADBAb8f9025686Bd03993043599c6fB04", "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", + "SuperchainConfig": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", "SystemConfigOwner": "0x847B5c174615B1B7fDF770882256e2D3E95b9D92", "SystemConfigProxy": "0x229047fed2591dbec1eF1118d64F7aF3dB9EB290", "UnsafeBlockSigner": "0xAAAA45d9549EDA09E70937013520214382Ffc4A2" }, "11011": { "AddressManager": "0x42721d8512d62aA26B2Cfa1AE18bEEd5a9Ab1337", - "AnchorStateRegistryProxy": "0x41ea3c370896632121Cdde1b94a4eCcf23DA4532", + "AnchorStateRegistryProxy": "0x1d5c8daABf84b2b2DA7e4fdcf4e9b7095964689F", "BatchSubmitter": "0x6fF556Fa7CaFEc55aE77C5C1d58A010be75f9991", - "Challenger": "0xa9ABe4af69BEA2f381ca600f625Eb3E6b7559266", - "DelayedWETHProxy": "0x7cc9cA91BA4f92F4C967E93a1AAd97beB18d3877", - "DisputeGameFactoryProxy": "0x93eaa7A1E7d7af7eD9D612F9957988C8631c33e8", - "Guardian": "0xa9ABe4af69BEA2f381ca600f625Eb3E6b7559266", + "Challenger": "0x945185C01fb641bA3E63a9bdF66575e35a407837", + "DelayedWETHProxy": "0xe1Ed4c6D1960563D62e54633a00d2B4D777af1cb", + "DisputeGameFactoryProxy": "0x575697F2c20Bd63415E5B24656d935D4b81b8220", + "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0xF9F730650e1AB4D23E2ac983934271ca7c5EF293", "L1ERC721BridgeProxy": "0x19f02c55254d2644eF94f30C74A932D64e1D4F86", "L1StandardBridgeProxy": "0x341ab1DAFdfB73b3D6D075ef10b29e3cACB2A653", - "L2OutputOracleProxy": "0x532dDCed3440Eab81c529Ac8b0d7e429B5C05c52", - "MIPS": "0xaCf1Ed7357E41f652407ae6cFE1024705c758C38", + "MIPS": "0x69470D6970Cd2A006b84B1d4d70179c892cFCE01", "OptimismMintableERC20FactoryProxy": "0x46085E2e648488e49FBeaF6544b8e9Dc96df8BDd", "OptimismPortalProxy": "0xfF8Ca2B4d8122E41441F7ccDCf61b8692198Bd1E", - "PreimageOracle": "0x8F3B1c59eD4439ebF564604aA4B93130DA4CD1D5", + "PermissionedDisputeGame": "0x24A7be4E07D5b19CB4cE6c9374dE00F628830b7a", + "PreimageOracle": "0x92240135b46fc1142dA181f550aE8f595B858854", "Proposer": "0xf8Ed03b83c15aa3d0b52095F3c9971225948B777", "ProxyAdmin": "0xd60a706Bf6108F090d055787B9B353FA7EEE1355", - "ProxyAdminOwner": "0x4c4526C8C55c4e1a6F2aaf91e37f07c97786e0f5", - "SuperchainConfig": "0xe5b3692266FF4Ab8A96A9C7Da6EeEe532CCc7916", + "ProxyAdminOwner": "0x945185C01fb641bA3E63a9bdF66575e35a407837", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", "SystemConfigOwner": "0xa9ABe4af69BEA2f381ca600f625Eb3E6b7559266", "SystemConfigProxy": "0xa1aC91ED91EbE40E00d61E233c8026318b4da5fb", "UnsafeBlockSigner": "0xbB4f4B3a46361653BE9DB255D8ff2D004F0FB248" }, "11155420": { "AddressManager": "0x9bFE9c5609311DF1c011c47642253B78a4f33F4B", - "AnchorStateRegistryProxy": "0x218CD9489199F321E1177b56385d333c5B598629", + "AnchorStateRegistryProxy": "0xDB2727Fc71176Bf8ED630F4142e0439733588e85", "BatchSubmitter": "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c", "Challenger": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", "DelayedWETHProxy": "0xcdFdC692a53B4aE9F81E0aEBd26107Da4a71dB84", "DisputeGameFactoryProxy": "0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1", - "FaultDisputeGame": "0xF3CcF0C4b51D42cFe6073F0278c19A8D1900e856", + "FaultDisputeGame": "0x38c2b9A214cDc3bBBc4915Dae8c2F0a7917952Dd", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x58Cc85b8D04EA49cC6DBd3CbFFd00B4B8D6cb3ef", "L1ERC721BridgeProxy": "0xd83e03D576d23C9AEab8cC44Fa98d058D2176D1f", "L1StandardBridgeProxy": "0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1", - "MIPS": "0x47B0E34C1054009e696BaBAAd56165e1e994144d", + "MIPS": "0xF027F4A985560fb13324e943edf55ad6F1d15Dc1", "OptimismMintableERC20FactoryProxy": "0x868D59fF9710159C2B330Cc0fBDF57144dD7A13b", "OptimismPortalProxy": "0x16Fc5058F25648194471939df75CF27A2fdC48BC", - "PermissionedDisputeGame": "0xbbDBdfe37C02439764dE0e41C906e4396B5B3914", - "PreimageOracle": "0x92240135b46fc1142dA181f550aE8f595B858854", + "PermissionedDisputeGame": "0x3dbfB370be95Eb598C8b89B45d7c101dC1679AB9", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0x49277EE36A024120Ee218127354c4a3591dc90A9", "ProxyAdmin": "0x189aBAAaa82DfC015A588A7dbaD6F13b1D3485Bc", "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", "SystemConfigOwner": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", "SystemConfigProxy": "0x034edD2A225f7f429A63E0f1D2084B9E0A93b538", "UnsafeBlockSigner": "0x57CACBB0d30b01eb2462e5dC940c161aff3230D3" @@ -78,19 +80,20 @@ "Challenger": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", "DelayedWETHProxy": "0xE99696a028171e31a72828A196C27c2Dd670E1aa", "DisputeGameFactoryProxy": "0x2419423C72998eb1c6c15A235de2f112f8E38efF", - "FaultDisputeGame": "0x54416A2E28E8cbC761fbce0C7f107307991282e5", + "FaultDisputeGame": "0x030aca4aea0CF48BD53dca03b34e35D05B9635C7", "Guardian": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", "L1CrossDomainMessengerProxy": "0x18e72C15FEE4e995454b919EfaA61D8f116F82dd", "L1ERC721BridgeProxy": "0x1bb726658E039E8a9A4ac21A41fE5a0704760461", "L1StandardBridgeProxy": "0x6D8bC564EF04AaF355a10c3eb9b00e349dd077ea", - "MIPS": "0xceDE5949A189aC60F41F1385a86DBce7Bd3B1943", + "MIPS": "0x2B82752b3809A6B7f1662536aF72c519000610e3", "OptimismMintableERC20FactoryProxy": "0xA16b8db3b5Cdbaf75158F34034B0537e528E17e2", "OptimismPortalProxy": "0x76114bd29dFcC7a9892240D317E6c7C2A281Ffc6", - "PermissionedDisputeGame": "0x50573970b291726B881b204eD9F3c1D507e504cD", + "PermissionedDisputeGame": "0x4001542871a610A551b11DCAaeA52dC5CA6FDB6a", "PreimageOracle": "0xB73342DdD69620e5Ab2Cc604Dad46434C2338025", "Proposer": "0x95014c45078354Ff839f14192228108Eac82E00A", "ProxyAdmin": "0x18d890A46A3556e7F36f28C79F6157BC7a59f867", "ProxyAdminOwner": "0x4377BB0F0103992b31eC12b4d796a8687B8dC8E9", + "SuperchainConfig": "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7", "SystemConfigOwner": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", "SystemConfigProxy": "0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7", "UnsafeBlockSigner": "0xa95B83e39AA78B00F12fe431865B563793D97AF5" @@ -98,17 +101,11 @@ "111557560": { "AddressManager": "0x4E9874640d6a670B7F4c7A1370bC303Bb46F360f", "BatchSubmitter": "0x90BB84339856530192CD002533cd7f1290Fc5142", - "Challenger": "0x66530799037b46913e52e9e0144D15ab6ed954f5", - "DisputeGameFactoryProxy": "0x99f0f9B0E7B16B10042E0935CE34F2fCebBE13C1", "Guardian": "0x66530799037b46913e52e9e0144D15ab6ed954f5", "L1CrossDomainMessengerProxy": "0xB88ee11d822bEc8055f19711458dE8593E7117A3", - "L1ERC721BridgeProxy": "0x524e85D2B49497561c53EFEB4B126Aa63883B480", "L1StandardBridgeProxy": "0xAA1bD6D4d8cFD37330a917bc678CB38BEFAf44E6", "L2OutputOracleProxy": "0xD94Ce9E4886A6dcEbC7cF993f4b38F5276516643", - "MIPS": "0xD0E6c40D8462466633BAa2d24796d788A08b2e9F", - "OptimismMintableERC20FactoryProxy": "0xCfc893490072F14F19ed6dF2b0d985f908ACEE50", "OptimismPortalProxy": "0x06C9Cadb0346c8E142fb8299cEF3EB5120d4c9b6", - "PreimageOracle": "0xceF1e04Fd7413C4a7287DF9099Ac57EEd48fB8f2", "Proposer": "0x69ffD6a97141B632631Ef7f56cCeA6a36f02bD7F", "ProxyAdmin": "0x6FcE62e16720BE713e77C954d6f1e6bC8B8d9F48", "ProxyAdminOwner": "0x642A102cD63f039930f99b4657f41Fd4AD7699d6", @@ -120,8 +117,6 @@ "1135": { "AddressManager": "0x2dF7057d3F25212E51aFEA8dA628668229Ea423f", "BatchSubmitter": "0xa6Ea2f3299b63c53143c993d2d5E60A69Cd6Fe24", - "Challenger": "0xBeA2Bc852a160B8547273660E22F4F08C2fa9Bbb", - "DisputeGameFactoryProxy": "0x0479e6757eb4743843b309DDDF78E6bA242F38BE", "Guardian": "0xBeA2Bc852a160B8547273660E22F4F08C2fa9Bbb", "L1CrossDomainMessengerProxy": "0x31B72D76FB666844C41EdF08dF0254875Dbb7edB", "L1ERC721BridgeProxy": "0x3A44A3b263FB631cdbf25f339e2D29497511A81f", @@ -139,39 +134,46 @@ }, "11763072": { "AddressManager": "0x882a60911d00867Fe4ea632C479cc48e583A8D69", + "AnchorStateRegistryProxy": "0xfb17A817168BD4DFd48Fb6C9fd07B4409501e3E0", "BatchSubmitter": "0x7A43fD33e42054C965eE7175dd4590D2BDba79cB", - "Challenger": "0x5a533AaAC6cd81605b301a1077BC393A94658B6D", - "Guardian": "0x4F43c7422a9b2AC4BC6145Bd4eE206EA73cF8266", + "Challenger": "0x9892742025C43cdBb22034Df7486E55aE4C476d4", + "DelayedWETHProxy": "0x9dc3d8500c295e95D5C4EBDeD3222a74fF19e524", + "DisputeGameFactoryProxy": "0xe545eDE9d1FaDaD12984c31467F56405884b9398", + "FaultDisputeGame": "0x6bcD345Cf9dF8eD3aA9b0a66aC1cC1414d8238b9", + "Guardian": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", "L1CrossDomainMessengerProxy": "0x2cbD403d5BA3949D24ee4dF57805eaC612C2662f", "L1ERC721BridgeProxy": "0xc3016ED03E087d092d576B585F5222fFD9cadc10", "L1StandardBridgeProxy": "0x5638e55db5Fcf7A58df525F1098E8569C8DbA80c", - "L2OutputOracleProxy": "0xB5901509329307E3f910f333Fa9C4B4A8EE7CE1A", + "MIPS": "0x69470D6970Cd2A006b84B1d4d70179c892cFCE01", "OptimismMintableERC20FactoryProxy": "0xEAa11178375e6B1078d815d6F9F85cBbb69b09Cd", "OptimismPortalProxy": "0x579c82A835B884336B632eeBeCC78FA08D3291Ec", - "Proposer": "0xf99C2Da4822Af652fe1BF55F99713980efe5D261", + "PermissionedDisputeGame": "0x0941dACCAaDE2EDf36614d5eF0e1cb6ee8676cD4", + "PreimageOracle": "0x92240135b46fc1142dA181f550aE8f595B858854", + "Proposer": "0xBcB04FC753D36dcEeBe9Df7E18E23c46D1fcEA3c", "ProxyAdmin": "0xC5aE9023bFA79124ffA50169E1423E733D0166f1", "ProxyAdminOwner": "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430", + "SuperchainConfig": "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7", "SystemConfigOwner": "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430", "SystemConfigProxy": "0x7F67DC4959cb3E532B10A99F41bDD906C46FdFdE", "UnsafeBlockSigner": "0xfd7bc3C58Fe4D4296F11F7843ebbA84D729A24B9" }, "130": { "AddressManager": "0x8098F676033A377b9Defe302e9fE6877cD63D575", - "AnchorStateRegistryProxy": "0x318A642db9e24A85318B8BF18eFd5287BA38643B", + "AnchorStateRegistryProxy": "0xD5D0e176be44E61eaB3Cf1FA8153758dF603376f", "BatchSubmitter": "0x2F60A5184c63ca94f82a27100643DbAbe4F3f7Fd", "Challenger": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", "DelayedWETHProxy": "0xc9edb4E340f4E9683B4557bD9db8f9d932177C86", "DisputeGameFactoryProxy": "0x2F12d621a16e2d3285929C9996f478508951dFe4", - "FaultDisputeGame": "0x08f0F8F4E792d21E16289dB7a80759323C446F61", + "FaultDisputeGame": "0xd2C3C6f4A4c5AA777bD6c476AEa58439Db0dD844", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x9A3D64E386C18Cb1d6d5179a9596A4B5736e98A6", "L1ERC721BridgeProxy": "0xD04D0D87E0bd4D2E50286760a3EF323FeA6849Cf", "L1StandardBridgeProxy": "0x81014F44b0a345033bB2b3B21C7a1A308B35fEeA", - "MIPS": "0x16e83cE5Ce29BF90AD9Da06D2fE6a15d5f344ce4", + "MIPS": "0xaA59A0777648BC75cd10364083e878c1cCd6112a", "OptimismMintableERC20FactoryProxy": "0xA2B597EaeAcb6F627e088cbEaD319e934ED5edad", "OptimismPortalProxy": "0x0bd48f6B86a26D3a217d0Fa6FfE2B491B956A7a2", - "PermissionedDisputeGame": "0xC457172937fFa9306099ec4F2317903254Bf7223", - "PreimageOracle": "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277", + "PermissionedDisputeGame": "0x5FE2BECc3dec340d3df04351DB8E728CbE4c7450", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0xD5F0E2912C70771C589CD8bB087EDE0Dab4AFA9A", "ProxyAdmin": "0x3B73Fa8d82f511A3caE17B5a26E4E1a2d5E2f2A4", "ProxyAdminOwner": "0x6d5B183F538ABB8572F5cD17109c617b994D5833", @@ -182,43 +184,39 @@ }, "1301": { "AddressManager": "0xEf1295ED471DFEC101691b946fb6B4654E88f98A", - "AnchorStateRegistryProxy": "0xf971F1b0D80eb769577135b490b913825BfcF00B", + "AnchorStateRegistryProxy": "0x042395c8cC570A20288911dc32E75Beae82aaaa2", "BatchSubmitter": "0x4AB3387810eF500bfe05a49dc53A44C222cbab3e", "Challenger": "0x921D59f383E9B86b3161a356013b6F8b40CF43C4", + "DelayedWETHProxy": "0x4E7e6dC46CE003A1E353B6848BF5a4fc1FeAC8Ae", "DisputeGameFactoryProxy": "0xeff73e5aa3B9AEC32c659Aa3E00444d20a84394b", - "Guardian": "0xD032D9E1F3b3ca6362EC56FbC9d689565F759825", + "FaultDisputeGame": "0x4745808Cc649f290439763214fC40Ac905806d8D", + "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x448A37330A60494E666F6DD60aD48d930AEbA381", "L1ERC721BridgeProxy": "0x4696b5e042755103fe558738Bcd1ecEe7A45eBfe", "L1StandardBridgeProxy": "0xea58fcA6849d79EAd1f26608855c2D6407d54Ce2", - "MIPS": "0x1cEc5b1954302F6FAf45515145C72d7f7266546c", + "MIPS": "0xaA59A0777648BC75cd10364083e878c1cCd6112a", "OptimismMintableERC20FactoryProxy": "0xDf7977C3005730329A160637E8CB9f1675A4d9Be", "OptimismPortalProxy": "0x0d83dab629f0e0F9d36c0Cbc89B69a489f0751bD", - "PermissionedDisputeGame": "0x2A82958845ddc647cE1D45F44a7038d6A2D363Ac", - "PreimageOracle": "0xAd0a6f4F1503048C34D90dF845c37c876407355a", + "PermissionedDisputeGame": "0x2275D0c824116aD516987048fFfaBAC6B0C3A29B", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0xA25B0eF1CC3ee12a0a167B5BF44dB1a9c166474e", "ProxyAdmin": "0x2BF403E5353A7a082ef6bb3Ae2Be3B866D8D3ea4", "ProxyAdminOwner": "0xd363339eE47775888Df411A163c586a8BdEA9dbf", - "SuperchainConfig": "0xe7e23eBa32A6FD2aC79dd5EC72FE7f6217b41BDC", - "SystemConfigOwner": "0xB6185370E3db2472EC7Ec4A2826954D2d4923B9f", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", + "SystemConfigOwner": "0x325B777f8F0bC71fb6b617Bc41A8703CA7077891", "SystemConfigProxy": "0xaeE94b9aB7752D3F7704bDE212c0C6A0b701571D", "UnsafeBlockSigner": "0x565B71025Ab4de80AcA33c62E51439af56301493" }, "16481": { "AddressManager": "0x40601f9c44ec842E3fAA45CAd15d475B450d9277", - "AnchorStateRegistryProxy": "0x76b5568B3FE823c8D4Dbb1d64e055F9e8D847fAb", "BatchSubmitter": "0xc122b4d47644BBD7A98E41Dd242D20054A11f720", - "Challenger": "0xC121E7f785AC0E5B1da6C7316326412D1c4Eb28c", - "DelayedWETHProxy": "0xE446Ecee5BD4102f6366ef3551906ADc40f3Fc2A", - "DisputeGameFactoryProxy": "0xcB97C9224Af16C95b8D8959A2752eF1832EB8BA9", "Guardian": "0xC121E7f785AC0E5B1da6C7316326412D1c4Eb28c", "L1CrossDomainMessengerProxy": "0x1F6393C113b9C221fbcFB17c163C88d4bDa172b0", "L1ERC721BridgeProxy": "0x079ba88EDD1BE4FEFb5011B61714Df9eF092Ad8f", "L1StandardBridgeProxy": "0x788De2B0Dd35808a05eAFf7aAf5578B21E0dd9A7", "L2OutputOracleProxy": "0x8A5F3B0897d9B9bA09fd2974F3aBE038C15AaBa9", - "MIPS": "0x183A472b3e8724d4309895c8F1615Ad49b6cC469", "OptimismMintableERC20FactoryProxy": "0x9aEe2cF874fe76bF91cD63722Db45212bE48C5e3", "OptimismPortalProxy": "0x923B28e0037A799A1e60368e60c92dFfba982162", - "PreimageOracle": "0xb3AAb329abB207583659E2546e9f24F32eA668e1", "Proposer": "0xC12309Aac4bd25DBF7Df460fdDd93f621ee5DA3B", "ProxyAdmin": "0xd79bd9c4A711D053c7F2e62526e3c4442B6b526f", "ProxyAdminOwner": "0x1D60661F40ACC64E38fcAdE8979D22a9B9278E6E", @@ -230,7 +228,6 @@ "1740": { "AddressManager": "0x394f844B9A0FC876935d1b0b791D9e94Ad905e8b", "BatchSubmitter": "0xdb80Eca386AC72a55510e33CF9CF7533e75916eE", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x5D335Aa7d93102110879e3B54985c5F08146091E", "L1ERC721BridgeProxy": "0x5d6cE6917dBeeacF010c96BfFdaBE89e33a30309", @@ -238,15 +235,17 @@ "L2OutputOracleProxy": "0x75a6B961c8da942Ee03CA641B09C322549f6FA98", "OptimismMintableERC20FactoryProxy": "0x49Ff2C4be882298e8CA7DeCD195c207c42B45F66", "OptimismPortalProxy": "0x01D4dfC994878682811b2980653D03E589f093cB", + "Proposer": "0x2D70F9A866dE34C0f738F8cb2AF1361b5aF18CAa", "ProxyAdmin": "0xF7Bc4b3a78C7Dd8bE9B69B3128EEB0D6776Ce18A", "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "SystemConfigProxy": "0x5D63A8Dc2737cE771aa4a6510D063b6Ba2c4f6F2" + "SystemConfigProxy": "0x5D63A8Dc2737cE771aa4a6510D063b6Ba2c4f6F2", + "UnsafeBlockSigner": "0x3C1A357c4c77843d34750dBee68C589ACB4F5f9B" }, "1750": { "AddressManager": "0xd4b1EC0DEc3C7F12abD3ec27B7514880ae1C3a37", "BatchSubmitter": "0xC94C243f8fb37223F3EB2f7961F7072602A51B8B", - "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x0a47A44f1B2bb753474f8c830322554A96C9934D", "L1ERC721BridgeProxy": "0x50D700e97967F9115e3f999bDB263d69F6704680", @@ -257,6 +256,7 @@ "Proposer": "0xC8187d40AD440328104A52BBed2D8Efc5ab1F1F6", "ProxyAdmin": "0x37Ff0ae34dadA1A95A4251d10ef7Caa868c7AC99", "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", + "SuperchainConfig": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "SystemConfigProxy": "0x7BD909970B0EEdcF078De6Aeff23ce571663b8aA", "UnsafeBlockSigner": "0x4a65F5da5e80DEFfEA844eAa15CE130e80605dc5" @@ -264,43 +264,38 @@ "177": { "AddressManager": "0x679A65aD62972Ea3561F40A12e93CcA6f79F35E6", "AnchorStateRegistryProxy": "0x4deC2aA521108d78d983c0c12656c6CF8631F2ED", - "BatchSubmitter": "0x9391791f7CB74F8BFDA65edc0749efd964311b55", + "BatchSubmitter": "0xf09ebb62b5ba0cf402b77aBA61691cBCf005206f", "Challenger": "0xFCF35CeE40325db21c3dc5b45849251E78Be47eb", "DelayedWETHProxy": "0xBb70D595147A141e268532BFEF61A8c25054d26D", "DisputeGameFactoryProxy": "0x04Ec030f362CE5A0b5Fe2d4B4219f287C2EBDE50", + "FaultDisputeGame": "0xC3E7f3606aeAC543bD268a637c6847E92d69B8aA", "Guardian": "0xC7fCbE26c1Db751d63869F72F782a56710f6be5A", "L1CrossDomainMessengerProxy": "0x899F07862D3A03F70E07b7f01183934b485d2e97", "L1ERC721BridgeProxy": "0xd4C83D93c6fAE3E0804B785F9Cf465BE95449D04", "L1StandardBridgeProxy": "0x2171E6d3B7964fA9654Ce41dA8a8fFAff2Cc70be", - "L2OutputOracleProxy": "0x1c8D97E21f868f8b87fa9B16Fc77d46d7B0b48A2", "MIPS": "0x7447b25b91336127042CC6899B2C15668a1Ab8BA", "OptimismMintableERC20FactoryProxy": "0x0407af506d86bFA5e401099b2fC2355590638f19", "OptimismPortalProxy": "0xe7Aa79B59CAc06F9706D896a047fEb9d3BDA8bD3", + "PermissionedDisputeGame": "0x78075eA46A562c3201E61664645c0f0537a8DDd5", "PreimageOracle": "0x5B9bEf4d8C36FB013c70d0A6F455807c6BD5270b", - "Proposer": "0x66b8F8425ecB610239e79E3517feFddCf85Af41a", + "Proposer": "0xC55763132E9b76766D62e59728b3933F54C998C5", "ProxyAdmin": "0x7986eD289935A0F47FC434C00cDE309fE2c51f1C", "ProxyAdminOwner": "0x441F31C4cdf772558D4EA31f3114de59aE145E7c", "SuperchainConfig": "0xfd1255b6c09D939E7F3896A16C32CDBCD6F8B40A", "SystemConfigOwner": "0x29Fbda675Fa5a07B621C2C1a6E3F874C14F612F3", "SystemConfigProxy": "0x43F8DeFe3E9286D152E91BB16a248808E7247198", - "UnsafeBlockSigner": "0xBc80De532cf87543aaD3267Cc8A4cAA2813130E7" + "UnsafeBlockSigner": "0xCc467FdB41B5b5A4E23021CAd69ED27550a41694" }, "183": { "AddressManager": "0x464Ca56D40f94E8A50eFa7F5b90c59D956a0efC9", - "AnchorStateRegistryProxy": "0x31EE18F4dbCa6A9C8599508Ec70aB98cb1118e9e", "BatchSubmitter": "0x43Ca061Ea80FBB4A2b5515F4be4e953b191147aF", - "Challenger": "0xBeA2Bc852a160B8547273660E22F4F08C2fa9Bbb", - "DelayedWETHProxy": "0xde1999df1f225D638ad3ca2C9EB5b2E52730D950", - "DisputeGameFactoryProxy": "0xFcdb270B674911D321F1014c347EaBB1c55134FB", "Guardian": "0xBeA2Bc852a160B8547273660E22F4F08C2fa9Bbb", "L1CrossDomainMessengerProxy": "0x226A1e4A3D8e64A9De8423F9344348c179C72CB2", "L1ERC721BridgeProxy": "0x00050ae93fBFaf5823A4ae229E4651F7F7A02FfA", "L1StandardBridgeProxy": "0x908C324c35fF36F64236A7CDa4D50f3003E9C5C3", "L2OutputOracleProxy": "0x0eB331B615030819464225Ecd373e5FFBE502DC4", - "MIPS": "0x94cE3d0B2243250d3f33dF45FAaEac273CA945fE", "OptimismMintableERC20FactoryProxy": "0x45BEaf3Bd26b76796692b1Ef1E67469B84ADB914", "OptimismPortalProxy": "0xDA29f0B4da6c23f6c1aF273945c290C0268c4ea9", - "PreimageOracle": "0xA0455F010561671c640d80f51851D51318aC32aB", "Proposer": "0xF49212F977986347b73345D382a811e148751eED", "ProxyAdmin": "0x0bc380347A0B7aF5453492CAF20e1E38bc0Abc2f", "ProxyAdminOwner": "0xB68361AAac2Bc8a4b8BFe36B8C6d0B429b5930ea", @@ -312,13 +307,10 @@ "185": { "AddressManager": "0xEa4165C5CDCA155779803A113d8391b741bA5228", "BatchSubmitter": "0x68bdFecE01535090c8f3C27ec3b1AE97E83fA4aA", - "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "Guardian": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "L1CrossDomainMessengerProxy": "0xf80be9f7a74ab776b69d3F0dC5C08c39b3A0bA19", - "L1ERC721BridgeProxy": "0xC2C908F3226d9082130D8e48378CD2eFb08B521D", "L1StandardBridgeProxy": "0x2b3F201543adF73160bA42E1a5b7750024F30420", "L2OutputOracleProxy": "0xB751A613f2Db932c6cdeF5048E6D2af05F9B98ED", - "OptimismMintableERC20FactoryProxy": "0xF02012065Ef6121a2A59EA0C590f42803Cf101EA", "OptimismPortalProxy": "0x59625d1FE0Eeb8114a4d13c863978F39b3471781", "Proposer": "0x3d53Df1e69A32F98dFCcf23CCB689763E21A78bA", "ProxyAdmin": "0xc684075a7Cc997Aa2e72152c330BDAc73FeacbDF", @@ -329,20 +321,20 @@ }, "1868": { "AddressManager": "0xB24bFEeCE1B3b7A44559F4Cbc21BeD312b130b70", - "AnchorStateRegistryProxy": "0x61f89A381E0BE13BD8Ab356cf4B7301BC97d7522", + "AnchorStateRegistryProxy": "0x190B6ecEE5A2ddF39669288B9B8daEa4641ae8b1", "BatchSubmitter": "0x6776BE80dBAda6A02B5F2095cF13734ac303B8d1", "Challenger": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", - "DelayedWETHProxy": "0x9CF951E3F74B644e621b36Ca9cea147a78D4c39f", + "DelayedWETHProxy": "0x9AEA1FD851b63d57Ba4Fc556B0e0c170126C9EAf", "DisputeGameFactoryProxy": "0x512A3d2c7a43BD9261d2B8E8C9c70D4bd4D503C0", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x9CF951E3F74B644e621b36Ca9cea147a78D4c39f", "L1ERC721BridgeProxy": "0x5933e323bE8896DfaCd1cD671442F27dAA10a053", "L1StandardBridgeProxy": "0xeb9bf100225c214Efc3E7C651ebbaDcF85177607", - "MIPS": "0x16e83cE5Ce29BF90AD9Da06D2fE6a15d5f344ce4", + "MIPS": "0xaA59A0777648BC75cd10364083e878c1cCd6112a", "OptimismMintableERC20FactoryProxy": "0xc1047e30EFC9E172cFe7aa0219895B6a43fC415F", "OptimismPortalProxy": "0x88e529A6ccd302c948689Cd5156C83D4614FAE92", - "PermissionedDisputeGame": "0x42D15f045159Ce4adE9EDC7da5704eF36056c936", - "PreimageOracle": "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277", + "PermissionedDisputeGame": "0x1661af719956198628F7e67087F19f8A79524a1d", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0x400c164C4a8cA84385B70EEd6eB03ea847c8E1b8", "ProxyAdmin": "0x89889B569c3a505f3640ee1Bd0ac1D557f436D2a", "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", @@ -354,7 +346,7 @@ "1923": { "AddressManager": "0xa54a84f17c2180148c762D79bC57BdfF7FdAFC8A", "AnchorStateRegistryProxy": "0x14387438EE964e826A4EAeB95B2BCe7754174dD1", - "BatchSubmitter": "0xf854cd5B26bfd73d51236c0122798907Ed65B1f2", + "BatchSubmitter": "0xeb18EA5dEDeE42e7af378991DFEb719D21c17b4C", "Challenger": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", "DelayedWETHProxy": "0x89c98736A806176Fe85283c1cB727ffBdeaf37A9", "DisputeGameFactoryProxy": "0x87690676786cDc8cCA75A472e483AF7C8F2f0F57", @@ -373,24 +365,24 @@ "SuperchainConfig": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", "SystemConfigOwner": "0x06F7fB1C74147e34Fce04a6828c7BF809B038d0E", "SystemConfigProxy": "0xD3d4c6B703978a5d24FecF3a70a51127667Ff1A4", - "UnsafeBlockSigner": "0x6967D304E9b7E26b5eb3f5A1FD1239DaAD3215E6" + "UnsafeBlockSigner": "0xc28bAd2A2D3E915d132795D2963D0e0459664D68" }, "1946": { "AddressManager": "0x6e8A77673109783001150DFA770E6c662f473DA9", - "AnchorStateRegistryProxy": "0xa4AbebA1612Cf731843460791e1A925c84d0991C", + "AnchorStateRegistryProxy": "0x2f3432d169128c49881Cc190520bE6096a9A8D2c", "BatchSubmitter": "0xF0AB0441c8f4B89b561aE685B98c6aD5175e0CAB", "Challenger": "0xB278818732E5BEbb742dc4Aa0617ccd1Dec76b65", + "DelayedWETHProxy": "0xf6Db90462FEbEB7567fBD064d2ff14a8d0280f3E", "DisputeGameFactoryProxy": "0xB3Ad2c38E6e0640d7ce6aA952AB3A60E81bf7a01", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x0184245D202724dc28a2b688952Cb56C882c226F", "L1ERC721BridgeProxy": "0x2bfb22cd534a462028771a1cA9D6240166e450c4", "L1StandardBridgeProxy": "0x5f5a404A5edabcDD80DB05E8e54A78c9EBF000C2", - "L2OutputOracleProxy": "0x710e5286C746eC38beeB7538d0146f60D27be343", - "MIPS": "0x69470D6970Cd2A006b84B1d4d70179c892cFCE01", + "MIPS": "0xF027F4A985560fb13324e943edf55ad6F1d15Dc1", "OptimismMintableERC20FactoryProxy": "0x6069BC38c6185f2db0d161f08eC8d1657F6078Df", "OptimismPortalProxy": "0x65ea1489741A5D72fFdD8e6485B216bBdcC15Af3", - "PermissionedDisputeGame": "0x3D570de1039B337bE88934A778A8ff0E9FB274D2", - "PreimageOracle": "0x92240135b46fc1142dA181f550aE8f595B858854", + "PermissionedDisputeGame": "0x697a4684576d8a76d4B11E83E9B6F3b61Bf04755", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0xa759A2C80Ec4C6421829862da30dD34436114502", "ProxyAdmin": "0xff9d236641962Cebf9DBFb54E7b8e91F99f10Db0", "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", @@ -399,22 +391,34 @@ "SystemConfigProxy": "0x4Ca9608Fef202216bc21D543798ec854539bAAd3", "UnsafeBlockSigner": "0x55930859CD7003F32A2ba171297408476532E535" }, + "2192": { + "AddressManager": "0xd7BF8B8618c21F337d8eD30aC797Fa330eb94411", + "BatchSubmitter": "0x060b915cA4904b56adA63565626b9c97F6CaD212", + "Guardian": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", + "L1CrossDomainMessengerProxy": "0x2A4fC0E3B365052d71B9853Efd0123985559f62E", + "L1ERC721BridgeProxy": "0x45561F85e43Ac0d2258c0F0C16540ce128EA1634", + "L1StandardBridgeProxy": "0xA5fb68C24b02852e8B514E98A1014faf12547Fa5", + "L2OutputOracleProxy": "0xF8f3EbF2469C00A00EA9D1D04913B73896268B25", + "OptimismMintableERC20FactoryProxy": "0xeEC78bcEA0EfBbA6e1BE7aFc58C93b70f97d3A6A", + "OptimismPortalProxy": "0x936D881b4760D5e9b6D55b774f65c509236b4743", + "Proposer": "0x85C73d8F7a3C95667779E0d9b8104982A5C1d04e", + "ProxyAdmin": "0x672B75103c0CbFdCC4A40737a80724f87a8A25D7", + "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "SuperchainConfig": "0x7439cCf2f0c7569a9B69c86fcE0B58EC771cf1a6", + "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "SystemConfigProxy": "0x9c9B78f798F821C2f6398f603825fd175e2427f9", + "UnsafeBlockSigner": "0x22c48998635C2D7Ea8B82aB50761f2c1EEae5D21" + }, "233": { "AddressManager": "0x2d34a143D7BeAD8F75479C841e3AAbF6c4AFdeC8", - "AnchorStateRegistryProxy": "0xB065B32927C3114c0e0Df16d3887F4Fd12eF7117", "BatchSubmitter": "0x973A9E30D6D11355A459A69E7CbFBa61C7627736", - "Challenger": "0x097955A7aa7966d55D781688Aa1493493AB513Af", - "DelayedWETHProxy": "0x21676D682F11f3e46cCe1797B19205Dda78f0f6C", - "DisputeGameFactoryProxy": "0x64d0Bce6eD7c16CAC7817F3597758E31AFacD01B", "Guardian": "0x097955A7aa7966d55D781688Aa1493493AB513Af", "L1CrossDomainMessengerProxy": "0x1c8b6a6F3E3612c79E62460a6e44C24D1EfF2FDa", "L1ERC721BridgeProxy": "0xBf0D43e12eF74dC21917e1D6175702AD673e1283", "L1StandardBridgeProxy": "0xFd1a12b7a04B13c031d8b075BA5b9080a2CF246f", "L2OutputOracleProxy": "0x11118536F94Bc7C98bBaf9194bE13FC1987293cd", - "MIPS": "0xfed5EDD40bfbEFC99432BBb4F2cEcd450c4c8675", "OptimismMintableERC20FactoryProxy": "0x0D085b528E1F9F48018b46f9aC3696f16B7007F9", "OptimismPortalProxy": "0x1F24d471Ef7291c7F97DBD2f76299b30D3e3B6E3", - "PreimageOracle": "0x4abd4d6D11c5D7cE392b2b0544E37314710F53c2", "Proposer": "0xBf1374D8c2E98074368326786343f1aDE19d5ccD", "ProxyAdmin": "0x7eA23A9Df2E3E491757a9FF6c32083a44BE560e6", "ProxyAdminOwner": "0x5a19d3Afd327Bd01D390eb52c11C2A9a79BcFB32", @@ -426,8 +430,6 @@ "254": { "AddressManager": "0x55Aec4EE11dA7d655565cCc2EB3bF21a46C94e6f", "BatchSubmitter": "0xde794bEc196832474f2F218135bFd0f7cA7fb038", - "Challenger": "0x3FcB6E08A960EF52Ec3101A444f71A2Fd964b248", - "DisputeGameFactoryProxy": "0x2069FC7097b7784FCA21aa459e57E95C0046EeCD", "Guardian": "0x3FcB6E08A960EF52Ec3101A444f71A2Fd964b248", "L1CrossDomainMessengerProxy": "0x15567C4FfD9109795dFf1D9A5233D10aef0738D2", "L1ERC721BridgeProxy": "0x1Ccf7e62889E6A93413DEAFC4e390Bd4047bDC32", @@ -445,38 +447,97 @@ }, "2702128": { "AddressManager": "0xBdF852e2cc26Ea3C2dee7b493B1Fc12dA406175a", - "BatchSubmitter": "0x7d6251D49A102a330CfB46d132982781620700Cb", - "Challenger": "0xfA8d42bDE52C2B8B05fE5EeCbAdEa6CB698A0Bc5", - "DAChallengeAddress": "0x16193e14197c10109F3e81b938153A04A2a00190", - "DelayedWETHProxy": "0x0eCe16401A80551345bB672f177f51A8755FF775", - "DisputeGameFactoryProxy": "0x443164F044D8840479234e00E7aD5bb06b85fC78", + "BatchSubmitter": "0x39857a92E26648438d9c7dDDa1Ee3e481dea54B3", "Guardian": "0xdF3700a9Cf9c7506Ca3B41E6ba991476677A8787", "L1CrossDomainMessengerProxy": "0x702dF90E92A6841c9013faE6D724ddFA8F141d5C", "L1ERC721BridgeProxy": "0x28d56C3BBbe4807c19Cc81E6D5207Fb681C3726b", "L1StandardBridgeProxy": "0x2AD84AbD52050956AcC9c490D024b821A59e3FB6", "L2OutputOracleProxy": "0x5A0492D20D984eE904E46E6Ff24572bc755abb28", - "MIPS": "0x253DdBb3549e0CEFaaaA7f71BE502C5b94771dDc", "OptimismMintableERC20FactoryProxy": "0x515A0c8b1d9574C65EA1924eCd767B1d9b6AC32f", "OptimismPortalProxy": "0xBC2bEDA4ce7A1f40aa458322A33B44081b2F545A", - "PreimageOracle": "0x089A4754538B74Ff63Bc6AbeaD7A95973aB03572", - "Proposer": "0x7d2f9b38866141Bf090DD670A826F27eA2408Ad4", + "Proposer": "0xE4Cb2fd9E409ABE977EC946D54b59034C39AB07D", "ProxyAdmin": "0x9e48d6bBca781c23392Ec459BfB3657C40a794A8", "ProxyAdminOwner": "0xfF75Bd7672b79f2562fAf98D488bbb3Db1cD1574", "SuperchainConfig": "0xcbF423525a5471Fc5037a5397F99f6F09fe41379", "SystemConfigOwner": "0xCf06c459AE59d4f47469BcE535afC3485Ce89dBf", "SystemConfigProxy": "0x6E99cdE188DAAFeEcb6eD8AC28B98dE4c8eE5D6C", - "UnsafeBlockSigner": "0xcbdD38Ce74BA96F0ae3D2E608DA96Ec744c80A7E" + "UnsafeBlockSigner": "0x7a4e92aD7E40C8df264eD18010847e6C27AB3d82" + }, + "288": { + "AddressManager": "0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089", + "BatchSubmitter": "0xe1B64045351B0B6e9821F19b39f81bc4711D2230", + "Guardian": "0x56121a8612474C3eB65D69a3b871f284705b9bC4", + "L1CrossDomainMessengerProxy": "0x6D4528d192dB72E282265D6092F4B872f9Dff69e", + "L1ERC721BridgeProxy": "0xA6Ad22bb0E73DEF40a24E510cFbc93807d8bf87e", + "L1StandardBridgeProxy": "0xdc1664458d2f0B6090bEa60A8793A4E66c2F1c00", + "L2OutputOracleProxy": "0xbB7aD3f9CCbC94085b7F7B1D5258e59F5F068741", + "OptimismMintableERC20FactoryProxy": "0x4d898F66327Fa050131A17ed17a39EBeCC81f0c3", + "OptimismPortalProxy": "0x7B02D13904D8e6E0f0Efaf756aB14Cb0FF21eE7e", + "Proposer": "0xbfBAB4363034A930687B9320599a69DfBf1D21d0", + "ProxyAdmin": "0x6e598cec2701FfAA3c06175dc3Af0317a749a0Dc", + "ProxyAdminOwner": "0x56121a8612474C3eB65D69a3b871f284705b9bC4", + "SuperchainConfig": "0x996ffD627901f10C80A7d4B72A12316D2e77c076", + "SystemConfigOwner": "0x56121a8612474C3eB65D69a3b871f284705b9bC4", + "SystemConfigProxy": "0x158Fd5715F16Ac1F2Dc959A299B383aAaf9B59EB", + "UnsafeBlockSigner": "0x4Ac69842680847e1135f514eE3d75172B685ECBf" + }, + "28882": { + "AddressManager": "0xC62C429390B7bCE9960fa647d5556CA7238168AB", + "AnchorStateRegistryProxy": "0x0B13DAf233542e01cA7fb527D725578E4875F652", + "BatchSubmitter": "0xf598b6388eC06945021699F0bbb23dfCFc5edbE8", + "Challenger": "0x17070B4AF21625106E7971983Aa524f59EA40c57", + "DelayedWETHProxy": "0x386023521b8379CCbB6Edbc6C01A9EB32e693f62", + "DisputeGameFactoryProxy": "0x29Bd67B23cAC0E6bbDe1373E3859Dd25510f3331", + "FaultDisputeGame": "0x5D20776Fb8D91181873F210bFb89eAA694217c0b", + "Guardian": "0x66930dd34EA64bD4B9F32464e363511b49966C5D", + "L1CrossDomainMessengerProxy": "0x9253E76E2fA3f72aF18e08914b3528F725779495", + "L1ERC721BridgeProxy": "0x13B397A08322973B45e063F29746Fb278f189916", + "L1StandardBridgeProxy": "0x244d7b81EE3949788Da5F1178D911e83bA24E157", + "MIPS": "0xC331b49Ac58dcaD21063177C735FD5215309BAE1", + "OptimismMintableERC20FactoryProxy": "0xE6ebece6936528804BB4c43AdcA10c2623919852", + "OptimismPortalProxy": "0xB079E6FA9B3eb072fEbf7F746044834eab308dB6", + "PermissionedDisputeGame": "0x49A14B793Dd55099111E3Fe9c9DF34c927d2193D", + "PreimageOracle": "0xF68050E774c2C26C1f1587522e6Df1f684eb1A58", + "Proposer": "0xC5125722937c0Fea053c602261238bF9f3B2450F", + "ProxyAdmin": "0x66930dd34EA64bD4B9F32464e363511b49966C5D", + "ProxyAdminOwner": "0x17070B4AF21625106E7971983Aa524f59EA40c57", + "SuperchainConfig": "0x029A23c6E9D3026f984cd1Fd9C47906e4F5327F3", + "SystemConfigOwner": "0x17070B4AF21625106E7971983Aa524f59EA40c57", + "SystemConfigProxy": "0xfDC9bCE032cEF55a71b4fde9B9a2198ad1551965", + "UnsafeBlockSigner": "0x274a47436C7C896827633805d924d41BBa1D19e9" + }, + "288882": { + "AddressManager": "0x69fF4875F7F4d1018f33b2a133F001e334359b02", + "AnchorStateRegistryProxy": "0x4e47a89E4e6767602631E4d0aC9322A732ca44a1", + "BatchSubmitter": "0xe40d3fB61A6a9e16ffD17ae4Ed225dE00a4B16fd", + "Challenger": "0xe62B0E3a9F715493301eBdEC8310C899eae5b30c", + "DelayedWETHProxy": "0xFb121744B10EBBD8902dcb533D0dEaF6b7E7124a", + "DisputeGameFactoryProxy": "0x87716cf707a9E965a25B0C16079E4f1Bd43C3F21", + "FaultDisputeGame": "0xcf18a59e7e3F7A5DaeC98e3516D9e2F67Da684b4", + "Guardian": "0xe62B0E3a9F715493301eBdEC8310C899eae5b30c", + "L1CrossDomainMessengerProxy": "0xA599581c9bfeE362B3CebA58F7888e7748B54Bc7", + "L1ERC721BridgeProxy": "0x57B679c04EAe2A9cee67414511E4A9f5a9F674E3", + "L1StandardBridgeProxy": "0x9F10198e4c1e267757ca55ed29F028b8cD7Ee76D", + "MIPS": "0x1c6716fcd8a07d336D64F6a0ebc67c05aa80b00F", + "OptimismMintableERC20FactoryProxy": "0xd5C40568cB199cCc3bC6d4931742074225781686", + "OptimismPortalProxy": "0xD00d5Cc5620697a31014E5594AABba590793836D", + "PermissionedDisputeGame": "0xb10989572BA1DFD4798A0da8aBC7202b2F7FC505", + "PreimageOracle": "0xB247651eAF116dbbf30669f30Fae0BdB3F51Ef51", + "Proposer": "0x10AAf74A0735332b0fFB11935abA51F2A4170F91", + "ProxyAdmin": "0xd7D6C90d94156dBd1251a57c28c7336F8B464C66", + "ProxyAdminOwner": "0xe62B0E3a9F715493301eBdEC8310C899eae5b30c", + "SuperchainConfig": "0x59230BEeaF4225B1E2C4ED391592c8962bb97ba4", + "SystemConfigOwner": "0xe62B0E3a9F715493301eBdEC8310C899eae5b30c", + "SystemConfigProxy": "0xcc3c025036612B849340D6866eC0bd4d2d794a36", + "UnsafeBlockSigner": "0x9e43BFCbcb21fCcc1Dfb41a3DaB1ACfaE3C03834" }, "291": { "AddressManager": "0x87630a802a3789463eC4b00f89b27b1e9f6b92e9", "BatchSubmitter": "0xf8dB8Aba597fF36cCD16fECfbb1B816B3236E9b8", - "Challenger": "0xcE10372313Ca39Fbf75A09e7f4c0E57F070259f4", "Guardian": "0xcE10372313Ca39Fbf75A09e7f4c0E57F070259f4", "L1CrossDomainMessengerProxy": "0xc76543A64666d9a073FaEF4e75F651c88e7DBC08", - "L1ERC721BridgeProxy": "0x934Ab59Ef14b638653b1C0FEf7aB9a72186393DC", "L1StandardBridgeProxy": "0xe07eA0436100918F157DF35D01dCE5c11b16D1F1", "L2OutputOracleProxy": "0x5e76821C3c1AbB9fD6E310224804556C61D860e0", - "OptimismMintableERC20FactoryProxy": "0x7a69a90d8ea11E9618855da55D09E6F953730686", "OptimismPortalProxy": "0x91493a61ab83b62943E6dCAa5475Dd330704Cc84", "Proposer": "0x74BaD482a7f73C8286F50D8Aa03e53b7d24A5f3B", "ProxyAdmin": "0xb570F4aD27e7De879A2E4F2F3DE27dBaBc20E9B9", @@ -487,45 +548,32 @@ }, "33979": { "AddressManager": "0x5a4ebF927338EA6af377caEee99C85088908f57D", - "AnchorStateRegistryProxy": "0x48eB5A81CC3a8955d0DabD6eEd45ac09C7c1889f", - "BatchSubmitter": "0x73c98Cf34AF1f7D798e8e6f34b16037530Bffc41", - "Challenger": "0x9f8b2470ffECbca2FFda20B9e10f6a12F33BC2Ce", - "DAChallengeAddress": "0xF40b807c2407e1d7dabb85f3ceefd5EACc7bF3CD", - "DelayedWETHProxy": "0x7992352f723d1209CDd9B786dEF1fBd8DC6511DB", - "DisputeGameFactoryProxy": "0x2Dc9d2Cb1Ba0b8A46AE252ab4FBE1ad5C5c3B795", + "BatchSubmitter": "0x4712454AddDbAbACaAb84916546899CA9690A6fF", "Guardian": "0x052a8cd5967bc3Bdb5660c989a3A68bCA683A077", "L1CrossDomainMessengerProxy": "0x8F56a665c376A08b604DD32ee6E88667A6093172", "L1ERC721BridgeProxy": "0x94519dD4BA8ba20Aaad14f7C6cD00fa1bB0192E9", "L1StandardBridgeProxy": "0xA2C1C1A473250094a6244F2bcf6Cb51F670Ad3aC", "L2OutputOracleProxy": "0x1A9aE6486caEc0504657351ac473B3dF8A1367cb", - "MIPS": "0x29564D1B96A1308E6930F88665576763Ed4837E2", "OptimismMintableERC20FactoryProxy": "0x87e75DcC1BB4e5B42cB5c52eB5832d6eCC3bFeF4", "OptimismPortalProxy": "0x5C9C7f98eD153a2deAA981eB5C97B31744AccF22", - "PreimageOracle": "0xd8f66eFeC53CeA76C597827ba5Bf3F68D29f2fA8", - "Proposer": "0x7a7690bBAb496537Ac59B45B4c59d789233BcA16", + "Proposer": "0xA1ddae0829c3bD4096c34aEC58b2BC21e3a6d10E", "ProxyAdmin": "0xD069C4724f9bC15FA53b3b2516594512AEf8c957", "ProxyAdminOwner": "0x89CB6669f87c165E7128F4a57476EE4Daa7ffbCD", "SuperchainConfig": "0xD3B2Ee457Cf8F05f00c17BFe509b43BA04c9e5a2", - "SystemConfigOwner": "0xc0CE2761d5cC92d25dB6ccD95e4b9483eD22D11B", + "SystemConfigOwner": "0x3D389212A78FD7D4600C9483470e59630C293416", "SystemConfigProxy": "0xD39a6CcCFa23cb741bB530497e42EC337f1215a8", - "UnsafeBlockSigner": "0x843458b6De651E02dFD5bFFea0e9cfb3eca293EF" + "UnsafeBlockSigner": "0xa54e493641d097d164A6a2D8F9895303344d88A9" }, "3397901": { "AddressManager": "0x6ECc4a306cD20f8041d63B3Db8ecA46b713cDEcC", "BatchSubmitter": "0xDa19a4E4d1DbC69bACf13435f08F76cED9B3C245", - "Challenger": "0x542A7142093d536Bf277FA3B0410883ac4e121dc", - "DAChallengeAddress": "0x12C6A7dB25b20347CA6F5d47E56D5E8219871C6d", - "DelayedWETHProxy": "0x31D0D1D3Fc27B3f174E544364e7Bb836980162d1", - "DisputeGameFactoryProxy": "0xEc7C6E35f4e5361D279d5Fe7222F3F45A8A83352", "Guardian": "0xdf3d6FA42Fe4225E6A042C4eD191d7E5D8252E6f", "L1CrossDomainMessengerProxy": "0x6F82D895E223Dde65DA28a8bbD14f3eF79cBF3b8", "L1ERC721BridgeProxy": "0x598D245Ea85FBfBceCe6c62232bbCAB688D3F68b", "L1StandardBridgeProxy": "0x1ba82f688eF3C5B4363Ff667254ed4DC59E97477", "L2OutputOracleProxy": "0xB25812386D1Cb976b50de7387F5CBc10Fec3F27c", - "MIPS": "0x71483031c5D2927Ea83807d5C88bd8EccFaF292d", "OptimismMintableERC20FactoryProxy": "0x8eE8eB6B829C382cA395D35C40Dcd2ef8AE57c68", "OptimismPortalProxy": "0xCeE7ef4dDF482447FE14c605Ea94B37cBE87Ca9D", - "PreimageOracle": "0x2DE051316aaD761A3eBd6fF008D714805bD02c56", "Proposer": "0x0b8AA7c355917016496e999a80F1737ef9c0C962", "ProxyAdmin": "0xB3E1F3ab2A22049Cc155ebA7089Ea20A5EAB99ca", "ProxyAdminOwner": "0x814973b1ec9Eb9172996931dE7BF1380bd64a824", @@ -537,7 +585,6 @@ "34443": { "AddressManager": "0x50eF494573f28Cad6B64C31b7a00Cdaa48306e15", "BatchSubmitter": "0x99199a22125034c808ff20f377d91187E8050F2E", - "Challenger": "0x309Fe2536d01867018D120b40e4676723C53A14C", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x95bDCA6c8EdEB69C98Bd5bd17660BaCef1298A6f", "L1ERC721BridgeProxy": "0x2901dA832a4D0297FF0691100A8E496626cc626D", @@ -548,30 +595,31 @@ "Proposer": "0x674F64D64Ddc198db83cd9047dF54BF89cCD0ddB", "ProxyAdmin": "0x470d87b1dae09a454A43D1fD772A561a03276aB7", "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", + "SuperchainConfig": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "SystemConfigProxy": "0x5e6432F18Bc5d497B1Ab2288a025Fbf9D69E2221", "UnsafeBlockSigner": "0xa7fA9CA4ac88686A542C0f830d7378eAB4A0278F" }, "360": { "AddressManager": "0xcee78437aE9e15cee9c78E63757E0153c0FD7479", - "AnchorStateRegistryProxy": "0x02987E7294379B9DDa99d593b0C94c68266222D1", + "AnchorStateRegistryProxy": "0x6ace93AF6E8b36803577381be9f02A552e81C10D", "BatchSubmitter": "0xF7ca543d652E38692fD12f989eb55b5327eC9A20", - "Challenger": "0xee1Af3f99AF8C5b93512FbE2A3f0dD5568CE087f", - "DelayedWETHProxy": "0xfEc7865DAc5139886585F03146Ff61D9b31c2d57", - "DisputeGameFactoryProxy": "0x575Aecd84083f93877291901907698F7db0Bd8b0", - "Guardian": "0xee1Af3f99AF8C5b93512FbE2A3f0dD5568CE087f", + "Challenger": "0xA4fB12D15Eb85dc9284a7df0AdBC8B696EdbbF1d", + "DelayedWETHProxy": "0x846d9469BAaF481f8516f7c1d03990672B68CB09", + "DisputeGameFactoryProxy": "0x2c03e8BF8b16Af89079852BE87f0e9eC674a5952", + "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x2b18602877181C3cB72C687E2A771E123A3788E3", "L1ERC721BridgeProxy": "0xe9d3E49b0636016c5fE9eaA2347948D0bA9f15Af", "L1StandardBridgeProxy": "0x62Edd5f4930Ea92dCa3fB81689bDD9b9d076b57B", - "L2OutputOracleProxy": "0x6Ef8c69CfE4635d866e3E02732068022c06e724D", - "MIPS": "0xD30c2Cd3cd6112E61FDfb03e4b232564d7e5C91f", + "MIPS": "0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C", "OptimismMintableERC20FactoryProxy": "0x319322906beAdf69dF5d4607169c63D692B1aDC1", "OptimismPortalProxy": "0xEB06fFa16011B5628BaB98E29776361c83741dd3", - "PreimageOracle": "0xDF6a16a71d0BC7a1Bbe8FffB33700eC3d9448A5B", + "PermissionedDisputeGame": "0x8090Ac33F4C9A1A220492487390dbe0c3b56a37A", + "PreimageOracle": "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277", "Proposer": "0x0D8a607F3d2de86adD04Df00f06794cB339A40de", "ProxyAdmin": "0x11B190Ae661c6d6884dFEE48E215691E0DdB842e", - "ProxyAdminOwner": "0xacAF178b5048CB56712dc59E95fBA72F7990A005", - "SuperchainConfig": "0x125664BEf08177ca43f6f301E63118b1e4cCDe09", + "ProxyAdminOwner": "0xA4fB12D15Eb85dc9284a7df0AdBC8B696EdbbF1d", + "SuperchainConfig": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", "SystemConfigOwner": "0xee1Af3f99AF8C5b93512FbE2A3f0dD5568CE087f", "SystemConfigProxy": "0xfF11e41D5C4F522E423Ff6C064Ff8D55AF8f7355", "UnsafeBlockSigner": "0x9C66333c504F3A4f5593D0e9739434744cCC5B5d" @@ -579,8 +627,6 @@ "4202": { "AddressManager": "0x27Bb4A7cd8FB20cb816BF4Aac668BF841bb3D5d3", "BatchSubmitter": "0x246E119a5BcC2875161b23E4e602e25cEcE96E37", - "Challenger": "0x19De6D30Bf43654B7244B8adA135E1AA639bF091", - "DisputeGameFactoryProxy": "0x9AA3890a87E6BD2CB85Dad1A5D8B0A9D669e658a", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x857824E6234f7733ecA4e9A76804fd1afa1A3A2C", "L1ERC721BridgeProxy": "0xb4E988CF1aD8C361D56118437502A8f11C7FaA01", @@ -601,13 +647,12 @@ "AnchorStateRegistryProxy": "0xD4D7A57DCC563756DeD99e224E144A6Bf0327099", "BatchSubmitter": "0xdBBE3D8c2d2b22A2611c5A94A9a12C2fCD49Eb29", "Challenger": "0xA4fB12D15Eb85dc9284a7df0AdBC8B696EdbbF1d", - "DelayedWETHProxy": "0xF9adF7c9502C5C60352C20a4d22683422DbD061F", + "DelayedWETHProxy": "0x4E6dE8B4c2D5aD6c603648f78311a21558D37A53", "DisputeGameFactoryProxy": "0x069c4c579671f8c120b1327a73217D01Ea2EC5ea", - "Guardian": "0xB2aa0C2C4fD6BFCBF699d4c787CD6Cc0dC461a9d", + "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0xf931a81D18B1766d15695ffc7c1920a62b7e710a", "L1ERC721BridgeProxy": "0x1Df436AfDb2fBB40F1fE8bEd4Fc89A0D0990a8E9", "L1StandardBridgeProxy": "0x470458C91978D2d929704489Ad730DC3E3001113", - "L2OutputOracleProxy": "0x19A6d1E9034596196295CF148509796978343c5D", "MIPS": "0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C", "OptimismMintableERC20FactoryProxy": "0x82Cb528466cF22412d89bdBE9bCF04856790dD0e", "OptimismPortalProxy": "0xd5ec14a83B7d95BE1E2Ac12523e2dEE12Cbeea6C", @@ -626,13 +671,12 @@ "AnchorStateRegistryProxy": "0x1333d5E5201D760444A399E77b3D337eBDB0DD07", "BatchSubmitter": "0x0f3ff4731D7a10B89ED79AD1Fd97844d7F66B96d", "Challenger": "0x945185C01fb641bA3E63a9bdF66575e35a407837", - "DelayedWETHProxy": "0x4F4B8Adf1af4b61bb62F68b7aF1c37f8A6311663", + "DelayedWETHProxy": "0xAEB3CfD5aAba01cfd12E6017a9a307a218cdD7E2", "DisputeGameFactoryProxy": "0x8Ec1111f67Dad6b6A93B3F42DfBC92D81c98449A", - "Guardian": "0xe78a0A96C5D6aE6C606418ED4A9Ced378cb030A0", + "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x7768c821200554d8F359A8902905Ba9eDe5659a9", "L1ERC721BridgeProxy": "0x3580505c56f8560E3777E92Fb27f70fD20c5B493", "L1StandardBridgeProxy": "0xd7DF54b3989855eb66497301a4aAEc33Dbb3F8DE", - "L2OutputOracleProxy": "0xc8886f8BAb6Eaeb215aDB5f1c686BF699248300e", "MIPS": "0x69470D6970Cd2A006b84B1d4d70179c892cFCE01", "OptimismMintableERC20FactoryProxy": "0x2D272eF54Ee8EF5c2Ff3523559186580b158cd57", "OptimismPortalProxy": "0xFf6EBa109271fe6d4237EeeD4bAb1dD9A77dD1A4", @@ -648,20 +692,14 @@ }, "5330": { "AddressManager": "0x0a1B34aA2047AD1AbEF8aC085b1a7802Ed9dbCF0", - "AnchorStateRegistryProxy": "0xaC1e4B08300C6c4705918089ee10b286b3ec24df", "BatchSubmitter": "0xa9B074B27DE97f492F8F07fD7C213400E4ca5391", - "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "DelayedWETHProxy": "0xEc4DC88475A2887e73b2073b60425575FD693c0a", - "DisputeGameFactoryProxy": "0x8b097CF1f9BbD9cbFD0DD561858a1FCbC8857Be0", "Guardian": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", "L1CrossDomainMessengerProxy": "0x3a30AEd8fa7717aC2D8454D82c125cF6B875061a", "L1ERC721BridgeProxy": "0xA99f82730e68968a78AA21522FC7eb90DB76D8Cb", "L1StandardBridgeProxy": "0x8b0576E39F1233679109F9b40cFcC2a7E0901Ede", "L2OutputOracleProxy": "0x693A0F8854F458D282DE3C5b69E8eE5EEE8aA949", - "MIPS": "0x7F4F96cD3719F2829117c8C5E810e01dBD6846Ba", "OptimismMintableERC20FactoryProxy": "0x484529223d68a0Cf85902Bf5E781394f0D0f837C", "OptimismPortalProxy": "0x2c2150aa5c75A24fB93d4fD2F2a895D618054f07", - "PreimageOracle": "0xB18202e3E4dbF7AbCEa623A38526AAD5A64DcD59", "Proposer": "0xB2354BDF5925d03cA06B03a7bD7386Bd685cE814", "ProxyAdmin": "0xF3b7697c9C0CbdE923f34991F2D19cC1c66612bD", "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", @@ -670,23 +708,71 @@ "SystemConfigProxy": "0x525a2744134805516a45B8abb6Aa0aA1dA3809F6", "UnsafeBlockSigner": "0x92Dc533201e8634f0337D66a11820a8C4E902474" }, + "5371": { + "AddressManager": "0xC24C700BC65a3b15De13e489e155c81F621B1856", + "AnchorStateRegistryProxy": "0xb5150595F1E2240b76F414dc96509f5125ba5DD0", + "BatchSubmitter": "0xD0b4c3aC8A50B6F1B3949ADaf55Cc9805620EB57", + "Challenger": "0xA4fB12D15Eb85dc9284a7df0AdBC8B696EdbbF1d", + "DelayedWETHProxy": "0xC206D300b07cB905Cb1831d8a9172d4c66394638", + "DisputeGameFactoryProxy": "0xde9FDA9C499bA1C0168AC083acF5BEc5cC67fA76", + "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", + "L1CrossDomainMessengerProxy": "0x9BdA922e6f1bD53c24F9bCFb88B9638199A82CEb", + "L1ERC721BridgeProxy": "0xCcfa1f8A93640488E3E1AE90A0edAf44680E9f82", + "L1StandardBridgeProxy": "0xFD4918e51d1e5aa2195C42654CF769b152C9d9C0", + "MIPS": "0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C", + "OptimismMintableERC20FactoryProxy": "0x44e9388e88Bb8edE446d62590d8A4C6d34813e98", + "OptimismPortalProxy": "0xFc1D560eB01443e31B0EB56620703E80e42A7E4e", + "PermissionedDisputeGame": "0xf9534EBc84082dF9d35Fb1Ed8786bF8cE8a90294", + "PreimageOracle": "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277", + "Proposer": "0x1bC6Df949b8eDC8EE61adB99d578A7a6E6Ff7310", + "ProxyAdmin": "0xd35FeF329Bb6569baa373BDa702F3dfF59D57321", + "ProxyAdminOwner": "0xA4fB12D15Eb85dc9284a7df0AdBC8B696EdbbF1d", + "SuperchainConfig": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", + "SystemConfigOwner": "0x57669299e2a7D5BE46Ba817d8039C1350af830e8", + "SystemConfigProxy": "0x15C1dAED5443A77b4DcF6FE35cAFcCEBb0c6da0E", + "UnsafeBlockSigner": "0xE7c264af5bdF997A78105A6e0FF32C126Eda66D9" + }, + "5373": { + "AddressManager": "0xed768f41dBe97D81D77316818c2802d322cE21Db", + "AnchorStateRegistryProxy": "0xC31B23208e7F7f8c8bC2Ce6816cbB6867C026b1f", + "BatchSubmitter": "0x26A1bABee918f55bfdDB002066C63678147B03A2", + "Challenger": "0xAC165b92E4f98D0Dfd9fB7d2aB474feE56B98A0d", + "DelayedWETHProxy": "0xf3b850AAB81595ea88Db1599146Cc20158796233", + "DisputeGameFactoryProxy": "0x017D15a6854CCAaa89c63d1A9fea8da45Ced97Cf", + "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", + "L1CrossDomainMessengerProxy": "0xffAe0c2cf1547057CD0828e3B01aF11C266C1b3C", + "L1ERC721BridgeProxy": "0xbD07617F0Ce47DB1cd51Eb6b9b5E7b3c109410F2", + "L1StandardBridgeProxy": "0x1Fe9c3b11Ed334fC049aE9a92Ec290aA69C39267", + "MIPS": "0x69470D6970Cd2A006b84B1d4d70179c892cFCE01", + "OptimismMintableERC20FactoryProxy": "0x71c23513fA05827e168b5A4dCa1f1C81A9a5EEf4", + "OptimismPortalProxy": "0x55585368857DcC7E0F89475d28963977DB0b1Ee1", + "PermissionedDisputeGame": "0x331D3A78af58b618895e88a3027F761B45F2382d", + "PreimageOracle": "0x92240135b46fc1142dA181f550aE8f595B858854", + "Proposer": "0x3Fb1cAa16477704bD679C5a883D9DbB1924F4Ee0", + "ProxyAdmin": "0x4b339825002823Af8B6cA1Ecdf5F9D08cA1f584A", + "ProxyAdminOwner": "0x945185C01fb641bA3E63a9bdF66575e35a407837", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", + "SystemConfigOwner": "0xC5019AC7B57Ae7918BC3430a92D92bCcD3079aB6", + "SystemConfigProxy": "0x7f73514A7eC19f3F51E3c607D536560818dF4205", + "UnsafeBlockSigner": "0xb1fed649e18588D081C5Ea4aE14b61836dd0062a" + }, "57073": { "AddressManager": "0x9b7C9BbD6d540A8A4dEDd935819fC4408Ba71153", - "AnchorStateRegistryProxy": "0xde744491BcF6b2DD2F32146364Ea1487D75E2509", + "AnchorStateRegistryProxy": "0x2fc99fd16D8D3F6F66d164aA84E244c567E58A3d", "BatchSubmitter": "0x500d7Ea63CF2E501dadaA5feeC1FC19FE2Aa72Ac", "Challenger": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", - "DelayedWETHProxy": "0x3Beaca17eaE5643FB1479AA5f4B1fF75cc4b9B50", + "DelayedWETHProxy": "0xf6b1554F483C391414d3830927E3600c105AaE6E", "DisputeGameFactoryProxy": "0x10d7B35078d3baabB96Dd45a9143B94be65b12CD", - "FaultDisputeGame": "0x6A8eFcba5642EB15D743CBB29545BdC44D5Ad8cD", + "FaultDisputeGame": "0x69361c9134D620B704C2a72c58523a4373eCe86f", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x69d3Cf86B2Bf1a9e99875B7e2D9B6a84426c171f", "L1ERC721BridgeProxy": "0x661235a238B11191211fa95D4Dd9E423d521E0Be", "L1StandardBridgeProxy": "0x88FF1e5b602916615391F55854588EFcBB7663f0", - "MIPS": "0x16e83cE5Ce29BF90AD9Da06D2fE6a15d5f344ce4", + "MIPS": "0xaA59A0777648BC75cd10364083e878c1cCd6112a", "OptimismMintableERC20FactoryProxy": "0xA8B389A82e088b164cD03230e900980CcED34d29", "OptimismPortalProxy": "0x5d66C1782664115999C47c9fA5cd031f495D3e4F", - "PermissionedDisputeGame": "0x0A780bE3eB21117b1bBCD74cf5D7624A3a482963", - "PreimageOracle": "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277", + "PermissionedDisputeGame": "0x4699D20479dfD20e15CaB4FCB6F2a7CC6fE35443", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0x65436ddCbc026F34118954F229f7F132b696b3B4", "ProxyAdmin": "0xd56045E68956FCe2576E680c95a4750cf8241f79", "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", @@ -698,13 +784,10 @@ "60808": { "AddressManager": "0xF2dc77c697e892542cC53336178a78Bb313DFDC7", "BatchSubmitter": "0x08F9F14fF43E112B18c96f0986F28Cb1878f1D11", - "Challenger": "0xC91482A96e9c2A104d9298D1980eCCf8C4dc764E", "Guardian": "0xC91482A96e9c2A104d9298D1980eCCf8C4dc764E", "L1CrossDomainMessengerProxy": "0xE3d981643b806FB8030CDB677D6E60892E547EdA", - "L1ERC721BridgeProxy": "0x5fF93263D5181b2A826f8c51d54BC0da2d20D50a", "L1StandardBridgeProxy": "0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7", "L2OutputOracleProxy": "0xdDa53E23f8a32640b04D7256e651C1db98dB11C1", - "OptimismMintableERC20FactoryProxy": "0x5557408ab14013ce9Dbb300dE0D87D386BB09cb6", "OptimismPortalProxy": "0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E", "Proposer": "0x7cB1022D30b9860C36b243E7B181A1d46f618C69", "ProxyAdmin": "0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0", @@ -715,44 +798,32 @@ }, "624": { "AddressManager": "0x8173904703995c6BbA59a42B8bBf8405F978758a", - "AnchorStateRegistryProxy": "0x275Abd1eB1FBaAB40Dcef5f3A588e2dF65801edc", - "BatchSubmitter": "0x7f9D9c1BCE1062E1077845eA39a0303429600a06", - "Challenger": "0x79DdF0745D14783cDC2a05624c585Ddce07F4A02", - "DelayedWETHProxy": "0x161914F701d090824c1A8a0f4e5666938f12848d", - "DisputeGameFactoryProxy": "0x0D7e0590c58e4aC9B14B3eD6163CF55223931699", + "BatchSubmitter": "0x68d5BBf3a01ECbB47CE38Cf64a7d6C0eA618040f", "Guardian": "0x87aab081Ac9F8ce80fb048f23280DF019036BA1d", "L1CrossDomainMessengerProxy": "0x807d21e416434ae92c8E5bcA4d506781aFbBa380", "L1ERC721BridgeProxy": "0x1b396e4dC6ECB0be33CF01C5a34E1a3a7D03c378", "L1StandardBridgeProxy": "0xD1B30378CBF968E5525e8835219A5726A1e71D10", "L2OutputOracleProxy": "0x012f4baa6e0F5Ac4dFDF47BDdd9CF68a2B17821e", - "MIPS": "0x4e66D89DDF5A9d86836ABb1d05Ff8fDb5aD32c9A", "OptimismMintableERC20FactoryProxy": "0xa641e14B685b5E652865e14A4fBc07e51371D124", "OptimismPortalProxy": "0x5ff88fcF8e9947f45F4cAf8FFd5231B5DdF05e0A", - "PreimageOracle": "0xB9fF3A5835144b0d2F4267A21e0c74458907c870", - "Proposer": "0x2b6cD940ABE0CAF2fd89155b99522548c00EBaB1", + "Proposer": "0xe615dC682b340e00c2d80472a281CbD5A2b68ae7", "ProxyAdmin": "0x38593Cce8FaB9887Ef9760f5F6aB3d6C595143cF", "ProxyAdminOwner": "0x48EC051349dDc7E8baBafCBfe27696ECF2A8a8B3", "SuperchainConfig": "0x34bb53D7C525114A27F0FE2aF91bdDAd186abb12", - "SystemConfigOwner": "0x25A6E7c6f3d0fE89A656Fcf065614B74E55099fF", + "SystemConfigOwner": "0x666372fEfB85dA96a1a56667638321605afe95bC", "SystemConfigProxy": "0x7aC7e5989EaC278B7BbfeF560871a2026baD472c", - "UnsafeBlockSigner": "0xDbad225D1C0DaBc27f6a9d250dBb136413C0DFb4" + "UnsafeBlockSigner": "0x666bfb2Bac23cf5fE3308301A3c5130f92D96B07" }, "625": { "AddressManager": "0xd1d82d6FC94962fe25912C181375352D4A10c6f0", - "AnchorStateRegistryProxy": "0xb86eC23019C6c3f2FbC38502D26b7009d2A300Be", "BatchSubmitter": "0x9CF89F8cB7cC94C579426f967d9517cd2e9adf29", - "Challenger": "0xD7E60cd8fBeA5142a207042c477e1359Df5FA688", - "DelayedWETHProxy": "0x017e8A21e37AE4bFC482170656B1eBF8390BF880", - "DisputeGameFactoryProxy": "0x096b38bDC80B5BF5B5Fb4e1A75Ae38BDa520474A", "Guardian": "0xD7E60cd8fBeA5142a207042c477e1359Df5FA688", "L1CrossDomainMessengerProxy": "0x33Dc556A5df0B8998dC2640c78E531Ae1dB7925d", "L1ERC721BridgeProxy": "0x7c95EebEA6f68875b4093D9c2211Fd26067a808F", "L1StandardBridgeProxy": "0x3B78C3B41b3e3fC6bdf0bD3060C9E2471401C098", "L2OutputOracleProxy": "0xF3699f96cBdD3868B64352669805D96d1Fb6431d", - "MIPS": "0xb51FFE0a519291Cbc0080A4F497A2bb4ac0A1C04", "OptimismMintableERC20FactoryProxy": "0xD47e937d602FFba8597b4F042c7A49E1149392fC", "OptimismPortalProxy": "0xFBEd910ca54F013bfeA67Bd4DC836263bdd0b46C", - "PreimageOracle": "0x029E58272e3B5f7B69AA4455473FcC8C8B8DEAC3", "Proposer": "0x6087Ec0371C2950d018ec97D8A1573d412DFbDBE", "ProxyAdmin": "0xF42CfF60b92a151911D99F3Ed36ba1266511fd43", "ProxyAdminOwner": "0x5A11a7a6ca68819C601A4136BFbDFBa26D5f043e", @@ -763,45 +834,32 @@ }, "65536": { "AddressManager": "0xF1C911e0c1E6dd08c8a7C80c9890e2037e0504c6", - "AnchorStateRegistryProxy": "0x4dAA22Ec75406E8ea2c70610115850912A770A3a", - "BatchSubmitter": "0x5BEF09f138921eF7985d83AAB97da1dB6E4dd190", - "Challenger": "0x34Faa77b4D1686E399c96deF0de31D30572eaa9F", - "DAChallengeAddress": "0x08c5DCDD5e46d31CC1591ee15b084663507597f3", - "DelayedWETHProxy": "0xd015f61F3CB26560507D758a726c77d18Bf849bB", - "DisputeGameFactoryProxy": "0xB52337F38747D6931f2976eEa24A3f3F6B7CDEA2", + "BatchSubmitter": "0x12a593227Efb69EA634e2169E2c0A8246BB0B1B3", "Guardian": "0xa5822fb7E3Fb516E518e2629E6786e93858e41F4", "L1CrossDomainMessengerProxy": "0x825C858149F1E775a0f4Aeb172037B970bE7B736", "L1ERC721BridgeProxy": "0x00bd00c5C7F60e222D9CB8040270Ba929241A280", "L1StandardBridgeProxy": "0xE639919b92AB6DD238aEACc6F2A8d6e355D17bd5", "L2OutputOracleProxy": "0xdbf381984c4515Fe3285D3C55fDfb3054C52c261", - "MIPS": "0x2B0293A059a2715935fA9459C9F3a4dcE2BC6331", "OptimismMintableERC20FactoryProxy": "0xa74b7baF04867E62B7824268e96144E503A23666", "OptimismPortalProxy": "0xD52ba64CBE1e3B44167f810622fBef36bE24d95c", - "PreimageOracle": "0x4a7bd533Be022E7a2911c3C61e7E11e7a32Ee77d", - "Proposer": "0x8c6F6580C846634C5DA08c40AE308DE23006a679", + "Proposer": "0x5B08eCA5C0cc5Ea1EBF03881c30EbF800f76F5a6", "ProxyAdmin": "0x7617f4a55d62b9EE49578D9C90593e58E607415F", "ProxyAdminOwner": "0x03eC1C43434E2f910A2fb984906cd2470fdb39c8", "SuperchainConfig": "0xDf87154Ed6cF332931b70014bA3d9dF423074FfF", - "SystemConfigOwner": "0x49eC5Bd8C9cC35Ce26b87E534d2E36980621dDD2", + "SystemConfigOwner": "0x5E2FC552288857cfE709C398Ecac448314dE1320", "SystemConfigProxy": "0x72934D7AEDC1A2d889ca89Aaf064CD9455E64d00", - "UnsafeBlockSigner": "0xA940a669DAe672111FD02Df597Cf7De7Cf758fAD" + "UnsafeBlockSigner": "0x373771221e39e1Ca16e981179CEcF1bE38ac70d9" }, "66665": { "AddressManager": "0x35236AF82c775965183A7B9cf94fe8bF5665b072", - "AnchorStateRegistryProxy": "0x1C2b5dbDbA4da7cBe669E73B7f18041E16ECB993", "BatchSubmitter": "0xa488310ab2F8Aa3294903930023BCab5880cB1BA", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", - "DelayedWETHProxy": "0x77877C3A557457Edc27c5f650CE2f4521585a3EC", - "DisputeGameFactoryProxy": "0x5Eb3040aeebc69595B4Bdc4eCB97323330f14517", "Guardian": "0xA9FF930151130fd19DA1F03E5077AFB7C78F8503", "L1CrossDomainMessengerProxy": "0x19f3D95A281F9Cf6aA2c6e8b7cA7c6Be83e41F3A", "L1ERC721BridgeProxy": "0xe82526042dae3F8800f87232b5146ED4012eE426", "L1StandardBridgeProxy": "0x78558fd5C8DC65D10753f004Bfc4cFA8E199C668", "L2OutputOracleProxy": "0x54E9BE93b9a1aca9C0293dB7710D9D18273aFE1D", - "MIPS": "0x09Fee86Ee30D0cF86A8E48089F958c1C04fA5700", "OptimismMintableERC20FactoryProxy": "0xd33347F9C147304c27B9502F1ad93B556bD9df12", "OptimismPortalProxy": "0x1Cb215554f36f518791B2e7359a73c96bFcadf69", - "PreimageOracle": "0x7328668bbe05eB322B208410652cD41A6bd07A83", "Proposer": "0x4C67831dba16b1e60CF8f626424082A62F1A2FE5", "ProxyAdmin": "0xB235B455eDD534bcAC6028F38029Cc128b144582", "ProxyAdminOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", @@ -813,7 +871,6 @@ "6805": { "AddressManager": "0x3d2BdE87466Cae97011702D2C305fd40EEBbbF0a", "BatchSubmitter": "0x8CDa8351236199AF7532baD53D683Ddd9B275d89", - "Challenger": "0x2E7B9465B25C081c07274A31DbD05C6146f67961", "Guardian": "0x2E7B9465B25C081c07274A31DbD05C6146f67961", "L1CrossDomainMessengerProxy": "0xf54B2BAEF894cfF5511A5722Acaac0409F2F2d89", "L1ERC721BridgeProxy": "0x0f33D824d74180598311b3025095727BeA61f219", @@ -831,40 +888,39 @@ }, "6806": { "AddressManager": "0x1B573Db1000eA419B6dE8eB482C6d394179Bd1A3", + "AnchorStateRegistryProxy": "0x7220581f363f28dA8C75c863942c54867C7C3A19", "BatchSubmitter": "0x584D61A30C7Ef1E8D547eE02099dADC487f49889", - "Challenger": "0xE6869aF6c871614df04902870Bb13d4505E1586c", - "Guardian": "0xE6869aF6c871614df04902870Bb13d4505E1586c", + "Challenger": "0x777bf55BA06395C8b2c05DD43D0A40001d1B9982", + "DelayedWETHProxy": "0x43e5d5B0c9d12E50ea23990E490F07E18A6333EB", + "DisputeGameFactoryProxy": "0xbDC16b0E8C18C5E13Ed02221Aa85598AF486A88f", + "FaultDisputeGame": "0x9bA6DBf003DeA8b69F4C205f7EA0224B3Daa74De", + "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0xdaeab17598938A4f27E50AC771249Ad7df12Ea7D", "L1ERC721BridgeProxy": "0xBafb1a6e54e7750aF29489D65888d1c96Dfd66Df", "L1StandardBridgeProxy": "0x289179e9d43A35D47239456251F9c2fdbf9fbeA2", - "L2OutputOracleProxy": "0xccac2B8FFc4f778242105F3a9E6B3Ae3F827fC6a", + "MIPS": "0x69470D6970Cd2A006b84B1d4d70179c892cFCE01", "OptimismMintableERC20FactoryProxy": "0xbd023e7F08AE0274dCEd397D4B6630D697aC738A", "OptimismPortalProxy": "0xF2891fc6819CDd6BD9221874619BB03A6277d72A", + "PermissionedDisputeGame": "0x2C53c9e748DBE5d9daccA2994c1c1637AAad8523", + "PreimageOracle": "0x92240135b46fc1142dA181f550aE8f595B858854", "Proposer": "0x5a145E3F466FD6cC095214C700359df7894BaD21", "ProxyAdmin": "0x4a0E8415e3eB85E7393445FD8E588283b62216C8", "ProxyAdminOwner": "0xAc78E9B3Aa9373AE4bE2Ba5Bc9F716d7A746A65E", - "SuperchainConfig": "0x1696a64C7F170E46D32088E8eC29193300C35817", - "SystemConfigOwner": "0xE6869aF6c871614df04902870Bb13d4505E1586c", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", + "SystemConfigOwner": "0x84db348d3DD6519444556a116225f4dAa5aDB6B4", "SystemConfigProxy": "0x07e7A3F25aA73dA15bc19B71FEF8f5511342a409", "UnsafeBlockSigner": "0x89eA88ef4AC23f4C7Fdc611Fc9cD1c50DF702C2C" }, "690": { "AddressManager": "0xFe27f187A9E46104a932189dDF229871E06B22F8", - "AnchorStateRegistryProxy": "0xc51ac31BcEFB64D999AF10129Cb7693EeE7c1179", "BatchSubmitter": "0xA31cb9Bc414601171D4537580f98F66C03aECd43", - "Challenger": "0xb356B146F1629c49C44344464F69BCDAfb4bb664", - "DAChallengeAddress": "0x97A2dA87d3439b172e6DD027220e01c9Cb565B80", - "DelayedWETHProxy": "0xa130523fD22e2a9D78F8aB232b01ff552845B4A9", - "DisputeGameFactoryProxy": "0x8f68E849eaf8EB943536F9d1D49Ea9C9b5868b98", "Guardian": "0xb356B146F1629c49C44344464F69BCDAfb4bb664", "L1CrossDomainMessengerProxy": "0x592C1299e0F8331D81A28C0FC7352Da24eDB444a", "L1ERC721BridgeProxy": "0x4FFB98dBC3086bA85d5E626a6EbC3D0d08533fF4", "L1StandardBridgeProxy": "0xc473ca7E02af24c129c2eEf51F2aDf0411c1Df69", "L2OutputOracleProxy": "0xa426A052f657AEEefc298b3B5c35a470e4739d69", - "MIPS": "0x66D6be83984e3F026B4a9e2D8Fb082ecDBd43648", "OptimismMintableERC20FactoryProxy": "0x5f962474834Cf1981Df6232e4b6431d3d10cb71D", "OptimismPortalProxy": "0xC7bCb0e8839a28A1cFadd1CF716de9016CdA51ae", - "PreimageOracle": "0xE7d0fE72637B3C949cd81c63A4Ff1fb23feeF3b2", "Proposer": "0x4c465E58946145bb2BFC38833154f5A3B5728CF7", "ProxyAdmin": "0xCC53b447aFe07926423aB96D5496b1af30485ED2", "ProxyAdminOwner": "0x70FdbCb066eD3621647Ddf61A1f40aaC6058Bc89", @@ -875,42 +931,39 @@ }, "7560": { "AddressManager": "0x19b5804B88F10262A55ac731f28A3BbC4209853a", - "BatchSubmitter": "0xf0748C52EDC23135d9845CDFB91279Cf61ee14b4", - "Challenger": "0x87bD2cFf3b59d615b1Eac7A7f809B5e5f0Ee6752", - "DAChallengeAddress": "0x10E34EfE14E4D270C0f77Bf1aF01b6C832161B49", - "DelayedWETHProxy": "0x588dAd44201885ff23068f1142e303D52d103919", - "DisputeGameFactoryProxy": "0xbF4676f21a7889E0Fd61BcDc9b98E60b01C1B36F", + "BatchSubmitter": "0x6AdE72DA6C1d47c856f13CD01Aac22A90D722e01", "Guardian": "0x0C883f622b4ccbF1e8ce86217998f87e6d36BCE4", "L1CrossDomainMessengerProxy": "0x3c01ebF22e9c111528c1E027D68944eDaB08Dfc9", "L1ERC721BridgeProxy": "0x4F4B716627D2Ba0439327Ce8B563b4443aF47Dbd", "L1StandardBridgeProxy": "0x12a580c05466eefb2c467C6b115844cDaF55B255", "L2OutputOracleProxy": "0xa669A743b065828682eE16109273F5CFeF5e676d", - "MIPS": "0x0048defcA9F0Da952CFD1Ae9F8e962937d3E4143", "OptimismMintableERC20FactoryProxy": "0x51A00470Eb50D758EcFF3B96DB0bF4A8e86268F4", "OptimismPortalProxy": "0x1d59bc9fcE6B8E2B1bf86D4777289FFd83D24C99", - "PreimageOracle": "0x0747ef2570e3dbF65F0a12B371F19ca4a66a8DdE", - "Proposer": "0xF2987f0A626c8D29dFB2E0A21144ca3026d6F1E1", + "Proposer": "0x0DE6711cE623d03f0888310ca3A04a69DE0E12e1", "ProxyAdmin": "0x7E54107731EC43e78DA678DFa5fB6222Ad036e03", "ProxyAdminOwner": "0xc2259E7Fb719411f97aBdCdf449f6Ba3B9D75398", "SuperchainConfig": "0x1aeC4c3BE47C30d0BEfa7514Cf9D99EaC596959D", - "SystemConfigOwner": "0xc76C563185d01284AdbC9cF5bb909162dD2F15e7", + "SystemConfigOwner": "0x68ca4cDCb0F47457273B554E60ff8321D5C133E4", "SystemConfigProxy": "0x5D1F4bbaF6D484fA9D5D9705f92dE6063bff6055", - "UnsafeBlockSigner": "0xa7A4D6d5920b93D0FE590f9524Ef17f24EE1F5B8" + "UnsafeBlockSigner": "0x1F316F0F898AAb1919F9Fb9183F8D1900F721AdB" }, "763373": { "AddressManager": "0x3454F9df5E750F1383e58c1CB001401e7A4f3197", - "AnchorStateRegistryProxy": "0x89126a987717207d4E990ed2e8880fd170DceA1A", + "AnchorStateRegistryProxy": "0xDa9916204568e2A8d689f775747D9e7FE17F7560", "BatchSubmitter": "0x21e57C21530Bc33F12Ba96C9dDC135488365002F", "Challenger": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", - "DelayedWETHProxy": "0x180AC451088B8f87006ab0CA98a01507e42AC456", + "DelayedWETHProxy": "0xc69C1ACcdAb9ae28780A238D987a1ACc8bd0FC56", "DisputeGameFactoryProxy": "0x860e626c700AF381133D9f4aF31412A2d1DB3D5d", + "FaultDisputeGame": "0xBd72dD2fB74a537B9B47B454614A15B066Cc464a", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x9fE1d3523F5342535E6E7770ED09ed85Dbc1Acc2", "L1ERC721BridgeProxy": "0xd1C901BBD7796546A7bA2492e0E199911fAE68c7", "L1StandardBridgeProxy": "0x33f60714BbD74d62b66D79213C348614DE51901C", + "MIPS": "0xF027F4A985560fb13324e943edf55ad6F1d15Dc1", "OptimismMintableERC20FactoryProxy": "0x686F782A749D1854f6Fa3F948450f4c65c6674f0", "OptimismPortalProxy": "0x5c1d29C6c9C8b0800692acC95D700bcb4966A1d7", - "PermissionedDisputeGame": "0xA8808360F7bc16Da81938e5C29400D18BeA651C4", + "PermissionedDisputeGame": "0x97766954BAF17e3a2BfA43728830f0Fa647F7546", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0xB15d792E30C5b7f67CBe5fe9Ba76685b537B4543", "ProxyAdmin": "0xd7dB319a49362b2328cf417a934300cCcB442C8d", "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", @@ -922,7 +975,6 @@ "7777777": { "AddressManager": "0xEF8115F2733fb2033a7c756402Fc1deaa56550Ef", "BatchSubmitter": "0x625726c858dBF78c0125436C943Bf4b4bE9d9033", - "Challenger": "0xcA4571b1ecBeC86Ea2E660d242c1c29FcB55Dc72", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0xdC40a14d9abd6F410226f1E6de71aE03441ca506", "L1ERC721BridgeProxy": "0x83A4521A3573Ca87f3a971B169C5A0E1d34481c3", @@ -933,6 +985,7 @@ "Proposer": "0x48247032092e7b0ecf5dEF611ad89eaf3fC888Dd", "ProxyAdmin": "0xD4ef175B9e72cAEe9f1fe7660a6Ec19009903b49", "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", + "SuperchainConfig": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", "SystemConfigOwner": "0xC72aE5c7cc9a332699305E29F68Be66c73b60542", "SystemConfigProxy": "0xA3cAB0126d5F504B071b81a3e8A2BBBF17930d86", "UnsafeBlockSigner": "0x3Dc8Dfd0709C835cAd15a6A27e089FF4cF4C9228" @@ -964,13 +1017,10 @@ "8008": { "AddressManager": "0x287bBa8116F2fc5a642bfD6027EBf5AD6522655C", "BatchSubmitter": "0x67a44CE38627F46F20b1293960559eD85Dd194F1", - "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "Guardian": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "L1CrossDomainMessengerProxy": "0x36725a5e0040deB7C697d46C0e24390702b202e0", - "L1ERC721BridgeProxy": "0xD5890BBAFaFdce942597757385E55174569e8d1A", "L1StandardBridgeProxy": "0x3Be64BF2b9C2dE637067C7AAb6baE5EDf9fEBA55", "L2OutputOracleProxy": "0xe512D477Cc89196AF2cE837f6AB8EA30e199f757", - "OptimismMintableERC20FactoryProxy": "0x994233366C8E11da5c525AB903c04e7AFB2915bD", "OptimismPortalProxy": "0x034cbb620d1e0e4C2E29845229bEAc57083b04eC", "Proposer": "0x5DA28F0186051a9F7b9eE2553FFdc165EB0A6714", "ProxyAdmin": "0x3c68b1d45f4faa4F028c3DC8910fA3247c7f0a1f", @@ -981,49 +1031,50 @@ }, "8453": { "AddressManager": "0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2", - "AnchorStateRegistryProxy": "0xdB9091e48B1C42992A1213e6916184f9eBDbfEDf", + "AnchorStateRegistryProxy": "0x496286e5eE7758de84Dd17e6d2d97afC2ACE4cc7", "BatchSubmitter": "0x5050F69a9786F081509234F1a7F4684b5E5b76C9", - "Challenger": "0x6F8C5bA3F59ea3E76300E3BEcDC231D656017824", + "Challenger": "0x8Ca1E12404d16373Aef756179B185F27b2994F3a", "DelayedWETHProxy": "0xa2f2aC6F5aF72e494A227d79Db20473Cf7A1FFE8", "DisputeGameFactoryProxy": "0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e", - "FaultDisputeGame": "0xCd3c0194db74C23807D4B90A5181e1B28cF7007C", + "FaultDisputeGame": "0x13FbBDefa7D9B147A1777a8A5B0f30379E007ac3", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x866E82a600A1414e583f7F13623F1aC5d58b0Afa", "L1ERC721BridgeProxy": "0x608d94945A64503E642E6370Ec598e519a2C1E53", "L1StandardBridgeProxy": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", - "L2OutputOracleProxy": "0x56315b90c40730925ec5485cf004d835058518A0", - "MIPS": "0x16e83cE5Ce29BF90AD9Da06D2fE6a15d5f344ce4", + "MIPS": "0xaA59A0777648BC75cd10364083e878c1cCd6112a", "OptimismMintableERC20FactoryProxy": "0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84", "OptimismPortalProxy": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", - "PermissionedDisputeGame": "0x19009dEBF8954B610f207D5925EEDe827805986e", - "PreimageOracle": "0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277", + "PermissionedDisputeGame": "0x8BD2e80e6D1cf1e5C5f0c69972fE2f02B9C046Aa", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0x642229f238fb9dE03374Be34B0eD8D9De80752c5", "ProxyAdmin": "0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E", "ProxyAdminOwner": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", + "SuperchainConfig": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", "SystemConfigOwner": "0x14536667Cd30e52C0b458BaACcB9faDA7046E056", "SystemConfigProxy": "0x73a79Fab69143498Ed3712e519A88a918e1f4072", "UnsafeBlockSigner": "0xAf6E19BE0F9cE7f8afd49a1824851023A8249e8a" }, "84532": { "AddressManager": "0x709c2B8ef4A9feFc629A8a2C1AF424Dc5BD6ad1B", - "AnchorStateRegistryProxy": "0x4C8BA32A5DAC2A720bb35CeDB51D6B067D104205", + "AnchorStateRegistryProxy": "0x0729957c92A1F50590A84cb2D65D761093f3f8eB", "BatchSubmitter": "0xfc56E7272EEBBBA5bC6c544e159483C4a38f8bA3", - "Challenger": "0xDa3037Ff70Ac92CD867c683BD807e5A484857405", - "DelayedWETHProxy": "0x7698b262B7a534912c8366dD8a531672deEC634e", + "Challenger": "0x8b8c52B04A38f10515C52670fcb23f3C4C44474F", + "DelayedWETHProxy": "0x489c2E5ebe0037bDb2DC039C5770757b8E54eA1F", "DisputeGameFactoryProxy": "0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1", - "FaultDisputeGame": "0x8A9bA50a785c3868bEf1FD4924b640A5e0ed54CF", + "FaultDisputeGame": "0x340c1364D299ED55B193d4eFcecBAD8c3Fb104c4", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0xC34855F4De64F1840e5686e64278da901e261f20", "L1ERC721BridgeProxy": "0x21eFD066e581FA55Ef105170Cc04d74386a09190", "L1StandardBridgeProxy": "0xfd0Bf71F60660E2f608ed56e1659C450eB113120", - "MIPS": "0xFF760A87E41144b336E29b6D4582427dEBdB6dee", + "MIPS": "0xF027F4A985560fb13324e943edf55ad6F1d15Dc1", "OptimismMintableERC20FactoryProxy": "0xb1efB9650aD6d0CC1ed3Ac4a0B7f1D5732696D37", "OptimismPortalProxy": "0x49f53e41452C74589E85cA1677426Ba426459e85", - "PermissionedDisputeGame": "0x593D20C4c69485B95D11507239BE2C725ea2A6fD", - "PreimageOracle": "0x627F825CBd48c4102d36f287be71f4234426b9e4", + "PermissionedDisputeGame": "0x6F67E57C143321e266bac32A0D9D22d88cE1b3e5", + "PreimageOracle": "0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3", "Proposer": "0x037637067c1DbE6d2430616d8f54Cb774Daa5999", "ProxyAdmin": "0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3", "ProxyAdminOwner": "0x0fe884546476dDd290eC46318785046ef68a0BA9", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", "SystemConfigOwner": "0x0fe884546476dDd290eC46318785046ef68a0BA9", "SystemConfigProxy": "0xf272670eb55e895584501d564AfEB048bEd26194", "UnsafeBlockSigner": "0xb830b99c95Ea32300039624Cb567d324D4b1D83C" @@ -1031,7 +1082,6 @@ "919": { "AddressManager": "0x83D45725d6562d8CD717673D6bb4c67C07dC1905", "BatchSubmitter": "0x4e6BD53883107B063c502dDd49F9600Dc51b3DDc", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0xc19a60d9E8C27B9A43527c3283B4dd8eDC8bE15C", "L1ERC721BridgeProxy": "0x015a8c2e0a5fEd579dbb05fd290e413Adc6FC24A", @@ -1042,6 +1092,7 @@ "Proposer": "0xe9e08A478e3a773c1B5D59014A0FDb901e6d1d69", "ProxyAdmin": "0xE7413127F29E050Df65ac3FC9335F85bB10091AE", "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", "SystemConfigProxy": "0x15cd4f6e0CE3B4832B33cB9c6f6Fe6fc246754c2", "UnsafeBlockSigner": "0x93A14E6894eEB4FF6a373E1Ad4f498c3a207afe4" @@ -1049,13 +1100,10 @@ "957": { "AddressManager": "0xC845F9C4004EB35a8bde8ad89C4760a9c0e65CAB", "BatchSubmitter": "0x14e4E97bDc195d399Ad8E7FC14451C279FE04c8e", - "Challenger": "0x91F4be0C264FAFA1fEd75c4440910Cba2cAd98e8", "Guardian": "0x91F4be0C264FAFA1fEd75c4440910Cba2cAd98e8", "L1CrossDomainMessengerProxy": "0x5456f02c08e9A018E42C39b351328E5AA864174A", - "L1ERC721BridgeProxy": "0x6CC3268794c5d3E3d9d52adEfC748B59d536cb22", "L1StandardBridgeProxy": "0x61E44dC0dae6888B5a301887732217d5725B0bFf", "L2OutputOracleProxy": "0x1145E7848c8B64c6cab86Fd6D378733385c5C3Ba", - "OptimismMintableERC20FactoryProxy": "0x08Dea366F26C25a08C8D1C3568ad07d1e587136d", "OptimismPortalProxy": "0x85eA9c11cf3D4786027F7FD08F4406b15777e5f8", "Proposer": "0x03e820562ffd2e0390787caD706EaF1FF98C2608", "ProxyAdmin": "0x35d5D43271548c984662d4879FBc8e041Bc1Ff93", @@ -1066,20 +1114,14 @@ }, "9897": { "AddressManager": "0x5b7996f61650a6f4920F2C8eF4BfaF4f64a07638", - "AnchorStateRegistryProxy": "0xBB5B16c3ffdB21F67b1d7b1158517ce62D95AA68", "BatchSubmitter": "0xaBecfbb176FA579ee7E1Ed1947E375B118433be0", - "Challenger": "0x776beE5229Eb00349D6Fc956EFAD7985ee36804d", - "DelayedWETHProxy": "0x8A91337Fd5113669CC368F2b9D5aed8f6c4458c9", - "DisputeGameFactoryProxy": "0xD9E9933Cc6EF672C93d2a42494b0D2BF14C05544", "Guardian": "0x776beE5229Eb00349D6Fc956EFAD7985ee36804d", "L1CrossDomainMessengerProxy": "0xCC226A3B7b5ec4D4d698418fC2C0492950136Ba7", "L1ERC721BridgeProxy": "0x11d7f6f2E59Fc12E61DbfafE7790e54CAb01b434", "L1StandardBridgeProxy": "0x76A4B2CC5d210729Fb3DE13CeE250663bdac73A6", "L2OutputOracleProxy": "0xf2574585eC7ba515Fd86402B84A60D5eFb51B0Ff", - "MIPS": "0x379094D2ED496ca4FfaF1B17Ad4BA3e152Fb8486", "OptimismMintableERC20FactoryProxy": "0x88404B147e158e65fe7C9E7A9f50DD278F5e5e6e", "OptimismPortalProxy": "0x2188047AD28B78D975cE319dfcDa5D06c2a6a68b", - "PreimageOracle": "0x0e4371a13E53563F7A635380CF2DB6eCD620F444", "Proposer": "0xBF80C17ee655837E25208436ed543217899B4bd8", "ProxyAdmin": "0x554D3431CF89e680610CFBFb9B558777e0a72F39", "ProxyAdminOwner": "0xb33c6A58C26666F04054E8b0D939e17D6eB1a155", @@ -1090,18 +1132,24 @@ }, "999999999": { "AddressManager": "0x27c9392144DFcB6dab113F737356C32435cD1D55", + "AnchorStateRegistryProxy": "0x50C0232e3d1F7B8a8e18f6Ab1abE04BB6c713c87", "BatchSubmitter": "0x3Cd868E221A3be64B161D596A7482257a99D857f", "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", + "DelayedWETHProxy": "0xa8fDce8F78AE428b7497eBda3684593A572EAfAe", + "DisputeGameFactoryProxy": "0xA983A71253Eb74e5E86A4E4eD9F37113FC25f2BF", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x1bDBC0ae22bEc0c2f08B4dd836944b3E28fe9b7A", "L1ERC721BridgeProxy": "0x16B0a4f451c4CB567703367e587E15Ac108e4311", "L1StandardBridgeProxy": "0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB", - "L2OutputOracleProxy": "0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9", + "MIPS": "0x69470D6970Cd2A006b84B1d4d70179c892cFCE01", "OptimismMintableERC20FactoryProxy": "0x5F3bdd57f01e88cE2F88f00685D30D6eb51A187c", "OptimismPortalProxy": "0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f", + "PermissionedDisputeGame": "0x4f500fE7c59aFb843fe47967EB6D0b8bE809F066", + "PreimageOracle": "0x92240135b46fc1142dA181f550aE8f595B858854", "Proposer": "0xe8326a5839175dE7f467e66D8bB443aa70DA1c3e", "ProxyAdmin": "0xE17071F4C216Eb189437fbDBCc16Bb79c4efD9c2", "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", + "SuperchainConfig": "0xC2Be75506d5724086DEB7245bd260Cc9753911Be", "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", "SystemConfigProxy": "0xB54c7BFC223058773CF9b739cC5bd4095184Fb08", "UnsafeBlockSigner": "0x3609513933100689bd1f84782529A99239842344" diff --git a/superchain/extra/addresses/mainnet/boba.json b/superchain/extra/addresses/mainnet/boba.json new file mode 100644 index 000000000..43b42b139 --- /dev/null +++ b/superchain/extra/addresses/mainnet/boba.json @@ -0,0 +1,11 @@ +{ + "AddressManager": "0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089", + "L1CrossDomainMessengerProxy": "0x6D4528d192dB72E282265D6092F4B872f9Dff69e", + "L1ERC721BridgeProxy": "0xA6Ad22bb0E73DEF40a24E510cFbc93807d8bf87e", + "L1StandardBridgeProxy": "0xdc1664458d2f0B6090bEa60A8793A4E66c2F1c00", + "L2OutputOracleProxy": "0xbB7aD3f9CCbC94085b7F7B1D5258e59F5F068741", + "OptimismMintableERC20FactoryProxy": "0x4d898F66327Fa050131A17ed17a39EBeCC81f0c3", + "OptimismPortalProxy": "0x7B02D13904D8e6E0f0Efaf756aB14Cb0FF21eE7e", + "SystemConfigProxy": "0x158Fd5715F16Ac1F2Dc959A299B383aAaf9B59EB", + "ProxyAdmin": "0x6e598cec2701FfAA3c06175dc3Af0317a749a0Dc" +} diff --git a/superchain/extra/addresses/sepolia/boba.json b/superchain/extra/addresses/sepolia/boba.json new file mode 100644 index 000000000..eaa42825b --- /dev/null +++ b/superchain/extra/addresses/sepolia/boba.json @@ -0,0 +1,11 @@ +{ + "AddressManager": "0xC62C429390B7bCE9960fa647d5556CA7238168AB", + "L1CrossDomainMessengerProxy": "0x9253E76E2fA3f72aF18e08914b3528F725779495", + "L1ERC721BridgeProxy": "0x13B397A08322973B45e063F29746Fb278f189916", + "L1StandardBridgeProxy": "0x244d7b81EE3949788Da5F1178D911e83bA24E157", + "L2OutputOracleProxy": "0xdBdb238185f9BB40f742aE249f9a083381EC39eC", + "OptimismMintableERC20FactoryProxy": "0xE6ebece6936528804BB4c43AdcA10c2623919852", + "OptimismPortalProxy": "0xB079E6FA9B3eb072fEbf7F746044834eab308dB6", + "SystemConfigProxy": "0xfDC9bCE032cEF55a71b4fde9B9a2198ad1551965", + "ProxyAdmin": "0x66930dd34EA64bD4B9F32464e363511b49966C5D" +} diff --git a/superchain/extra/bytecodes/0x0bc2e2c871fe2aa803531b38cffaa9c0823c8c279a24efa456301709b75f8c82.bin.gz b/superchain/extra/bytecodes/0x0bc2e2c871fe2aa803531b38cffaa9c0823c8c279a24efa456301709b75f8c82.bin.gz new file mode 100755 index 000000000..367c6e954 Binary files /dev/null and b/superchain/extra/bytecodes/0x0bc2e2c871fe2aa803531b38cffaa9c0823c8c279a24efa456301709b75f8c82.bin.gz differ diff --git a/superchain/extra/bytecodes/0x0bcdfafe860c3ec67eeb98a202f856d549d127d6c9a0fb121a9c0251690ba800.bin.gz b/superchain/extra/bytecodes/0x0bcdfafe860c3ec67eeb98a202f856d549d127d6c9a0fb121a9c0251690ba800.bin.gz new file mode 100755 index 000000000..941bfe785 Binary files /dev/null and b/superchain/extra/bytecodes/0x0bcdfafe860c3ec67eeb98a202f856d549d127d6c9a0fb121a9c0251690ba800.bin.gz differ diff --git a/superchain/extra/bytecodes/0x1811625c3aa5a72f51b726ae4b699f68af9554d291091d8a70030fd0c31bd549.bin.gz b/superchain/extra/bytecodes/0x1811625c3aa5a72f51b726ae4b699f68af9554d291091d8a70030fd0c31bd549.bin.gz new file mode 100755 index 000000000..3f95e4055 Binary files /dev/null and b/superchain/extra/bytecodes/0x1811625c3aa5a72f51b726ae4b699f68af9554d291091d8a70030fd0c31bd549.bin.gz differ diff --git a/superchain/extra/bytecodes/0x1879aa87141f48c14a6d5007476853ba728e4faf9d93e5b7e48d1f25d00d2269.bin.gz b/superchain/extra/bytecodes/0x1879aa87141f48c14a6d5007476853ba728e4faf9d93e5b7e48d1f25d00d2269.bin.gz new file mode 100755 index 000000000..7099c471f Binary files /dev/null and b/superchain/extra/bytecodes/0x1879aa87141f48c14a6d5007476853ba728e4faf9d93e5b7e48d1f25d00d2269.bin.gz differ diff --git a/superchain/extra/bytecodes/0x24892414e365e1d7f99d415564075bf2a74170174cb195c96cde5154c2a8b3b4.bin.gz b/superchain/extra/bytecodes/0x24892414e365e1d7f99d415564075bf2a74170174cb195c96cde5154c2a8b3b4.bin.gz new file mode 100755 index 000000000..658358e1b Binary files /dev/null and b/superchain/extra/bytecodes/0x24892414e365e1d7f99d415564075bf2a74170174cb195c96cde5154c2a8b3b4.bin.gz differ diff --git a/superchain/extra/bytecodes/0x3af83daf213ec8b195ff87cef35a7ad0fe414ffba68f0fbe7da8cfdb5161fbdf.bin.gz b/superchain/extra/bytecodes/0x3af83daf213ec8b195ff87cef35a7ad0fe414ffba68f0fbe7da8cfdb5161fbdf.bin.gz new file mode 100755 index 000000000..5208f404b Binary files /dev/null and b/superchain/extra/bytecodes/0x3af83daf213ec8b195ff87cef35a7ad0fe414ffba68f0fbe7da8cfdb5161fbdf.bin.gz differ diff --git a/superchain/extra/bytecodes/0x4e4511e530894e982004bda420255bb86a4d4cce6a3b7e27916dc3c99c88f16a.bin.gz b/superchain/extra/bytecodes/0x4e4511e530894e982004bda420255bb86a4d4cce6a3b7e27916dc3c99c88f16a.bin.gz new file mode 100755 index 000000000..c2620a10f Binary files /dev/null and b/superchain/extra/bytecodes/0x4e4511e530894e982004bda420255bb86a4d4cce6a3b7e27916dc3c99c88f16a.bin.gz differ diff --git a/superchain/extra/bytecodes/0x5b4b51d84d1f4b5bff7e20e96ed0771857d01c15aee81ff1eb34cf75c25e725e.bin.gz b/superchain/extra/bytecodes/0x5b4b51d84d1f4b5bff7e20e96ed0771857d01c15aee81ff1eb34cf75c25e725e.bin.gz new file mode 100755 index 000000000..53a128d59 Binary files /dev/null and b/superchain/extra/bytecodes/0x5b4b51d84d1f4b5bff7e20e96ed0771857d01c15aee81ff1eb34cf75c25e725e.bin.gz differ diff --git a/superchain/extra/bytecodes/0x610b48f562a6973aceba656fe1e6abd5c6b218a5329e355b69d7d57cb80d838a.bin.gz b/superchain/extra/bytecodes/0x610b48f562a6973aceba656fe1e6abd5c6b218a5329e355b69d7d57cb80d838a.bin.gz new file mode 100755 index 000000000..9e6b16731 Binary files /dev/null and b/superchain/extra/bytecodes/0x610b48f562a6973aceba656fe1e6abd5c6b218a5329e355b69d7d57cb80d838a.bin.gz differ diff --git a/superchain/extra/bytecodes/0x66d484a78e4c0c450426528b84aef5768ad21dd955f8b158c00e7b297fba4707.bin.gz b/superchain/extra/bytecodes/0x66d484a78e4c0c450426528b84aef5768ad21dd955f8b158c00e7b297fba4707.bin.gz new file mode 100755 index 000000000..d4f1c893d Binary files /dev/null and b/superchain/extra/bytecodes/0x66d484a78e4c0c450426528b84aef5768ad21dd955f8b158c00e7b297fba4707.bin.gz differ diff --git a/superchain/extra/bytecodes/0x7a2003c8feeb8c96aff7e39f26631872e873fdf95c45e9e48c07f35f3ecf816a.bin.gz b/superchain/extra/bytecodes/0x7a2003c8feeb8c96aff7e39f26631872e873fdf95c45e9e48c07f35f3ecf816a.bin.gz new file mode 100755 index 000000000..f82d41182 Binary files /dev/null and b/superchain/extra/bytecodes/0x7a2003c8feeb8c96aff7e39f26631872e873fdf95c45e9e48c07f35f3ecf816a.bin.gz differ diff --git a/superchain/extra/bytecodes/0x7e195c9304adbc67c8a6f06da0fb05f664ffce6b353d7a23a17593d57138eff1.bin.gz b/superchain/extra/bytecodes/0x7e195c9304adbc67c8a6f06da0fb05f664ffce6b353d7a23a17593d57138eff1.bin.gz new file mode 100755 index 000000000..784cd7c90 Binary files /dev/null and b/superchain/extra/bytecodes/0x7e195c9304adbc67c8a6f06da0fb05f664ffce6b353d7a23a17593d57138eff1.bin.gz differ diff --git a/superchain/extra/bytecodes/0x86ca33af6d641d163bac6d1b4872f6d7cb1874c5e90771dc1ca94ce67331948c.bin.gz b/superchain/extra/bytecodes/0x86ca33af6d641d163bac6d1b4872f6d7cb1874c5e90771dc1ca94ce67331948c.bin.gz new file mode 100755 index 000000000..a95f6ec9b Binary files /dev/null and b/superchain/extra/bytecodes/0x86ca33af6d641d163bac6d1b4872f6d7cb1874c5e90771dc1ca94ce67331948c.bin.gz differ diff --git a/superchain/extra/bytecodes/0x8c3ec1813298e20399db171b89b881db3566110108bc2d174dbe0eb7ba5d4404.bin.gz b/superchain/extra/bytecodes/0x8c3ec1813298e20399db171b89b881db3566110108bc2d174dbe0eb7ba5d4404.bin.gz new file mode 100755 index 000000000..38f4d91c7 Binary files /dev/null and b/superchain/extra/bytecodes/0x8c3ec1813298e20399db171b89b881db3566110108bc2d174dbe0eb7ba5d4404.bin.gz differ diff --git a/superchain/extra/bytecodes/0xa5fe7f0eb09ccc0611964bf1ef0545af5159ba208edef6995be5f5c92e528847.bin.gz b/superchain/extra/bytecodes/0xa5fe7f0eb09ccc0611964bf1ef0545af5159ba208edef6995be5f5c92e528847.bin.gz new file mode 100755 index 000000000..0e3db001b Binary files /dev/null and b/superchain/extra/bytecodes/0xa5fe7f0eb09ccc0611964bf1ef0545af5159ba208edef6995be5f5c92e528847.bin.gz differ diff --git a/superchain/extra/bytecodes/0xa8336a38da5f9408d017f8e46bff2c7c66e3d09120641e4186f58e73e2308f61.bin.gz b/superchain/extra/bytecodes/0xa8336a38da5f9408d017f8e46bff2c7c66e3d09120641e4186f58e73e2308f61.bin.gz new file mode 100755 index 000000000..7f982e3fb Binary files /dev/null and b/superchain/extra/bytecodes/0xa8336a38da5f9408d017f8e46bff2c7c66e3d09120641e4186f58e73e2308f61.bin.gz differ diff --git a/superchain/extra/bytecodes/0xb9fd81f3f74c2645278859220f986e2f144e1a2afbbed1ba8546673730040432.bin.gz b/superchain/extra/bytecodes/0xb9fd81f3f74c2645278859220f986e2f144e1a2afbbed1ba8546673730040432.bin.gz new file mode 100755 index 000000000..f5f41069c Binary files /dev/null and b/superchain/extra/bytecodes/0xb9fd81f3f74c2645278859220f986e2f144e1a2afbbed1ba8546673730040432.bin.gz differ diff --git a/superchain/extra/bytecodes/0xc09ec8b86e654970f4b860f99a7360cdc0cac950049b6fef5f1e061d879c7e67.bin.gz b/superchain/extra/bytecodes/0xc09ec8b86e654970f4b860f99a7360cdc0cac950049b6fef5f1e061d879c7e67.bin.gz new file mode 100755 index 000000000..03b89a438 Binary files /dev/null and b/superchain/extra/bytecodes/0xc09ec8b86e654970f4b860f99a7360cdc0cac950049b6fef5f1e061d879c7e67.bin.gz differ diff --git a/superchain/extra/bytecodes/0xcb43bd7fe2a042abe23add0c9f9583f377503b148f6fe104dd72367535edc471.bin.gz b/superchain/extra/bytecodes/0xcb43bd7fe2a042abe23add0c9f9583f377503b148f6fe104dd72367535edc471.bin.gz new file mode 100755 index 000000000..a5844f2c1 Binary files /dev/null and b/superchain/extra/bytecodes/0xcb43bd7fe2a042abe23add0c9f9583f377503b148f6fe104dd72367535edc471.bin.gz differ diff --git a/superchain/extra/bytecodes/0xdd43a4370178ca111996b24fff8f8e9190470f14cb5c898279a6848e621ce672.bin.gz b/superchain/extra/bytecodes/0xdd43a4370178ca111996b24fff8f8e9190470f14cb5c898279a6848e621ce672.bin.gz new file mode 100755 index 000000000..50449a92e Binary files /dev/null and b/superchain/extra/bytecodes/0xdd43a4370178ca111996b24fff8f8e9190470f14cb5c898279a6848e621ce672.bin.gz differ diff --git a/superchain/extra/bytecodes/0xe4258d72c62a16df1ba6ce8d9601f6deaa0255d3f720beaa1d60ee772777dd70.bin.gz b/superchain/extra/bytecodes/0xe4258d72c62a16df1ba6ce8d9601f6deaa0255d3f720beaa1d60ee772777dd70.bin.gz new file mode 100755 index 000000000..03b5c7abb Binary files /dev/null and b/superchain/extra/bytecodes/0xe4258d72c62a16df1ba6ce8d9601f6deaa0255d3f720beaa1d60ee772777dd70.bin.gz differ diff --git a/superchain/extra/bytecodes/0xe5644a33f48c649b42e1a47c61a76a83b6c55a172e1f918f7a79d32aefd2bca6.bin.gz b/superchain/extra/bytecodes/0xe5644a33f48c649b42e1a47c61a76a83b6c55a172e1f918f7a79d32aefd2bca6.bin.gz new file mode 100755 index 000000000..5c23f68c0 Binary files /dev/null and b/superchain/extra/bytecodes/0xe5644a33f48c649b42e1a47c61a76a83b6c55a172e1f918f7a79d32aefd2bca6.bin.gz differ diff --git a/superchain/extra/bytecodes/0xeae2900c19f2caa8b033d2e4296602dc54bbdb498869584fd6d8e5211fd915cb.bin.gz b/superchain/extra/bytecodes/0xeae2900c19f2caa8b033d2e4296602dc54bbdb498869584fd6d8e5211fd915cb.bin.gz new file mode 100755 index 000000000..e263693cf Binary files /dev/null and b/superchain/extra/bytecodes/0xeae2900c19f2caa8b033d2e4296602dc54bbdb498869584fd6d8e5211fd915cb.bin.gz differ diff --git a/superchain/extra/bytecodes/0xebdb1d50766033cf9e1f3853f8328f2b6f982d8520de06a617b569c3d24b321c.bin.gz b/superchain/extra/bytecodes/0xebdb1d50766033cf9e1f3853f8328f2b6f982d8520de06a617b569c3d24b321c.bin.gz new file mode 100755 index 000000000..5467e5daf Binary files /dev/null and b/superchain/extra/bytecodes/0xebdb1d50766033cf9e1f3853f8328f2b6f982d8520de06a617b569c3d24b321c.bin.gz differ diff --git a/superchain/extra/bytecodes/0xec34f562e48900495d4714c9186e5c0ae122cf689395e1433fb1a3432c2183ac.bin.gz b/superchain/extra/bytecodes/0xec34f562e48900495d4714c9186e5c0ae122cf689395e1433fb1a3432c2183ac.bin.gz new file mode 100755 index 000000000..df77e4f2c Binary files /dev/null and b/superchain/extra/bytecodes/0xec34f562e48900495d4714c9186e5c0ae122cf689395e1433fb1a3432c2183ac.bin.gz differ diff --git a/superchain/extra/bytecodes/0xf6306497aa772cdc53e329b14f2f72344ce61d05504a8314952811a3528ee18d.bin.gz b/superchain/extra/bytecodes/0xf6306497aa772cdc53e329b14f2f72344ce61d05504a8314952811a3528ee18d.bin.gz new file mode 100755 index 000000000..60b6edb01 Binary files /dev/null and b/superchain/extra/bytecodes/0xf6306497aa772cdc53e329b14f2f72344ce61d05504a8314952811a3528ee18d.bin.gz differ diff --git a/superchain/extra/bytecodes/0xf702d3184d19f6f4cfb2aedbf02490ef477cbe0f36186b64ba00d8fd6acf0951.bin.gz b/superchain/extra/bytecodes/0xf702d3184d19f6f4cfb2aedbf02490ef477cbe0f36186b64ba00d8fd6acf0951.bin.gz new file mode 100755 index 000000000..658da2051 Binary files /dev/null and b/superchain/extra/bytecodes/0xf702d3184d19f6f4cfb2aedbf02490ef477cbe0f36186b64ba00d8fd6acf0951.bin.gz differ diff --git a/superchain/extra/bytecodes/0xfa0c81fb80cadd11a6f7e444f98a9b7a3baaad03a97788cd0a75fd6b0dee56b6.bin.gz b/superchain/extra/bytecodes/0xfa0c81fb80cadd11a6f7e444f98a9b7a3baaad03a97788cd0a75fd6b0dee56b6.bin.gz new file mode 100755 index 000000000..7777c9fc8 Binary files /dev/null and b/superchain/extra/bytecodes/0xfa0c81fb80cadd11a6f7e444f98a9b7a3baaad03a97788cd0a75fd6b0dee56b6.bin.gz differ diff --git a/superchain/extra/bytecodes/0xfab90d3a32b245623bee66d280f816968575ddcdef1f69452a0beeba519b190b.bin.gz b/superchain/extra/bytecodes/0xfab90d3a32b245623bee66d280f816968575ddcdef1f69452a0beeba519b190b.bin.gz new file mode 100755 index 000000000..45cf76c06 Binary files /dev/null and b/superchain/extra/bytecodes/0xfab90d3a32b245623bee66d280f816968575ddcdef1f69452a0beeba519b190b.bin.gz differ diff --git a/superchain/extra/genesis-system-configs/mainnet/boba.json b/superchain/extra/genesis-system-configs/mainnet/boba.json new file mode 100644 index 000000000..00d0a2f89 --- /dev/null +++ b/superchain/extra/genesis-system-configs/mainnet/boba.json @@ -0,0 +1,6 @@ +{ + "batcherAddr": "0xe1b64045351b0b6e9821f19b39f81bc4711d2230", + "overhead": "0x0000000000000000000000000000000000000000000000000000000000000834", + "scalar": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "gasLimit": 30000000 +} diff --git a/superchain/extra/genesis-system-configs/sepolia/boba.json b/superchain/extra/genesis-system-configs/sepolia/boba.json new file mode 100644 index 000000000..222cc1f24 --- /dev/null +++ b/superchain/extra/genesis-system-configs/sepolia/boba.json @@ -0,0 +1,6 @@ +{ + "batcherAddr": "0xf598b6388eC06945021699F0bbb23dfCFc5edbE8", + "overhead": "0x0000000000000000000000000000000000000000000000000000000000000834", + "scalar": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "gasLimit": 30000000 +} \ No newline at end of file diff --git a/superchain/extra/genesis/mainnet/boba.json.zst b/superchain/extra/genesis/mainnet/boba.json.zst new file mode 100644 index 000000000..ec834a9c9 Binary files /dev/null and b/superchain/extra/genesis/mainnet/boba.json.zst differ diff --git a/superchain/extra/genesis/mainnet/settlus-mainnet.json.zst b/superchain/extra/genesis/mainnet/settlus-mainnet.json.zst new file mode 100755 index 000000000..005eb42ce Binary files /dev/null and b/superchain/extra/genesis/mainnet/settlus-mainnet.json.zst differ diff --git a/superchain/extra/genesis/mainnet/snax.json.zst b/superchain/extra/genesis/mainnet/snax.json.zst new file mode 100755 index 000000000..a179d8cef Binary files /dev/null and b/superchain/extra/genesis/mainnet/snax.json.zst differ diff --git a/superchain/extra/genesis/sepolia-dev-0/boba.json.zst b/superchain/extra/genesis/sepolia-dev-0/boba.json.zst new file mode 100644 index 000000000..f14c2576b Binary files /dev/null and b/superchain/extra/genesis/sepolia-dev-0/boba.json.zst differ diff --git a/superchain/extra/genesis/sepolia/boba.json.zst b/superchain/extra/genesis/sepolia/boba.json.zst new file mode 100644 index 000000000..0d4586099 Binary files /dev/null and b/superchain/extra/genesis/sepolia/boba.json.zst differ diff --git a/superchain/extra/genesis/sepolia/settlus-sepolia.json.zst b/superchain/extra/genesis/sepolia/settlus-sepolia.json.zst new file mode 100755 index 000000000..5942d18d1 Binary files /dev/null and b/superchain/extra/genesis/sepolia/settlus-sepolia.json.zst differ diff --git a/validation/README.md b/validation/README.md index b7b1d663e..a05262ad0 100644 --- a/validation/README.md +++ b/validation/README.md @@ -1,4 +1,3 @@ # validation -This directory contains the golang validation checks that chains run against. -The [validation_test.go](validation/validation_test.go) file is the entry point of the tests. It runs a different set of tests for each class of chain (Frontier, Standard Candidate and Standard). +This directory contains TOML files declaring standard configuration and contract versions, and Go bindings for these declarations. diff --git a/validation/params.go b/validation/params.go index 62fe3b760..3bc8569d5 100644 --- a/validation/params.go +++ b/validation/params.go @@ -51,7 +51,9 @@ type GasPriceOracleParams struct { } type SystemConfigParams struct { - GasLimit Range `toml:"gas_limit"` + GasLimit Range `toml:"gas_limit"` + OperatorFeeScalar Range `toml:"operator_fee_scalar"` + OperatorFeeConstant Range `toml:"operator_fee_constant"` } type FDGParams struct { diff --git a/validation/standard/standard-config-params-mainnet.toml b/validation/standard/standard-config-params-mainnet.toml index d6447896f..8acede391 100644 --- a/validation/standard/standard-config-params-mainnet.toml +++ b/validation/standard/standard-config-params-mainnet.toml @@ -29,6 +29,8 @@ base_fee_scalar = [0, 10_000_000] [system_config] gas_limit = [8_000_000, 200_000_000] +operator_fee_scalar = [0, 0] +operator_fee_constant = [0, 0] [proofs.permissioned] game_type = 1 diff --git a/validation/standard/standard-config-params-sepolia.toml b/validation/standard/standard-config-params-sepolia.toml index a37430f6d..b648dd794 100644 --- a/validation/standard/standard-config-params-sepolia.toml +++ b/validation/standard/standard-config-params-sepolia.toml @@ -29,6 +29,8 @@ base_fee_scalar = [0, 10_000_000] [system_config] gas_limit = [1000, 60_000_000] +operator_fee_scalar = [0, 0] +operator_fee_constant = [0, 0] [proofs.permissioned] game_type = 1 diff --git a/validation/standard/standard-prestates.toml b/validation/standard/standard-prestates.toml index 36282654f..1cab49bc5 100644 --- a/validation/standard/standard-prestates.toml +++ b/validation/standard/standard-prestates.toml @@ -1,5 +1,45 @@ -latest_stable = "1.4.0" -latest_rc = "1.5.0-rc.2" +latest_stable = "1.5.0" +latest_rc = "1.6.0-rc.2" + +[[prestates."1.6.0-rc.2"]] +type = "cannon32" +hash = "0x03513e996556589f633fe1d38d694f63bc93cca5df559af37631b30875a829e9" + +[[prestates."1.6.0-rc.2"]] +type = "cannon64" +hash = "0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6" + +[[prestates."1.6.0-rc.1"]] +type = "cannon32" +hash = "0x03526dfe02ab00a178e0ab77f7539561aaf5b5e3b46cd3be358f1e501b06d8a9" + +[[prestates."1.6.0-rc.1"]] +type = "cannon64" +hash = "0x03394563dd4a36e95e6d51ce7267ecceeb05fad23e68d2f9eed1affa73e5641a" + +[[prestates."1.5.1-rc.1"]] +type = "cannon32" +hash = "0x0354eee87a1775d96afee8977ef6d5d6bd3612b256170952a01bf1051610ee01" + +[[prestates."1.5.1-rc.1"]] +type = "cannon64" +hash = "0x03ee2917da962ec266b091f4b62121dc9682bb0db534633707325339f99ee405" + +[[prestates."1.5.0"]] +type = "cannon32" +hash = "0x039facea52b20c605c05efb0a33560a92de7074218998f75bcdf61e8989cb5d9" + +[[prestates."1.5.0"]] +type = "cannon64" +hash = "0x039970872142f48b189d18dcbc03a3737338d098b0101713dc2d6710f9deb5ef" + +[[prestates."1.5.0-rc.4"]] +type = "cannon32" +hash = "0x0354eee87a1775d96afee8977ef6d5d6bd3612b256170952a01bf1051610ee01" + +[[prestates."1.5.0-rc.4"]] +type = "cannon64" +hash = "0x03ee2917da962ec266b091f4b62121dc9682bb0db534633707325339f99ee405" [[prestates."1.5.0-rc.3"]] type = "cannon32" diff --git a/validation/standard/standard-versions-mainnet.toml b/validation/standard/standard-versions-mainnet.toml index 4f5e0fdcf..60b7078c3 100644 --- a/validation/standard/standard-versions-mainnet.toml +++ b/validation/standard/standard-versions-mainnet.toml @@ -3,6 +3,26 @@ # * proxied : specify a standard "implementation_address" # * neither : specify neither a standard "address" nor "implementation_address" +# Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0-rc.2 +# Only the L2 predeploys changed between rc.1 and rc.2. See https://github.com/ethereum-optimism/optimism/pull/14848. +["op-contracts/v3.0.0-rc.2"] +system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" } +fault_dispute_game = { version = "1.4.1" } +permissioned_dispute_game = { version = "1.4.1" } +mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0 +optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" } +anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" } +delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" } +dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" } +preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" } +l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" } +l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" } +l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" } +optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" } +op_contracts_manager = { version = "1.9.0", address = "0x3a1f523a4bc09cd344a2745a108bb0398288094f" } +superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" } +protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" } + # Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0-rc.1 ["op-contracts/v3.0.0-rc.1"] system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" } diff --git a/validation/standard/standard-versions-sepolia.toml b/validation/standard/standard-versions-sepolia.toml index 29b87c551..db7f813e8 100644 --- a/validation/standard/standard-versions-sepolia.toml +++ b/validation/standard/standard-versions-sepolia.toml @@ -3,6 +3,26 @@ # * proxied : specify a standard "implementation_address" # * neither : specify neither a standard "address" nor "implementation_address" +# Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0-rc.2 +# Only the L2 predeploys changed between rc.1 and rc.2. See https://github.com/ethereum-optimism/optimism/pull/14848. +["op-contracts/v3.0.0-rc.2"] +system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" } +fault_dispute_game = { version = "1.4.1" } +permissioned_dispute_game = { version = "1.4.1" } +mips = { version = "1.0.0", address = "0xf027f4a985560fb13324e943edf55ad6f1d15dc1" } # NOTE: MIPS is now MIPS64, so the semver is reset to 1.0.0 +optimism_portal = { version = "3.14.0", implementation_address = "0xb443da3e07052204a02d630a8933dac05a0d6fb4" } +anchor_state_registry = { version = "2.2.2", implementation_address = "0x7b465370bb7a333f99edd19599eb7fb1c2d3f8d2" } +delayed_weth = { version = "1.3.0", implementation_address = "0x5e40b9231b86984b5150507046e354dbfbed3d9e" } +dispute_game_factory = { version = "1.0.1", implementation_address = "0x4bbA758F006Ef09402eF31724203F316ab74e4a0" } +preimage_oracle = { version = "1.1.4", address = "0x1fb8cdfc6831fc866ed9c51af8817da5c287add3" } +l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5a095665886119693f0b41d8dfee78da033e8b" } +l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" } +l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" } +optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" } +op_contracts_manager = { version = "1.9.0", address = "0xfBceeD4DE885645fBdED164910E10F52fEBFAB35" } +superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" } +protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" } + # Upgrade 14 https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv3.0.0-rc.1 ["op-contracts/v3.0.0-rc.1"] system_config = { version = "2.5.0", implementation_address = "0x340f923e5c7cbb2171146f64169ec9d5a9ffe647" } @@ -18,7 +38,7 @@ l1_cross_domain_messenger = { version = "2.6.0", implementation_address = "0x5d5 l1_erc721_bridge = { version = "2.4.0", implementation_address = "0x7ae1d3bd877a4c5ca257404ce26be93a02c98013" } l1_standard_bridge = { version = "2.3.0", implementation_address = "0x0b09ba359a106c9ea3b181cbc5f394570c7d2a7a" } optimism_mintable_erc20_factory = { version = "1.10.1", implementation_address = "0x5493f4677A186f64805fe7317D6993ba4863988F" } -op_contracts_manager = { version = "1.6.0", address = "0xfbceed4de885645fbded164910e10f52febfab35" } +op_contracts_manager = { version = "1.9.0", address = "0xfbceed4de885645fbded164910e10f52febfab35" } superchain_config = { version = "1.2.0", implementation_address = "0x4da82a327773965b8d4D85Fa3dB8249b387458E7" } protocol_versions = { version = "1.1.0", implementation_address = "0x37E15e4d6DFFa9e5E320Ee1eC036922E563CB76C" }