From c01722001e88a8d21a6450f89bb7bb42311c9609 Mon Sep 17 00:00:00 2001 From: Sam Stokes <35908605+bitwiseguy@users.noreply.github.com> Date: Wed, 17 Jul 2024 15:44:52 -0400 Subject: [PATCH] Use toml instead of yaml for chain config files (#386) * add-chain: create toml chain config file * add-chain: import toml package * add-chain: main writes toml chain config * add-chain: add expected_*.toml test files * add-chain: e2e_test uses toml chain config files * add-chain: add convert-to-toml subcommand * superchain: init reads from toml files instead of yaml * circleci: set 'Install just' step name * superchain: replace all chain config .yaml file with .toml * superchain: test uses toml.Unmarshal * add-chain: remove unused checkConfigYaml test function * codegen: fix formatting for toml * superchain: add toml tags for addresses, genesis.system_config * add-chain: convert-to-toml writes addresses, genesis.system_config * superchain: use superchain.toml instead of superchain.yaml * superchain: fix unMarshalSuperchainConfig so it works with toml * superchain: rename EnhanceTOML to GenerateTOMLComments * add-chain: remove WriteChainConfig, last yaml dependency * superchain: remove yaml config files * superchain: fix types in genesis SystemConfig * justfile: clean .toml instead of .yaml * add-chain: write addresses to toml instead of json * superchain: fix order of fields in ChainConfig * superchain: move ChainConfig.Addresses field before plasma * add-chain: remove all yaml and json testdata files * validation: fix devnet config superchain_level and standard_candidate * superchain: add addresses and genesis.system_config to all toml files * add-chain: remove convert-to-toml subcommand * justfile: remove unnecessary clean-add-chain commands * superchain: use rawTOML instead of rawYAML in tests * superchain: remove all yaml tags and references * superchain: reorder ChainConfig.Plasma in toml file * add-chain: tidy comments and function description * superchain: standardize timestamp comment in superchain.toml files * simplify AddressList.MarshalTOML (#392) * simplify mapToAddressList (#393) * superchain: convert superlumio mainnet, metal sepolia to toml * justfile: update remove-chain to point at correct files * superchain: use go codegen to create addresses.json * run go linter * remove javascript codegen * superchain: remove all extra/addresses,genesis-system-config files * superchain: remove embedded extra/addresses * superchain: return error if ChainConfig fields are improperly ordered * superchain: add explanatory comment for custom ChainConfig.MarshalTOML * fix(bindings): Parse TOML Chain Configs (#394) * fix(bindings): use toml configs * fix(bindings): no need to read extra dir * add-chain: cleanup unused code * add-chain: remove 0x0 addresses via post-process instead of custom MarshalTOML --------- Co-authored-by: George Knee Co-authored-by: refcell --- .circleci/config.yml | 15 +- add-chain/addresses.go | 33 +- add-chain/cmd/promote-to-standard.go | 4 +- add-chain/config/config.go | 69 +-- add-chain/e2e_test.go | 49 +- add-chain/go.mod | 3 +- add-chain/main.go | 42 +- .../configs/sepolia/expected_baseline.toml | 46 ++ .../configs/sepolia/expected_baseline.yaml | 24 - .../configs/sepolia/expected_faultproofs.toml | 51 ++ .../configs/sepolia/expected_faultproofs.yaml | 25 - .../configs/sepolia/expected_plasma.toml | 53 ++ .../configs/sepolia/expected_plasma.yaml | 30 -- .../sepolia/expected_standard-candidate.toml | 47 ++ .../sepolia/expected_standard-candidate.yaml | 25 - .../configs/sepolia/expected_zorasep.toml | 43 ++ .../configs/sepolia/expected_zorasep.yaml | 22 - .../addresses/sepolia/expected_baseline.json | 19 - .../sepolia/expected_faultproofs.json | 25 - .../addresses/sepolia/expected_plasma.json | 20 - .../sepolia/expected_standard-candidate.json | 19 - .../addresses/sepolia/expected_zorasep.json | 19 - .../sepolia/expected_baseline.json | 8 - .../sepolia/expected_faultproofs.json | 6 - .../sepolia/expected_plasma.json | 8 - .../sepolia/expected_standard-candidate.json | 8 - .../sepolia/expected_zorasep.json | 6 - bindings/rust-bindings/Cargo.lock | 63 ++- bindings/rust-bindings/Cargo.toml | 3 +- bindings/rust-bindings/src/embed.rs | 7 - bindings/rust-bindings/src/init.rs | 60 +-- bindings/rust-bindings/src/lib.rs | 65 ++- bindings/rust-primitives/Cargo.lock | 2 +- bindings/rust-primitives/Cargo.toml | 2 +- bindings/rust-primitives/src/chain_config.rs | 3 + bindings/rust-primitives/src/genesis.rs | 1 - bindings/rust-primitives/src/lib.rs | 2 +- bindings/rust-primitives/src/rollup_config.rs | 8 +- bindings/rust-primitives/src/system_config.rs | 6 +- justfile | 9 +- scripts/codegen.js | 71 --- superchain/configs/mainnet/base.toml | 47 ++ superchain/configs/mainnet/base.yaml | 26 - superchain/configs/mainnet/lyra.toml | 47 ++ superchain/configs/mainnet/lyra.yaml | 23 - superchain/configs/mainnet/metal.toml | 47 ++ superchain/configs/mainnet/metal.yaml | 23 - superchain/configs/mainnet/mode.toml | 47 ++ superchain/configs/mainnet/mode.yaml | 25 - superchain/configs/mainnet/op.toml | 53 ++ superchain/configs/mainnet/op.yaml | 23 - superchain/configs/mainnet/orderly.toml | 47 ++ superchain/configs/mainnet/orderly.yaml | 23 - superchain/configs/mainnet/pgn.toml | 47 ++ superchain/configs/mainnet/pgn.yaml | 23 - superchain/configs/mainnet/superchain.toml | 13 + superchain/configs/mainnet/superchain.yaml | 13 - superchain/configs/mainnet/superlumio.toml | 42 ++ superchain/configs/mainnet/superlumio.yaml | 25 - superchain/configs/mainnet/zora.toml | 47 ++ superchain/configs/mainnet/zora.yaml | 25 - .../configs/sepolia-dev-0/base-devnet-0.toml | 47 ++ .../configs/sepolia-dev-0/base-devnet-0.yaml | 26 - .../sepolia-dev-0/oplabs-devnet-0.toml | 53 ++ .../sepolia-dev-0/oplabs-devnet-0.yaml | 23 - .../configs/sepolia-dev-0/superchain.toml | 16 + .../configs/sepolia-dev-0/superchain.yaml | 16 - superchain/configs/sepolia/base.toml | 47 ++ superchain/configs/sepolia/base.yaml | 25 - superchain/configs/sepolia/metal.toml | 42 ++ superchain/configs/sepolia/metal.yaml | 26 - superchain/configs/sepolia/mode.toml | 47 ++ superchain/configs/sepolia/mode.yaml | 26 - superchain/configs/sepolia/op.toml | 53 ++ superchain/configs/sepolia/op.yaml | 23 - superchain/configs/sepolia/pgn.toml | 47 ++ superchain/configs/sepolia/pgn.yaml | 23 - superchain/configs/sepolia/superchain.toml | 13 + superchain/configs/sepolia/superchain.yaml | 13 - superchain/configs/sepolia/zora.toml | 47 ++ superchain/configs/sepolia/zora.yaml | 25 - superchain/extra/addresses/addresses.json | 458 +++++++++--------- superchain/extra/addresses/holesky/frax.json | 19 - superchain/extra/addresses/mainnet/base.json | 18 - superchain/extra/addresses/mainnet/lyra.json | 18 - superchain/extra/addresses/mainnet/metal.json | 18 - superchain/extra/addresses/mainnet/mode.json | 18 - superchain/extra/addresses/mainnet/op.json | 24 - .../extra/addresses/mainnet/orderly.json | 18 - superchain/extra/addresses/mainnet/pgn.json | 18 - .../extra/addresses/mainnet/superlumio.json | 15 - superchain/extra/addresses/mainnet/zora.json | 18 - .../sepolia-dev-0/base-devnet-0.json | 18 - .../sepolia-dev-0/oplabs-devnet-0.json | 24 - superchain/extra/addresses/sepolia/base.json | 18 - superchain/extra/addresses/sepolia/metal.json | 15 - superchain/extra/addresses/sepolia/mode.json | 18 - superchain/extra/addresses/sepolia/op.json | 24 - superchain/extra/addresses/sepolia/pgn.json | 18 - superchain/extra/addresses/sepolia/zora.json | 18 - .../genesis-system-configs/mainnet/base.json | 6 - .../genesis-system-configs/mainnet/lyra.json | 6 - .../genesis-system-configs/mainnet/metal.json | 6 - .../genesis-system-configs/mainnet/mode.json | 6 - .../genesis-system-configs/mainnet/op.json | 6 - .../mainnet/orderly.json | 6 - .../genesis-system-configs/mainnet/pgn.json | 6 - .../mainnet/superlumio.json | 6 - .../genesis-system-configs/mainnet/zora.json | 6 - .../sepolia-dev-0/base-devnet-0.json | 6 - .../sepolia-dev-0/oplabs-devnet-0.json | 6 - .../genesis-system-configs/sepolia/base.json | 6 - .../genesis-system-configs/sepolia/metal.json | 6 - .../genesis-system-configs/sepolia/mode.json | 6 - .../genesis-system-configs/sepolia/op.json | 6 - .../genesis-system-configs/sepolia/pgn.json | 6 - .../genesis-system-configs/sepolia/zora.json | 6 - superchain/go.mod | 2 +- superchain/init.go | 33 +- superchain/internal/codegen/main.go | 14 + superchain/superchain.go | 303 ++++++------ superchain/superchain_test.go | 76 ++- 122 files changed, 1736 insertions(+), 1914 deletions(-) create mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_baseline.toml delete mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_baseline.yaml create mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_faultproofs.toml delete mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_faultproofs.yaml create mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_plasma.toml delete mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_plasma.yaml create mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_standard-candidate.toml delete mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_standard-candidate.yaml create mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_zorasep.toml delete mode 100644 add-chain/testdata/superchain/configs/sepolia/expected_zorasep.yaml delete mode 100644 add-chain/testdata/superchain/extra/addresses/sepolia/expected_baseline.json delete mode 100644 add-chain/testdata/superchain/extra/addresses/sepolia/expected_faultproofs.json delete mode 100644 add-chain/testdata/superchain/extra/addresses/sepolia/expected_plasma.json delete mode 100644 add-chain/testdata/superchain/extra/addresses/sepolia/expected_standard-candidate.json delete mode 100644 add-chain/testdata/superchain/extra/addresses/sepolia/expected_zorasep.json delete mode 100644 add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_baseline.json delete mode 100644 add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_faultproofs.json delete mode 100644 add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_plasma.json delete mode 100644 add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_standard-candidate.json delete mode 100644 add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_zorasep.json delete mode 100644 bindings/rust-bindings/src/embed.rs delete mode 100644 scripts/codegen.js create mode 100644 superchain/configs/mainnet/base.toml delete mode 100644 superchain/configs/mainnet/base.yaml create mode 100644 superchain/configs/mainnet/lyra.toml delete mode 100644 superchain/configs/mainnet/lyra.yaml create mode 100644 superchain/configs/mainnet/metal.toml delete mode 100644 superchain/configs/mainnet/metal.yaml create mode 100644 superchain/configs/mainnet/mode.toml delete mode 100644 superchain/configs/mainnet/mode.yaml create mode 100644 superchain/configs/mainnet/op.toml delete mode 100644 superchain/configs/mainnet/op.yaml create mode 100644 superchain/configs/mainnet/orderly.toml delete mode 100644 superchain/configs/mainnet/orderly.yaml create mode 100644 superchain/configs/mainnet/pgn.toml delete mode 100644 superchain/configs/mainnet/pgn.yaml create mode 100644 superchain/configs/mainnet/superchain.toml delete mode 100644 superchain/configs/mainnet/superchain.yaml create mode 100644 superchain/configs/mainnet/superlumio.toml delete mode 100644 superchain/configs/mainnet/superlumio.yaml create mode 100644 superchain/configs/mainnet/zora.toml delete mode 100644 superchain/configs/mainnet/zora.yaml create mode 100644 superchain/configs/sepolia-dev-0/base-devnet-0.toml delete mode 100644 superchain/configs/sepolia-dev-0/base-devnet-0.yaml create mode 100644 superchain/configs/sepolia-dev-0/oplabs-devnet-0.toml delete mode 100644 superchain/configs/sepolia-dev-0/oplabs-devnet-0.yaml create mode 100644 superchain/configs/sepolia-dev-0/superchain.toml delete mode 100644 superchain/configs/sepolia-dev-0/superchain.yaml create mode 100644 superchain/configs/sepolia/base.toml delete mode 100644 superchain/configs/sepolia/base.yaml create mode 100644 superchain/configs/sepolia/metal.toml delete mode 100644 superchain/configs/sepolia/metal.yaml create mode 100644 superchain/configs/sepolia/mode.toml delete mode 100644 superchain/configs/sepolia/mode.yaml create mode 100644 superchain/configs/sepolia/op.toml delete mode 100644 superchain/configs/sepolia/op.yaml create mode 100644 superchain/configs/sepolia/pgn.toml delete mode 100644 superchain/configs/sepolia/pgn.yaml create mode 100644 superchain/configs/sepolia/superchain.toml delete mode 100644 superchain/configs/sepolia/superchain.yaml create mode 100644 superchain/configs/sepolia/zora.toml delete mode 100644 superchain/configs/sepolia/zora.yaml delete mode 100644 superchain/extra/addresses/holesky/frax.json delete mode 100644 superchain/extra/addresses/mainnet/base.json delete mode 100644 superchain/extra/addresses/mainnet/lyra.json delete mode 100644 superchain/extra/addresses/mainnet/metal.json delete mode 100644 superchain/extra/addresses/mainnet/mode.json delete mode 100644 superchain/extra/addresses/mainnet/op.json delete mode 100644 superchain/extra/addresses/mainnet/orderly.json delete mode 100644 superchain/extra/addresses/mainnet/pgn.json delete mode 100644 superchain/extra/addresses/mainnet/superlumio.json delete mode 100644 superchain/extra/addresses/mainnet/zora.json delete mode 100644 superchain/extra/addresses/sepolia-dev-0/base-devnet-0.json delete mode 100644 superchain/extra/addresses/sepolia-dev-0/oplabs-devnet-0.json delete mode 100644 superchain/extra/addresses/sepolia/base.json delete mode 100644 superchain/extra/addresses/sepolia/metal.json delete mode 100644 superchain/extra/addresses/sepolia/mode.json delete mode 100644 superchain/extra/addresses/sepolia/op.json delete mode 100644 superchain/extra/addresses/sepolia/pgn.json delete mode 100644 superchain/extra/addresses/sepolia/zora.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/base.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/lyra.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/metal.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/mode.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/op.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/orderly.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/pgn.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/superlumio.json delete mode 100644 superchain/extra/genesis-system-configs/mainnet/zora.json delete mode 100644 superchain/extra/genesis-system-configs/sepolia-dev-0/base-devnet-0.json delete mode 100644 superchain/extra/genesis-system-configs/sepolia-dev-0/oplabs-devnet-0.json delete mode 100644 superchain/extra/genesis-system-configs/sepolia/base.json delete mode 100644 superchain/extra/genesis-system-configs/sepolia/metal.json delete mode 100644 superchain/extra/genesis-system-configs/sepolia/mode.json delete mode 100644 superchain/extra/genesis-system-configs/sepolia/op.json delete mode 100644 superchain/extra/genesis-system-configs/sepolia/pgn.json delete mode 100644 superchain/extra/genesis-system-configs/sepolia/zora.json diff --git a/.circleci/config.yml b/.circleci/config.yml index 52b7918c0..9f67e8541 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -21,11 +21,13 @@ commands: install-just: description: "Install just" steps: - - run: | - wget -qO - 'https://proget.makedeb.org/debian-feeds/prebuilt-mpr.pub' | gpg --dearmor | sudo tee /usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg 1> /dev/null - echo "deb [arch=all,$(dpkg --print-architecture) signed-by=/usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg] https://proget.makedeb.org prebuilt-mpr $(lsb_release -cs)" | sudo tee /etc/apt/sources.list.d/prebuilt-mpr.list - sudo apt update - sudo apt install just + - run: + name: "Install just" + command: | + wget -qO - 'https://proget.makedeb.org/debian-feeds/prebuilt-mpr.pub' | gpg --dearmor | sudo tee /usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg 1> /dev/null + echo "deb [arch=all,$(dpkg --print-architecture) signed-by=/usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg] https://proget.makedeb.org prebuilt-mpr $(lsb_release -cs)" | sudo tee /etc/apt/sources.list.d/prebuilt-mpr.list + sudo apt update + sudo apt install just jobs: golang-lint: @@ -106,9 +108,6 @@ jobs: steps: - checkout - install-just - - node/install: - install-yarn: false - node-version: '14.16.1' - run: name: Run codegen command: just codegen diff --git a/add-chain/addresses.go b/add-chain/addresses.go index ed29a12fa..781d08213 100644 --- a/add-chain/addresses.go +++ b/add-chain/addresses.go @@ -7,6 +7,7 @@ import ( "os" "path/filepath" + "github.com/BurntSushi/toml" "github.com/ethereum-optimism/superchain-registry/superchain" ) @@ -206,35 +207,11 @@ func readAddressesFromJSON(contractAddresses map[string]string, deploymentsDir s return nil } -func writeAddressesToJSON(contractsAddresses map[string]string, superchainRepoPath, target, chainName string) error { - checkSummedContractAddresses := make(map[string]string) - for k, v := range contractsAddresses { - checkSummedContractAddresses[k] = superchain.MustHexToAddress(v).String() - } - - dirPath := filepath.Join(superchainRepoPath, "superchain", "extra", "addresses", target) - if err := os.MkdirAll(dirPath, 0o755); err != nil { - return fmt.Errorf("failed to create directory: %w", err) - } - - filePath := filepath.Join(dirPath, chainName+".json") - file, err := os.Create(filePath) - if err != nil { - return fmt.Errorf("failed to create file: %w", err) - } - defer file.Close() - - // Marshal the map to JSON - jsonData, err := json.MarshalIndent(checkSummedContractAddresses, "", " ") +func mapToAddressList(m map[string]string, result *superchain.AddressList) error { + out, err := toml.Marshal(m) if err != nil { - return fmt.Errorf("failed to marshal json: %w", err) + return err } - // Write the JSON data to the file - if _, err := file.Write(jsonData); err != nil { - return fmt.Errorf("failed to write json to file: %w", err) - } - fmt.Printf("Contract addresses written to: %s\n", filePath) - - return nil + return toml.Unmarshal(out, result) } diff --git a/add-chain/cmd/promote-to-standard.go b/add-chain/cmd/promote-to-standard.go index d9d610dce..64ffa9a69 100644 --- a/add-chain/cmd/promote-to-standard.go +++ b/add-chain/cmd/promote-to-standard.go @@ -37,8 +37,8 @@ var PromoteToStandardCmd = cli.Command{ superchainRepoPath := filepath.Dir(filepath.Dir(filepath.Dir(thisFile))) targetDir := filepath.Join(superchainRepoPath, "superchain", "configs", chain.Superchain) - targetFilePath := filepath.Join(targetDir, chain.Chain+".yaml") - err := config.WriteChainConfig(*chain, targetFilePath) + targetFilePath := filepath.Join(targetDir, chain.Chain+".toml") + err := config.WriteChainConfigTOML(*chain, targetFilePath) if err != nil { panic(err) } diff --git a/add-chain/config/config.go b/add-chain/config/config.go index 808ae75d6..360057964 100644 --- a/add-chain/config/config.go +++ b/add-chain/config/config.go @@ -1,15 +1,17 @@ package config import ( + "bytes" "context" "encoding/json" "fmt" "os" "path/filepath" + "strings" "time" + "github.com/BurntSushi/toml" "github.com/ethereum-optimism/superchain-registry/superchain" - "gopkg.in/yaml.v3" ) type JSONChainConfig struct { @@ -90,43 +92,50 @@ func ConstructChainConfig( return chainConfig, nil } -// WriteChainConfig accepts a rollupConfig, formats it, and writes some output files based on the given -// target directories -func WriteChainConfig( - rollupConfig superchain.ChainConfig, - targetDirectory string, -) error { - yamlData, err := yaml.Marshal(rollupConfig) +// WriteChainConfigTPOML accepts a rollupConfig, formats it, and writes a single output toml +// file which includes the following: +// - general chain info/config +// - contract and role addresses +// - genesis system config +// - optional feature config info, if activated (e.g. plasma) +func WriteChainConfigTOML(rollupConfig superchain.ChainConfig, targetDirectory string) error { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + comments, err := rollupConfig.GenerateTOMLComments(ctx) if err != nil { - return fmt.Errorf("failed to marshal yaml: %w", err) + return fmt.Errorf("failed to generate toml comments: %w", err) } - // Unmarshal bytes into a yaml.Node for custom manipulation - var rootNode yaml.Node - if err = yaml.Unmarshal(yamlData, &rootNode); err != nil { - return err + // Marshal the struct to TOML + var buf bytes.Buffer + if err := toml.NewEncoder(&buf).Encode(rollupConfig); err != nil { + return fmt.Errorf("failed to marshal toml: %w", err) } - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - if err = rollupConfig.EnhanceYAML(ctx, &rootNode); err != nil { - return err - } + // Create final content with comments + var finalContent strings.Builder + lines := strings.Split(buf.String(), "\n") - // Write the rollup config to a yaml file - filename := filepath.Join(targetDirectory) - file, err := os.Create(filename) - if err != nil { - return err + for i, line := range lines { + splits := strings.Split(line, "=") + lineKey := strings.TrimSpace(splits[0]) + if len(splits) > 1 && strings.TrimSpace(splits[1]) == "\"0x0000000000000000000000000000000000000000\"" { + // Skip this line to exclude zero addresses from the output file. Makes the config .toml cleaner + continue + } + if comment, exists := comments[lineKey]; exists { + finalContent.WriteString(line + " " + comment + "\n") + } else if i != len(lines)-1 || line != "" { + // Prevent double empty line at the end of the file + finalContent.WriteString(line + "\n") + } } - defer file.Close() - - encoder := yaml.NewEncoder(file) - defer encoder.Close() - encoder.SetIndent(2) - if err := encoder.Encode(&rootNode); err != nil { - return fmt.Errorf("failed to write yaml file: %w", err) + // Write the enhanced TOML data to a file + filename := filepath.Join(targetDirectory) + if err := os.WriteFile(filename, []byte(finalContent.String()), 0o644); err != nil { + return fmt.Errorf("failed to write toml file: %w", err) } fmt.Printf("Rollup config written to: %s\n", filename) diff --git a/add-chain/e2e_test.go b/add-chain/e2e_test.go index 594954904..973c866ca 100644 --- a/add-chain/e2e_test.go +++ b/add-chain/e2e_test.go @@ -1,19 +1,17 @@ package main import ( - "encoding/json" "os" "strconv" "testing" - "github.com/google/go-cmp/cmp" + "github.com/BurntSushi/toml" "github.com/stretchr/testify/require" - "gopkg.in/yaml.v3" ) const ( addressDir = "../superchain/extra/addresses/sepolia/" - ymlConfigDir = "../superchain/configs/sepolia/" + configDir = "../superchain/configs/sepolia/" genesisSystemConfigDir = "../superchain/extra/genesis-system-configs/sepolia/" ) @@ -90,9 +88,7 @@ func TestAddChain_Main(t *testing.T) { err = runApp(args) require.NoError(t, err, "add-chain app failed") - checkConfigYaml(t, tt.name, tt.chainShortName) - compareJsonFiles(t, "superchain/extra/addresses/sepolia/", tt.name, tt.chainShortName) - compareJsonFiles(t, "superchain/extra/genesis-system-configs/sepolia/", tt.name, tt.chainShortName) + checkConfigTOML(t, tt.name, tt.chainShortName) }) } @@ -151,44 +147,25 @@ func TestAddChain_CheckGenesis(t *testing.T) { }) } -func compareJsonFiles(t *testing.T, dirPath, testName, chainShortName string) { - expectedBytes, err := os.ReadFile("./testdata/" + dirPath + "expected_" + testName + ".json") - require.NoError(t, err, "failed to read expected.json file from "+dirPath) +func checkConfigTOML(t *testing.T, testName, chainShortName string) { + expectedBytes, err := os.ReadFile("./testdata/superchain/configs/sepolia/expected_" + testName + ".toml") + require.NoError(t, err, "failed to read expected.toml config file: %w", err) - var expectJSON map[string]interface{} - err = json.Unmarshal(expectedBytes, &expectJSON) - require.NoError(t, err, "failed to unmarshal expected.json file from "+dirPath) + var expectedTOML map[string]interface{} + err = toml.Unmarshal(expectedBytes, &expectedTOML) + require.NoError(t, err, "failed to unmarshal expected.toml config file: %w", err) - testBytes, err := os.ReadFile("../" + dirPath + chainShortName + ".json") - require.NoError(t, err, "failed to read test generated json file from "+dirPath) + testBytes, err := os.ReadFile(configDir + chainShortName + ".toml") + require.NoError(t, err, "failed to read testchain.toml config file: %w", err) - var testJSON map[string]interface{} - err = json.Unmarshal(testBytes, &testJSON) - require.NoError(t, err, "failed to read test generated json file from "+dirPath) - - diff := cmp.Diff(expectJSON, testJSON) - require.Equal(t, diff, "", "expected json (-) does not match test json (+): %s", diff) -} - -func checkConfigYaml(t *testing.T, testName, chainShortName string) { - expectedBytes, err := os.ReadFile("./testdata/superchain/configs/sepolia/expected_" + testName + ".yaml") - require.NoError(t, err, "failed to read expected.yaml config file: %w", err) - - var expectedYaml map[string]interface{} - err = yaml.Unmarshal(expectedBytes, &expectedYaml) - require.NoError(t, err, "failed to unmarshal expected.yaml config file: %w", err) - - testBytes, err := os.ReadFile(ymlConfigDir + chainShortName + ".yaml") - require.NoError(t, err, "failed to read testchain.yaml config file: %w", err) - - require.Equal(t, string(expectedBytes), string(testBytes), "test .yaml contents do not meet expectation") + require.Equal(t, string(expectedBytes), string(testBytes), "test .toml contents do not meet expectation") } func cleanupTestFiles(t *testing.T, chainShortName string) { paths := []string{ addressDir + chainShortName + ".json", genesisSystemConfigDir + chainShortName + ".json", - ymlConfigDir + chainShortName + ".yaml", + configDir + chainShortName + ".toml", } for _, path := range paths { diff --git a/add-chain/go.mod b/add-chain/go.mod index 05e04f180..334d2cb7b 100644 --- a/add-chain/go.mod +++ b/add-chain/go.mod @@ -5,6 +5,7 @@ go 1.21 replace github.com/ethereum-optimism/superchain-registry/superchain => ../superchain require ( + github.com/BurntSushi/toml v1.4.0 github.com/ethereum-optimism/optimism v1.7.7 github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240614103325-d8902381f5d8 github.com/ethereum/go-ethereum v1.13.15 @@ -12,7 +13,6 @@ require ( github.com/joho/godotenv v1.5.1 github.com/stretchr/testify v1.9.0 github.com/urfave/cli/v2 v2.27.1 - gopkg.in/yaml.v3 v3.0.1 ) require ( @@ -91,5 +91,6 @@ require ( golang.org/x/tools v0.21.0 // indirect google.golang.org/protobuf v1.34.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) diff --git a/add-chain/main.go b/add-chain/main.go index 45961522f..e973ca71b 100644 --- a/add-chain/main.go +++ b/add-chain/main.go @@ -1,7 +1,6 @@ package main import ( - "encoding/json" "fmt" "os" "path/filepath" @@ -135,34 +134,6 @@ func entrypoint(ctx *cli.Context) error { return fmt.Errorf("failed to construct rollup config: %w", err) } - targetFilePath := filepath.Join(targetDir, chainShortName+".yaml") - err = config.WriteChainConfig(rollupConfig, targetFilePath) - if err != nil { - return fmt.Errorf("error generating chain config .yaml file: %w", err) - } - - fmt.Printf("Wrote config for new chain with identifier %s", rollupConfig.Identifier()) - - // Create genesis-system-config data - // (this is deprecated, users should load this from L1, when available via SystemConfig) - dirPath := filepath.Join(superchainRepoRoot, "superchain", "extra", "genesis-system-configs", superchainTarget) - - if err := os.MkdirAll(dirPath, 0o755); err != nil { - return fmt.Errorf("failed to create directory: %w", err) - } - - // Write the genesis system config JSON to a new file - systemConfigJSON, err := json.MarshalIndent(rollupConfig.Genesis.SystemConfig, "", " ") - if err != nil { - return fmt.Errorf("failed to marshal genesis system config json: %w", err) - } - - filePath := filepath.Join(dirPath, chainShortName+".json") - if err := os.WriteFile(filePath, systemConfigJSON, 0o644); err != nil { - return fmt.Errorf("failed to write genesis system config json: %w", err) - } - fmt.Printf("Genesis system config written to: %s\n", filePath) - err = readAddressesFromChain(addresses, l1RpcUrl, isFaultProofs) if err != nil { return fmt.Errorf("failed to read addresses from chain: %w", err) @@ -172,11 +143,20 @@ func entrypoint(ctx *cli.Context) error { addresses["DAChallengeAddress"] = rollupConfig.Plasma.DAChallengeAddress.String() } - err = writeAddressesToJSON(addresses, superchainRepoRoot, superchainTarget, chainShortName) + addressList := superchain.AddressList{} + err = mapToAddressList(addresses, &addressList) if err != nil { - return fmt.Errorf("failed to write contract addresses to JSON file: %w", err) + return fmt.Errorf("error converting map to AddressList: %w", err) } + rollupConfig.Addresses = addressList + targetFilePath := filepath.Join(targetDir, chainShortName+".toml") + err = config.WriteChainConfigTOML(rollupConfig, targetFilePath) + if err != nil { + return fmt.Errorf("error generating chain config .yaml file: %w", err) + } + + fmt.Printf("Wrote config for new chain with identifier %s", rollupConfig.Identifier()) return nil } diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_baseline.toml b/add-chain/testdata/superchain/configs/sepolia/expected_baseline.toml new file mode 100644 index 000000000..29a850b68 --- /dev/null +++ b/add-chain/testdata/superchain/configs/sepolia/expected_baseline.toml @@ -0,0 +1,46 @@ +name = "testchain_baseline" +chain_id = 4206900 +public_rpc = "http://awe.some.rpc" +sequencer_rpc = "http://awe.some.seq.rpc" +explorer = "https://awesomescan.org" +superchain_level = 1 +batch_inbox_addr = "0xFf00000000000000000000000000000000042069" +canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1713792864 + [genesis.l1] + hash = "0x1fc104fe244042459314bc1d51a230320c64a3d47cd06b7998aa3f57b9b0fc79" + number = 5753349 + [genesis.l2] + hash = "0x0ceefff2113580e4d665c324661e4982a824025bf97285cf09a52715b6f89083" + number = 0 + [genesis.system_config] + batcherAddress = "0x27bf581015C64ec7C57C6E7b3117F35B5f6Dd706" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 30000000 + baseFeeScalar = 0 + blobBaseFeeScalar = 0 + +[addresses] + SystemConfigOwner = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + ProxyAdminOwner = "0x9663FF52F1666954551460FcF190b4E3DaECab37" + Guardian = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + Challenger = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + Proposer = "0x1F191527d46E4F8FE7BFdBb74b442941C1305E44" + UnsafeBlockSigner = "0x9431B143448A60A374ab196d0d7C0683c5369006" + BatchSubmitter = "0x5e80C486D66f51F4933EF04D61b8c4429eA01DB3" + AddressManager = "0xBBCfC68f590ae60Feb1551F4C639E3Eab5ea7BA9" + L1CrossDomainMessengerProxy = "0x6b95418119Aa1bc41D521377D98E6c367817A755" + L1ERC721BridgeProxy = "0x460Cb843a61CeB6cFB3BC3373FC405744f5be4ee" + L1StandardBridgeProxy = "0xC4Ed1Ae4671B38A44B3cea27E1F7462cFe6B1A87" + L2OutputOracleProxy = "0x3F8A862E63E759a77DA22d384027D21BF096bA9E" + OptimismMintableERC20FactoryProxy = "0x39f10A94B969587A2f1739b4AbE3b223814D2A07" + OptimismPortalProxy = "0x6C84AE91901CE8a4897187c33A0094a6e790f34d" + SystemConfigProxy = "0x8787D3382F60d4e072b4276BBda065959195dB33" + ProxyAdmin = "0xd3fE61dd95c1e148A6ef540e1D4983d62726661C" + SuperchainConfig = "0xdf69B06cEB4A4b4Db3CC288840435e673ac4d893" diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_baseline.yaml b/add-chain/testdata/superchain/configs/sepolia/expected_baseline.yaml deleted file mode 100644 index cec98ddb9..000000000 --- a/add-chain/testdata/superchain/configs/sepolia/expected_baseline.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: testchain_baseline -chain_id: 4206900 -public_rpc: http://awe.some.rpc -sequencer_rpc: http://awe.some.seq.rpc -explorer: https://awesomescan.org - -superchain_level: 1 -superchain_time: null # Missing hardfork times are NOT yet inherited from superchain.yaml -batch_inbox_addr: "0xFf00000000000000000000000000000000042069" - -genesis: - l1: - hash: "0x1fc104fe244042459314bc1d51a230320c64a3d47cd06b7998aa3f57b9b0fc79" - number: 5753349 - l2: - hash: "0x0ceefff2113580e4d665c324661e4982a824025bf97285cf09a52715b6f89083" - number: 0 - l2_time: 1713792864 # Mon 22 Apr 2024 13:34:24 UTC - -canyon_time: 0 # Thu 1 Jan 1970 00:00:00 UTC -delta_time: 1703203200 # Fri 22 Dec 2023 00:00:00 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_faultproofs.toml b/add-chain/testdata/superchain/configs/sepolia/expected_faultproofs.toml new file mode 100644 index 000000000..37527190d --- /dev/null +++ b/add-chain/testdata/superchain/configs/sepolia/expected_faultproofs.toml @@ -0,0 +1,51 @@ +name = "testchain_faultproofs" +chain_id = 4206903 +public_rpc = "http://awe.some.rpc" +sequencer_rpc = "http://awe.some.seq.rpc" +explorer = "https://awesomescan.org" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +batch_inbox_addr = "0xFf00000000000000000000000000000011155421" +canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC +delta_time = 0 # Thu 1 Jan 1970 00:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1706484048 + [genesis.l1] + hash = "0x5639be97000fec7131a880b19b664cae43f975c773f628a08a9bb658c2a68df0" + number = 5173577 + [genesis.l2] + hash = "0x3b7e820293ae595ad3accae008e287b6ac757144aa6dc152eb048665e537406d" + number = 0 + [genesis.system_config] + batcherAddress = "0x19CC7073150D9f5888f09E0e9016d2a39667df14" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000000" + scalar = "0x0100000000000000000000000000000000000000000000000000000000000000" + gasLimit = 30000000 + +[addresses] + SystemConfigOwner = "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2" + ProxyAdminOwner = "0x4377BB0F0103992b31eC12b4d796a8687B8dC8E9" + Guardian = "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2" + Challenger = "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2" + Proposer = "0x95014c45078354Ff839f14192228108Eac82E00A" + UnsafeBlockSigner = "0xa95B83e39AA78B00F12fe431865B563793D97AF5" + BatchSubmitter = "0x19CC7073150D9f5888f09E0e9016d2a39667df14" + AddressManager = "0x3eb579b25F6b9547e0073c848389a768FD382296" + L1CrossDomainMessengerProxy = "0x18e72C15FEE4e995454b919EfaA61D8f116F82dd" + L1ERC721BridgeProxy = "0x1bb726658E039E8a9A4ac21A41fE5a0704760461" + L1StandardBridgeProxy = "0x6D8bC564EF04AaF355a10c3eb9b00e349dd077ea" + OptimismMintableERC20FactoryProxy = "0xA16b8db3b5Cdbaf75158F34034B0537e528E17e2" + OptimismPortalProxy = "0x76114bd29dFcC7a9892240D317E6c7C2A281Ffc6" + SystemConfigProxy = "0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7" + ProxyAdmin = "0x18d890A46A3556e7F36f28C79F6157BC7a59f867" + SuperchainConfig = "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7" + AnchorStateRegistryProxy = "0x03b82AE60989863BCEb0BbD442A70568e5AefB85" + DelayedWETHProxy = "0xE99696a028171e31a72828A196C27c2Dd670E1aa" + DisputeGameFactoryProxy = "0x2419423C72998eb1c6c15A235de2f112f8E38efF" + FaultDisputeGame = "0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B" + MIPS = "0xCdD4eabeb5f5d1fD195b15AFBF4eC3CA605Ec8Fe" + PermissionedDisputeGame = "0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC" + PreimageOracle = "0xA6662E943C763b23e82eEf3868E50007C9Af10bf" diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_faultproofs.yaml b/add-chain/testdata/superchain/configs/sepolia/expected_faultproofs.yaml deleted file mode 100644 index 6f9b2a8ff..000000000 --- a/add-chain/testdata/superchain/configs/sepolia/expected_faultproofs.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: testchain_faultproofs -chain_id: 4206903 -public_rpc: http://awe.some.rpc -sequencer_rpc: http://awe.some.seq.rpc -explorer: https://awesomescan.org - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain -superchain_time: null # Missing hardfork times are NOT yet inherited from superchain.yaml -batch_inbox_addr: "0xFf00000000000000000000000000000011155421" - -genesis: - l1: - hash: "0x5639be97000fec7131a880b19b664cae43f975c773f628a08a9bb658c2a68df0" - number: 5173577 - l2: - hash: "0x3b7e820293ae595ad3accae008e287b6ac757144aa6dc152eb048665e537406d" - number: 0 - l2_time: 1706484048 # Sun 28 Jan 2024 23:20:48 UTC - -canyon_time: 0 # Thu 1 Jan 1970 00:00:00 UTC -delta_time: 0 # Thu 1 Jan 1970 00:00:00 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_plasma.toml b/add-chain/testdata/superchain/configs/sepolia/expected_plasma.toml new file mode 100644 index 000000000..36f8b7544 --- /dev/null +++ b/add-chain/testdata/superchain/configs/sepolia/expected_plasma.toml @@ -0,0 +1,53 @@ +name = "testchain_plasma" +chain_id = 4206901 +public_rpc = "http://awe.some.rpc" +sequencer_rpc = "http://awe.some.seq.rpc" +explorer = "https://awesomescan.org" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +batch_inbox_addr = "0xFf00000000000000000000000000000000042069" +canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[plasma] + da_challenge_contract_address = "0x3333333333333333333300000000000000000000" + da_challenge_window = 5555555 + da_resolve_window = 7777777 + +[genesis] + l2_time = 1713792864 + [genesis.l1] + hash = "0x1fc104fe244042459314bc1d51a230320c64a3d47cd06b7998aa3f57b9b0fc79" + number = 5753349 + [genesis.l2] + hash = "0x0ceefff2113580e4d665c324661e4982a824025bf97285cf09a52715b6f89083" + number = 0 + [genesis.system_config] + batcherAddress = "0x27bf581015C64ec7C57C6E7b3117F35B5f6Dd706" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 30000000 + baseFeeScalar = 0 + blobBaseFeeScalar = 0 + +[addresses] + SystemConfigOwner = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + ProxyAdminOwner = "0x9663FF52F1666954551460FcF190b4E3DaECab37" + Guardian = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + Challenger = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + Proposer = "0x1F191527d46E4F8FE7BFdBb74b442941C1305E44" + UnsafeBlockSigner = "0x9431B143448A60A374ab196d0d7C0683c5369006" + BatchSubmitter = "0x5e80C486D66f51F4933EF04D61b8c4429eA01DB3" + AddressManager = "0xBBCfC68f590ae60Feb1551F4C639E3Eab5ea7BA9" + L1CrossDomainMessengerProxy = "0x6b95418119Aa1bc41D521377D98E6c367817A755" + L1ERC721BridgeProxy = "0x460Cb843a61CeB6cFB3BC3373FC405744f5be4ee" + L1StandardBridgeProxy = "0xC4Ed1Ae4671B38A44B3cea27E1F7462cFe6B1A87" + L2OutputOracleProxy = "0x3F8A862E63E759a77DA22d384027D21BF096bA9E" + OptimismMintableERC20FactoryProxy = "0x39f10A94B969587A2f1739b4AbE3b223814D2A07" + OptimismPortalProxy = "0x6C84AE91901CE8a4897187c33A0094a6e790f34d" + SystemConfigProxy = "0x8787D3382F60d4e072b4276BBda065959195dB33" + ProxyAdmin = "0xd3fE61dd95c1e148A6ef540e1D4983d62726661C" + SuperchainConfig = "0xdf69B06cEB4A4b4Db3CC288840435e673ac4d893" + DAChallengeAddress = "0x3333333333333333333300000000000000000000" diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_plasma.yaml b/add-chain/testdata/superchain/configs/sepolia/expected_plasma.yaml deleted file mode 100644 index 6e60f23ea..000000000 --- a/add-chain/testdata/superchain/configs/sepolia/expected_plasma.yaml +++ /dev/null @@ -1,30 +0,0 @@ -name: testchain_plasma -chain_id: 4206901 -public_rpc: http://awe.some.rpc -sequencer_rpc: http://awe.some.seq.rpc -explorer: https://awesomescan.org - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain -superchain_time: null # Missing hardfork times are NOT yet inherited from superchain.yaml -batch_inbox_addr: "0xFf00000000000000000000000000000000042069" - -genesis: - l1: - hash: "0x1fc104fe244042459314bc1d51a230320c64a3d47cd06b7998aa3f57b9b0fc79" - number: 5753349 - l2: - hash: "0x0ceefff2113580e4d665c324661e4982a824025bf97285cf09a52715b6f89083" - number: 0 - l2_time: 1713792864 # Mon 22 Apr 2024 13:34:24 UTC - -canyon_time: 0 # Thu 1 Jan 1970 00:00:00 UTC -delta_time: 1703203200 # Fri 22 Dec 2023 00:00:00 UTC - -block_time: 2 -seq_window_size: 3600 - -plasma: - da_challenge_contract_address: "0x3333333333333333333300000000000000000000" - da_challenge_window: 5555555 - da_resolve_window: 7777777 diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_standard-candidate.toml b/add-chain/testdata/superchain/configs/sepolia/expected_standard-candidate.toml new file mode 100644 index 000000000..3c75efb4f --- /dev/null +++ b/add-chain/testdata/superchain/configs/sepolia/expected_standard-candidate.toml @@ -0,0 +1,47 @@ +name = "testchain_standard-candidate" +chain_id = 4206902 +public_rpc = "http://awe.some.rpc" +sequencer_rpc = "http://awe.some.seq.rpc" +explorer = "https://awesomescan.org" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +batch_inbox_addr = "0xFf00000000000000000000000000000000042069" +canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1713792864 + [genesis.l1] + hash = "0x1fc104fe244042459314bc1d51a230320c64a3d47cd06b7998aa3f57b9b0fc79" + number = 5753349 + [genesis.l2] + hash = "0x0ceefff2113580e4d665c324661e4982a824025bf97285cf09a52715b6f89083" + number = 0 + [genesis.system_config] + batcherAddress = "0x27bf581015C64ec7C57C6E7b3117F35B5f6Dd706" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 30000000 + baseFeeScalar = 0 + blobBaseFeeScalar = 0 + +[addresses] + SystemConfigOwner = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + ProxyAdminOwner = "0x9663FF52F1666954551460FcF190b4E3DaECab37" + Guardian = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + Challenger = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + Proposer = "0x1F191527d46E4F8FE7BFdBb74b442941C1305E44" + UnsafeBlockSigner = "0x9431B143448A60A374ab196d0d7C0683c5369006" + BatchSubmitter = "0x5e80C486D66f51F4933EF04D61b8c4429eA01DB3" + AddressManager = "0xBBCfC68f590ae60Feb1551F4C639E3Eab5ea7BA9" + L1CrossDomainMessengerProxy = "0x6b95418119Aa1bc41D521377D98E6c367817A755" + L1ERC721BridgeProxy = "0x460Cb843a61CeB6cFB3BC3373FC405744f5be4ee" + L1StandardBridgeProxy = "0xC4Ed1Ae4671B38A44B3cea27E1F7462cFe6B1A87" + L2OutputOracleProxy = "0x3F8A862E63E759a77DA22d384027D21BF096bA9E" + OptimismMintableERC20FactoryProxy = "0x39f10A94B969587A2f1739b4AbE3b223814D2A07" + OptimismPortalProxy = "0x6C84AE91901CE8a4897187c33A0094a6e790f34d" + SystemConfigProxy = "0x8787D3382F60d4e072b4276BBda065959195dB33" + ProxyAdmin = "0xd3fE61dd95c1e148A6ef540e1D4983d62726661C" + SuperchainConfig = "0xdf69B06cEB4A4b4Db3CC288840435e673ac4d893" diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_standard-candidate.yaml b/add-chain/testdata/superchain/configs/sepolia/expected_standard-candidate.yaml deleted file mode 100644 index 336525b66..000000000 --- a/add-chain/testdata/superchain/configs/sepolia/expected_standard-candidate.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: testchain_standard-candidate -chain_id: 4206902 -public_rpc: http://awe.some.rpc -sequencer_rpc: http://awe.some.seq.rpc -explorer: https://awesomescan.org - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain -superchain_time: null # Missing hardfork times are NOT yet inherited from superchain.yaml -batch_inbox_addr: "0xFf00000000000000000000000000000000042069" - -genesis: - l1: - hash: "0x1fc104fe244042459314bc1d51a230320c64a3d47cd06b7998aa3f57b9b0fc79" - number: 5753349 - l2: - hash: "0x0ceefff2113580e4d665c324661e4982a824025bf97285cf09a52715b6f89083" - number: 0 - l2_time: 1713792864 # Mon 22 Apr 2024 13:34:24 UTC - -canyon_time: 0 # Thu 1 Jan 1970 00:00:00 UTC -delta_time: 1703203200 # Fri 22 Dec 2023 00:00:00 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_zorasep.toml b/add-chain/testdata/superchain/configs/sepolia/expected_zorasep.toml new file mode 100644 index 000000000..7dd62fd37 --- /dev/null +++ b/add-chain/testdata/superchain/configs/sepolia/expected_zorasep.toml @@ -0,0 +1,43 @@ +name = "testchain_zorasep" +chain_id = 4206904 +public_rpc = "http://awe.some.rpc" +sequencer_rpc = "http://awe.some.seq.rpc" +explorer = "https://awesomescan.org" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +batch_inbox_addr = "0xCd734290E4bd0200dAC631c7D4b9E8a33234e91f" +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1698080004 + [genesis.l1] + hash = "0xf782446a2487d900addb5d466a8597c7c543b59fa9aaa154d413830238f8798a" + number = 4548041 + [genesis.l2] + hash = "0x8b17d2d52564a5a90079d9c860e1386272579e87b17ea27a3868513f53facd74" + number = 0 + [genesis.system_config] + batcherAddress = "0x3Cd868E221A3be64B161D596A7482257a99D857f" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + SystemConfigOwner = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + ProxyAdminOwner = "0x9663FF52F1666954551460FcF190b4E3DaECab37" + Guardian = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + Challenger = "0xe8D525b30dD4C406570d47396b5b237DB30F13F1" + Proposer = "0x1F191527d46E4F8FE7BFdBb74b442941C1305E44" + UnsafeBlockSigner = "0x9431B143448A60A374ab196d0d7C0683c5369006" + BatchSubmitter = "0x5e80C486D66f51F4933EF04D61b8c4429eA01DB3" + AddressManager = "0xBBCfC68f590ae60Feb1551F4C639E3Eab5ea7BA9" + L1CrossDomainMessengerProxy = "0x6b95418119Aa1bc41D521377D98E6c367817A755" + L1ERC721BridgeProxy = "0x460Cb843a61CeB6cFB3BC3373FC405744f5be4ee" + L1StandardBridgeProxy = "0xC4Ed1Ae4671B38A44B3cea27E1F7462cFe6B1A87" + L2OutputOracleProxy = "0x3F8A862E63E759a77DA22d384027D21BF096bA9E" + OptimismMintableERC20FactoryProxy = "0x39f10A94B969587A2f1739b4AbE3b223814D2A07" + OptimismPortalProxy = "0x6C84AE91901CE8a4897187c33A0094a6e790f34d" + SystemConfigProxy = "0x8787D3382F60d4e072b4276BBda065959195dB33" + ProxyAdmin = "0xd3fE61dd95c1e148A6ef540e1D4983d62726661C" + SuperchainConfig = "0xdf69B06cEB4A4b4Db3CC288840435e673ac4d893" diff --git a/add-chain/testdata/superchain/configs/sepolia/expected_zorasep.yaml b/add-chain/testdata/superchain/configs/sepolia/expected_zorasep.yaml deleted file mode 100644 index e84c8e945..000000000 --- a/add-chain/testdata/superchain/configs/sepolia/expected_zorasep.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: testchain_zorasep -chain_id: 4206904 -public_rpc: http://awe.some.rpc -sequencer_rpc: http://awe.some.seq.rpc -explorer: https://awesomescan.org - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain -superchain_time: null # Missing hardfork times are NOT yet inherited from superchain.yaml -batch_inbox_addr: "0xCd734290E4bd0200dAC631c7D4b9E8a33234e91f" - -genesis: - l1: - hash: "0xf782446a2487d900addb5d466a8597c7c543b59fa9aaa154d413830238f8798a" - number: 4548041 - l2: - hash: "0x8b17d2d52564a5a90079d9c860e1386272579e87b17ea27a3868513f53facd74" - number: 0 - l2_time: 1698080004 # Mon 23 Oct 2023 16:53:24 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_baseline.json b/add-chain/testdata/superchain/extra/addresses/sepolia/expected_baseline.json deleted file mode 100644 index 07fd0e1aa..000000000 --- a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_baseline.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "AddressManager": "0xBBCfC68f590ae60Feb1551F4C639E3Eab5ea7BA9", - "BatchSubmitter": "0x5e80C486D66f51F4933EF04D61b8c4429eA01DB3", - "Challenger": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "Guardian": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "L1CrossDomainMessengerProxy": "0x6b95418119Aa1bc41D521377D98E6c367817A755", - "L1ERC721BridgeProxy": "0x460Cb843a61CeB6cFB3BC3373FC405744f5be4ee", - "L1StandardBridgeProxy": "0xC4Ed1Ae4671B38A44B3cea27E1F7462cFe6B1A87", - "L2OutputOracleProxy": "0x3F8A862E63E759a77DA22d384027D21BF096bA9E", - "OptimismMintableERC20FactoryProxy": "0x39f10A94B969587A2f1739b4AbE3b223814D2A07", - "OptimismPortalProxy": "0x6C84AE91901CE8a4897187c33A0094a6e790f34d", - "Proposer": "0x1F191527d46E4F8FE7BFdBb74b442941C1305E44", - "ProxyAdmin": "0xd3fE61dd95c1e148A6ef540e1D4983d62726661C", - "ProxyAdminOwner": "0x9663FF52F1666954551460FcF190b4E3DaECab37", - "SuperchainConfig": "0xdf69B06cEB4A4b4Db3CC288840435e673ac4d893", - "SystemConfigOwner": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "SystemConfigProxy": "0x8787D3382F60d4e072b4276BBda065959195dB33", - "UnsafeBlockSigner": "0x9431B143448A60A374ab196d0d7C0683c5369006" -} diff --git a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_faultproofs.json b/add-chain/testdata/superchain/extra/addresses/sepolia/expected_faultproofs.json deleted file mode 100644 index 6d1b84b86..000000000 --- a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_faultproofs.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "AddressManager": "0x3eb579b25F6b9547e0073c848389a768FD382296", - "AnchorStateRegistryProxy": "0x03b82AE60989863BCEb0BbD442A70568e5AefB85", - "BatchSubmitter": "0x19CC7073150D9f5888f09E0e9016d2a39667df14", - "Challenger": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "DelayedWETHProxy": "0xE99696a028171e31a72828A196C27c2Dd670E1aa", - "DisputeGameFactoryProxy": "0x2419423C72998eb1c6c15A235de2f112f8E38efF", - "FaultDisputeGame": "0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B", - "Guardian": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "L1CrossDomainMessengerProxy": "0x18e72C15FEE4e995454b919EfaA61D8f116F82dd", - "L1ERC721BridgeProxy": "0x1bb726658E039E8a9A4ac21A41fE5a0704760461", - "L1StandardBridgeProxy": "0x6D8bC564EF04AaF355a10c3eb9b00e349dd077ea", - "MIPS": "0xCdD4eabeb5f5d1fD195b15AFBF4eC3CA605Ec8Fe", - "OptimismMintableERC20FactoryProxy": "0xA16b8db3b5Cdbaf75158F34034B0537e528E17e2", - "OptimismPortalProxy": "0x76114bd29dFcC7a9892240D317E6c7C2A281Ffc6", - "PermissionedDisputeGame": "0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC", - "PreimageOracle": "0xA6662E943C763b23e82eEf3868E50007C9Af10bf", - "Proposer": "0x95014c45078354Ff839f14192228108Eac82E00A", - "ProxyAdmin": "0x18d890A46A3556e7F36f28C79F6157BC7a59f867", - "ProxyAdminOwner": "0x4377BB0F0103992b31eC12b4d796a8687B8dC8E9", - "SuperchainConfig": "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7", - "SystemConfigOwner": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "SystemConfigProxy": "0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7", - "UnsafeBlockSigner": "0xa95B83e39AA78B00F12fe431865B563793D97AF5" -} diff --git a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_plasma.json b/add-chain/testdata/superchain/extra/addresses/sepolia/expected_plasma.json deleted file mode 100644 index 508cb828e..000000000 --- a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_plasma.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "AddressManager": "0xBBCfC68f590ae60Feb1551F4C639E3Eab5ea7BA9", - "BatchSubmitter": "0x5e80C486D66f51F4933EF04D61b8c4429eA01DB3", - "Challenger": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "DAChallengeAddress": "0x3333333333333333333300000000000000000000", - "Guardian": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "L1CrossDomainMessengerProxy": "0x6b95418119Aa1bc41D521377D98E6c367817A755", - "L1ERC721BridgeProxy": "0x460Cb843a61CeB6cFB3BC3373FC405744f5be4ee", - "L1StandardBridgeProxy": "0xC4Ed1Ae4671B38A44B3cea27E1F7462cFe6B1A87", - "L2OutputOracleProxy": "0x3F8A862E63E759a77DA22d384027D21BF096bA9E", - "OptimismMintableERC20FactoryProxy": "0x39f10A94B969587A2f1739b4AbE3b223814D2A07", - "OptimismPortalProxy": "0x6C84AE91901CE8a4897187c33A0094a6e790f34d", - "Proposer": "0x1F191527d46E4F8FE7BFdBb74b442941C1305E44", - "ProxyAdmin": "0xd3fE61dd95c1e148A6ef540e1D4983d62726661C", - "ProxyAdminOwner": "0x9663FF52F1666954551460FcF190b4E3DaECab37", - "SuperchainConfig": "0xdf69B06cEB4A4b4Db3CC288840435e673ac4d893", - "SystemConfigOwner": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "SystemConfigProxy": "0x8787D3382F60d4e072b4276BBda065959195dB33", - "UnsafeBlockSigner": "0x9431B143448A60A374ab196d0d7C0683c5369006" -} diff --git a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_standard-candidate.json b/add-chain/testdata/superchain/extra/addresses/sepolia/expected_standard-candidate.json deleted file mode 100644 index 07fd0e1aa..000000000 --- a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_standard-candidate.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "AddressManager": "0xBBCfC68f590ae60Feb1551F4C639E3Eab5ea7BA9", - "BatchSubmitter": "0x5e80C486D66f51F4933EF04D61b8c4429eA01DB3", - "Challenger": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "Guardian": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "L1CrossDomainMessengerProxy": "0x6b95418119Aa1bc41D521377D98E6c367817A755", - "L1ERC721BridgeProxy": "0x460Cb843a61CeB6cFB3BC3373FC405744f5be4ee", - "L1StandardBridgeProxy": "0xC4Ed1Ae4671B38A44B3cea27E1F7462cFe6B1A87", - "L2OutputOracleProxy": "0x3F8A862E63E759a77DA22d384027D21BF096bA9E", - "OptimismMintableERC20FactoryProxy": "0x39f10A94B969587A2f1739b4AbE3b223814D2A07", - "OptimismPortalProxy": "0x6C84AE91901CE8a4897187c33A0094a6e790f34d", - "Proposer": "0x1F191527d46E4F8FE7BFdBb74b442941C1305E44", - "ProxyAdmin": "0xd3fE61dd95c1e148A6ef540e1D4983d62726661C", - "ProxyAdminOwner": "0x9663FF52F1666954551460FcF190b4E3DaECab37", - "SuperchainConfig": "0xdf69B06cEB4A4b4Db3CC288840435e673ac4d893", - "SystemConfigOwner": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "SystemConfigProxy": "0x8787D3382F60d4e072b4276BBda065959195dB33", - "UnsafeBlockSigner": "0x9431B143448A60A374ab196d0d7C0683c5369006" -} diff --git a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_zorasep.json b/add-chain/testdata/superchain/extra/addresses/sepolia/expected_zorasep.json deleted file mode 100644 index 07fd0e1aa..000000000 --- a/add-chain/testdata/superchain/extra/addresses/sepolia/expected_zorasep.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "AddressManager": "0xBBCfC68f590ae60Feb1551F4C639E3Eab5ea7BA9", - "BatchSubmitter": "0x5e80C486D66f51F4933EF04D61b8c4429eA01DB3", - "Challenger": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "Guardian": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "L1CrossDomainMessengerProxy": "0x6b95418119Aa1bc41D521377D98E6c367817A755", - "L1ERC721BridgeProxy": "0x460Cb843a61CeB6cFB3BC3373FC405744f5be4ee", - "L1StandardBridgeProxy": "0xC4Ed1Ae4671B38A44B3cea27E1F7462cFe6B1A87", - "L2OutputOracleProxy": "0x3F8A862E63E759a77DA22d384027D21BF096bA9E", - "OptimismMintableERC20FactoryProxy": "0x39f10A94B969587A2f1739b4AbE3b223814D2A07", - "OptimismPortalProxy": "0x6C84AE91901CE8a4897187c33A0094a6e790f34d", - "Proposer": "0x1F191527d46E4F8FE7BFdBb74b442941C1305E44", - "ProxyAdmin": "0xd3fE61dd95c1e148A6ef540e1D4983d62726661C", - "ProxyAdminOwner": "0x9663FF52F1666954551460FcF190b4E3DaECab37", - "SuperchainConfig": "0xdf69B06cEB4A4b4Db3CC288840435e673ac4d893", - "SystemConfigOwner": "0xe8D525b30dD4C406570d47396b5b237DB30F13F1", - "SystemConfigProxy": "0x8787D3382F60d4e072b4276BBda065959195dB33", - "UnsafeBlockSigner": "0x9431B143448A60A374ab196d0d7C0683c5369006" -} diff --git a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_baseline.json b/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_baseline.json deleted file mode 100644 index 6f12e5eaf..000000000 --- a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_baseline.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "batcherAddr": "0x27bf581015C64ec7C57C6E7b3117F35B5f6Dd706", - "overhead": "0x0000000000000000000000000000000000000000000000000000000000000834", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "gasLimit": 30000000, - "baseFeeScalar": 0, - "blobBaseFeeScalar": 0 -} diff --git a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_faultproofs.json b/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_faultproofs.json deleted file mode 100644 index 8a2560597..000000000 --- a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_faultproofs.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x19CC7073150D9f5888f09E0e9016d2a39667df14", - "overhead": "0x0000000000000000000000000000000000000000000000000000000000000000", - "scalar": "0x0100000000000000000000000000000000000000000000000000000000000000", - "gasLimit": 30000000 -} diff --git a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_plasma.json b/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_plasma.json deleted file mode 100644 index 6f12e5eaf..000000000 --- a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_plasma.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "batcherAddr": "0x27bf581015C64ec7C57C6E7b3117F35B5f6Dd706", - "overhead": "0x0000000000000000000000000000000000000000000000000000000000000834", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "gasLimit": 30000000, - "baseFeeScalar": 0, - "blobBaseFeeScalar": 0 -} diff --git a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_standard-candidate.json b/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_standard-candidate.json deleted file mode 100644 index 6f12e5eaf..000000000 --- a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_standard-candidate.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "batcherAddr": "0x27bf581015C64ec7C57C6E7b3117F35B5f6Dd706", - "overhead": "0x0000000000000000000000000000000000000000000000000000000000000834", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "gasLimit": 30000000, - "baseFeeScalar": 0, - "blobBaseFeeScalar": 0 -} diff --git a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_zorasep.json b/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_zorasep.json deleted file mode 100644 index 03cd4ae2d..000000000 --- a/add-chain/testdata/superchain/extra/genesis-system-configs/sepolia/expected_zorasep.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x3Cd868E221A3be64B161D596A7482257a99D857f", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} diff --git a/bindings/rust-bindings/Cargo.lock b/bindings/rust-bindings/Cargo.lock index c10a16706..fe41b1b7a 100644 --- a/bindings/rust-bindings/Cargo.lock +++ b/bindings/rust-bindings/Cargo.lock @@ -424,6 +424,12 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + [[package]] name = "num-traits" version = "0.2.19" @@ -636,6 +642,15 @@ dependencies = [ "syn 2.0.68", ] +[[package]] +name = "serde_spanned" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +dependencies = [ + "serde", +] + [[package]] name = "serde_yaml" version = "0.9.34+deprecated" @@ -662,7 +677,7 @@ dependencies = [ [[package]] name = "superchain-primitives" -version = "0.1.1" +version = "0.1.2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -677,7 +692,7 @@ dependencies = [ [[package]] name = "superchain-registry" -version = "0.1.1" +version = "0.1.2" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -689,6 +704,7 @@ dependencies = [ "serde_repr", "serde_yaml", "superchain-primitives", + "toml", ] [[package]] @@ -742,6 +758,40 @@ dependencies = [ "crunchy", ] +[[package]] +name = "toml" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "typenum" version = "1.17.0" @@ -778,6 +828,15 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "winnow" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +dependencies = [ + "memchr", +] + [[package]] name = "zerocopy" version = "0.7.34" diff --git a/bindings/rust-bindings/Cargo.toml b/bindings/rust-bindings/Cargo.toml index b21fcba95..4a258c052 100644 --- a/bindings/rust-bindings/Cargo.toml +++ b/bindings/rust-bindings/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "superchain-registry" description = "Bindings for the Superchain Registry" -version = "0.1.1" +version = "0.1.2" edition = "2021" license = "MIT" authors = ["OP Contributors"] @@ -17,6 +17,7 @@ superchain-primitives = { path = "../rust-primitives", version = "0.1" } # serialization serde = { version = "1.0.203", default-features = false, features = ["derive", "alloc"] } serde_json = { version = "1.0", default-features = false } +toml = { version = "0.8.14" } serde_yaml = { version = "0.9", default-features = false } serde_repr = "0.1" diff --git a/bindings/rust-bindings/src/embed.rs b/bindings/rust-bindings/src/embed.rs deleted file mode 100644 index ac4dd0c92..000000000 --- a/bindings/rust-bindings/src/embed.rs +++ /dev/null @@ -1,7 +0,0 @@ -use include_dir::{include_dir, Dir}; - -/// Directory containing the configuration files for the superchain. -pub(crate) static CONFIGS_DIR: Dir<'_> = include_dir!("$SUPERCHAIN_CONFIGS"); - -/// Directory containing the extra files for the superchain. -pub(crate) static EXTRA_DIR: Dir<'_> = include_dir!("$SUPERCHAIN_EXTRA"); diff --git a/bindings/rust-bindings/src/init.rs b/bindings/rust-bindings/src/init.rs index 1059b6c45..eead378d2 100644 --- a/bindings/rust-bindings/src/init.rs +++ b/bindings/rust-bindings/src/init.rs @@ -1,31 +1,29 @@ //! Initializers for the Superchain Registry. -use crate::embed; -use alloc::{format, string::ToString, vec::Vec}; +use crate::CONFIGS_DIR; +use alloc::{format, vec::Vec}; use hashbrown::HashMap; use superchain_primitives::{ - is_config_file, AddressList, Addresses, ChainConfig, GenesisSystemConfigs, OPChains, - Superchain, SuperchainConfig, Superchains, SystemConfig, + is_config_file, ChainConfig, OPChains, Superchain, SuperchainConfig, Superchains, }; /// Tuple type holding the various initializers. -pub(crate) type InitTuple = (Superchains, OPChains, Addresses, GenesisSystemConfigs); +pub(crate) type InitTuple = (Superchains, OPChains); /// Initialize the superchain configurations from the embedded filesystem. pub(crate) fn load_embedded_configs() -> InitTuple { let mut superchains = HashMap::new(); let mut op_chains = HashMap::new(); - let mut addresses = HashMap::new(); - let mut genesis_system_configs = HashMap::new(); - for target_dir in embed::CONFIGS_DIR.dirs() { + for target_dir in CONFIGS_DIR.dirs() { let target_name = target_dir.path().file_name().unwrap().to_str().unwrap(); let target_data = target_dir - .get_file(format!("{}/superchain.yaml", target_name)) - .expect("Failed to find superchain.yaml config file") - .contents(); - let mut entry_config: SuperchainConfig = serde_yaml::from_slice(target_data) - .expect("Failed to deserialize superchain.yaml config file"); + .get_file(format!("{}/superchain.toml", target_name)) + .expect("Failed to find superchain.toml config file") + .contents_utf8() + .expect("Failed to parse superchain.toml as utf8 string"); + let mut entry_config: SuperchainConfig = + toml::from_str(target_data).expect("Failed to deserialize superchain.toml config file"); let mut chain_ids = Vec::new(); for chain in target_dir.entries() { @@ -34,37 +32,15 @@ pub(crate) fn load_embedded_configs() -> InitTuple { continue; } - let chain_data = chain.as_file().unwrap().contents(); - let mut chain_config: ChainConfig = serde_yaml::from_slice(chain_data) - .expect("Failed to deserialize chain config file"); - chain_config.chain = chain_name.trim_end_matches(".yaml").to_string(); - + let chain_data = chain.as_file().unwrap().contents_utf8().unwrap(); + let mut chain_config: ChainConfig = + toml::from_str(chain_data).expect("Failed to deserialize chain config file"); + chain_config.chain = chain_name.trim_end_matches(".toml").to_string(); chain_config.set_missing_fork_configs(&entry_config.hardfork_defaults); - let json_file_name = chain_config.chain.clone() + ".json"; - let addresses_data = embed::EXTRA_DIR - .get_file(format!("addresses/{}/{}", target_name, json_file_name)) - .expect("Failed to find address list file") - .contents(); - let addrs: AddressList = serde_json::from_slice(addresses_data) - .expect("Failed to deserialize address list file"); - - let genesis_config_data = embed::EXTRA_DIR - .get_file(format!( - "genesis-system-configs/{}/{}", - target_name, json_file_name - )) - .expect("Failed to find genesis system config file") - .contents(); - let genesis_config: SystemConfig = serde_json::from_slice(genesis_config_data) - .expect("Failed to deserialize genesis system config file"); - - let id = chain_config.chain_id; chain_config.superchain = target_name.to_string(); - genesis_system_configs.insert(id, genesis_config); - op_chains.insert(id, chain_config); - addresses.insert(id, addrs); - chain_ids.push(id); + chain_ids.push(chain_config.chain_id); + op_chains.insert(chain_config.chain_id, chain_config); } #[cfg(feature = "std")] @@ -92,5 +68,5 @@ pub(crate) fn load_embedded_configs() -> InitTuple { ); } - (superchains, op_chains, addresses, genesis_system_configs) + (superchains, op_chains) } diff --git a/bindings/rust-bindings/src/lib.rs b/bindings/rust-bindings/src/lib.rs index 66253acc6..2019c024b 100644 --- a/bindings/rust-bindings/src/lib.rs +++ b/bindings/rust-bindings/src/lib.rs @@ -6,18 +6,19 @@ extern crate alloc; +/// Module responsible for initializing the superchain configurations +/// from the embedded filesystem. +mod init; + /// Re-export superchain primitives. pub use superchain_primitives::{ Addresses, GenesisSystemConfigs, Implementations, OPChains, Superchains, }; -/// Module responsible for representing the embedded filesystem -/// that contains the superchain configurations for static access. -mod embed; +use include_dir::{include_dir, Dir}; -/// Module responsible for initializing the superchain configurations -/// from the embedded filesystem. -mod init; +/// Directory containing the configuration files for the superchain. +pub(crate) static CONFIGS_DIR: Dir<'_> = include_dir!("$SUPERCHAIN_CONFIGS"); lazy_static::lazy_static! { /// Private initializer that runs once to load the superchain configurations. @@ -28,19 +29,15 @@ lazy_static::lazy_static! { /// OPChain configurations exported from the registry pub static ref OPCHAINS: OPChains = _INIT.1.clone(); - - /// Address lists exported from the registry - pub static ref ADDRESSES: Addresses = _INIT.2.clone(); - - /// Genesis system configurations exported from the registry - pub static ref GENESIS_SYSTEM_CONFIGS: GenesisSystemConfigs = _INIT.3.clone(); } #[cfg(test)] mod tests { - use crate::{ADDRESSES, OPCHAINS, SUPERCHAINS}; - use alloy_primitives::{address, b256}; - use superchain_primitives::{AddressList, SuperchainLevel}; + use crate::{OPCHAINS, SUPERCHAINS}; + use alloy_primitives::{address, b256, uint}; + use superchain_primitives::{ + AddressList, SuperchainLevel, SystemConfig, BASE_MAINNET_CONFIG, OP_MAINNET_CONFIG, + }; #[test] fn test_read_superchains() { @@ -50,6 +47,20 @@ mod tests { assert_eq!(superchains.get("sepolia").unwrap().superchain, "sepolia"); } + #[test] + fn test_base_mainnet_genesis() { + let base = BASE_MAINNET_CONFIG; + let derived = OPCHAINS.get(&8453).unwrap(); + assert_eq!(base.genesis, derived.genesis); + } + + #[test] + fn test_op_mainnet_genesis() { + let op = OP_MAINNET_CONFIG; + let derived = OPCHAINS.get(&10).unwrap(); + assert_eq!(op.genesis, derived.genesis); + } + #[test] fn test_read_chain_configs() { let mainnet = SUPERCHAINS.get("mainnet").unwrap(); @@ -84,17 +95,21 @@ mod tests { ); assert_eq!(base.genesis.l2_time, 1686789347); assert_eq!(base.genesis.extra_data, None); - assert!(base.genesis.system_config.is_none()); - assert_eq!(base.hardfork_configuration.canyon_time, None); - assert_eq!(base.hardfork_configuration.delta_time, None); - assert_eq!(base.hardfork_configuration.ecotone_time, None); - assert_eq!(base.hardfork_configuration.fjord_time, None); - } + let sys_config = SystemConfig { + batcher_address: address!("5050f69a9786f081509234f1a7f4684b5e5b76c9"), + overhead: uint!(0xbc_U256), + scalar: uint!(0xa6fe0_U256), + gas_limit: 30_000_000_u64, + base_fee_scalar: None, + blob_base_fee_scalar: None, + }; + assert_eq!(base.genesis.system_config, Some(sys_config)); - #[test] - fn test_read_chain_addresses() { - let addrs = ADDRESSES.get(&8453).unwrap(); + assert_eq!(base.hardfork_configuration.canyon_time, Some(1704992401)); + assert_eq!(base.hardfork_configuration.delta_time, Some(1708560000)); + assert_eq!(base.hardfork_configuration.ecotone_time, Some(1710374401)); + assert_eq!(base.hardfork_configuration.fjord_time, Some(1720627201)); let expected = AddressList { address_manager: address!("8efb6b5c4767b09dc9aa6af4eaa89f749522bae2"), @@ -117,6 +132,6 @@ mod tests { preimage_oracle: None, }; - assert_eq!(*addrs, expected); + assert_eq!(base.addresses, Some(expected)); } } diff --git a/bindings/rust-primitives/Cargo.lock b/bindings/rust-primitives/Cargo.lock index 8a781f698..310d382df 100644 --- a/bindings/rust-primitives/Cargo.lock +++ b/bindings/rust-primitives/Cargo.lock @@ -624,7 +624,7 @@ dependencies = [ [[package]] name = "superchain-primitives" -version = "0.1.1" +version = "0.1.2" dependencies = [ "alloy-consensus", "alloy-eips", diff --git a/bindings/rust-primitives/Cargo.toml b/bindings/rust-primitives/Cargo.toml index eae488c38..caeef9ce5 100644 --- a/bindings/rust-primitives/Cargo.toml +++ b/bindings/rust-primitives/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "superchain-primitives" description = "Primitive Types for the Superchain Registry" -version = "0.1.1" +version = "0.1.2" edition = "2021" license = "MIT" authors = ["OP Contributors"] diff --git a/bindings/rust-primitives/src/chain_config.rs b/bindings/rust-primitives/src/chain_config.rs index cf41df83e..1e5ae0f5b 100644 --- a/bindings/rust-primitives/src/chain_config.rs +++ b/bindings/rust-primitives/src/chain_config.rs @@ -1,5 +1,6 @@ //! Chain Config Types +use crate::AddressList; use crate::ChainGenesis; use crate::SuperchainLevel; use alloc::string::String; @@ -72,6 +73,8 @@ pub struct ChainConfig { pub hardfork_configuration: HardForkConfiguration, /// Optional Plasma DA feature pub plasma: Option, + /// Addresses + pub addresses: Option, } impl ChainConfig { diff --git a/bindings/rust-primitives/src/genesis.rs b/bindings/rust-primitives/src/genesis.rs index 0921f4f56..517b01f9b 100644 --- a/bindings/rust-primitives/src/genesis.rs +++ b/bindings/rust-primitives/src/genesis.rs @@ -21,6 +21,5 @@ pub struct ChainGenesis { /// Extra data for the genesis block pub extra_data: Option, /// Optional System configuration - #[cfg_attr(feature = "serde", serde(flatten))] pub system_config: Option, } diff --git a/bindings/rust-primitives/src/lib.rs b/bindings/rust-primitives/src/lib.rs index c7e6e6c68..b231ba2d6 100644 --- a/bindings/rust-primitives/src/lib.rs +++ b/bindings/rust-primitives/src/lib.rs @@ -56,5 +56,5 @@ pub use contracts::{AddressSet, ContractImplementations, Implementations}; /// Validates if a file is a configuration file. pub fn is_config_file(name: &str) -> bool { - name.ends_with(".yaml") && name != "superchain.yaml" && name != "semver.yaml" + name.ends_with(".toml") && name != "superchain.toml" && name != "semver.toml" } diff --git a/bindings/rust-primitives/src/rollup_config.rs b/bindings/rust-primitives/src/rollup_config.rs index e2d9917b9..a6bd5ab40 100644 --- a/bindings/rust-primitives/src/rollup_config.rs +++ b/bindings/rust-primitives/src/rollup_config.rs @@ -279,7 +279,7 @@ pub const OP_MAINNET_CONFIG: RollupConfig = RollupConfig { }, l2_time: 1_686_068_903_u64, system_config: Some(SystemConfig { - batcher_addr: address!("6887246668a3b87f54deb3b94ba47a6f63f32985"), + batcher_address: address!("6887246668a3b87f54deb3b94ba47a6f63f32985"), overhead: uint!(0xbc_U256), scalar: uint!(0xa6fe0_U256), gas_limit: 30_000_000_u64, @@ -323,7 +323,7 @@ pub const OP_SEPOLIA_CONFIG: RollupConfig = RollupConfig { }, l2_time: 1691802540, system_config: Some(SystemConfig { - batcher_addr: address!("8f23bb38f531600e5d8fddaaec41f13fab46e98c"), + batcher_address: address!("8f23bb38f531600e5d8fddaaec41f13fab46e98c"), overhead: uint!(0xbc_U256), scalar: uint!(0xa6fe0_U256), gas_limit: 30_000_000, @@ -367,7 +367,7 @@ pub const BASE_MAINNET_CONFIG: RollupConfig = RollupConfig { }, l2_time: 1686789347_u64, system_config: Some(SystemConfig { - batcher_addr: address!("5050f69a9786f081509234f1a7f4684b5e5b76c9"), + batcher_address: address!("5050f69a9786f081509234f1a7f4684b5e5b76c9"), overhead: uint!(0xbc_U256), scalar: uint!(0xa6fe0_U256), gas_limit: 30_000_000_u64, @@ -411,7 +411,7 @@ pub const BASE_SEPOLIA_CONFIG: RollupConfig = RollupConfig { }, l2_time: 1695768288, system_config: Some(SystemConfig { - batcher_addr: address!("6cdebe940bc0f26850285caca097c11c33103e47"), + batcher_address: address!("6cdebe940bc0f26850285caca097c11c33103e47"), overhead: uint!(0x34_U256), scalar: uint!(0xf4240_U256), gas_limit: 25000000, diff --git a/bindings/rust-primitives/src/system_config.rs b/bindings/rust-primitives/src/system_config.rs index 688bc2ee9..1511fb46d 100644 --- a/bindings/rust-primitives/src/system_config.rs +++ b/bindings/rust-primitives/src/system_config.rs @@ -19,7 +19,7 @@ pub const CONFIG_UPDATE_EVENT_VERSION_0: B256 = B256::ZERO; #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] pub struct SystemConfig { /// Batcher address - pub batcher_addr: Address, + pub batcher_address: Address, /// Fee overhead value pub overhead: U256, /// Fee scalar value @@ -146,7 +146,7 @@ impl SystemConfig { let batcher_address = ::abi_decode(&log.data.data.as_ref()[64..], true) .map_err(|_| anyhow!("Failed to decode batcher update log"))?; - self.batcher_addr = batcher_address; + self.batcher_address = batcher_address; } SystemConfigUpdateType::GasConfig => { if log_data.len() != 128 { @@ -291,7 +291,7 @@ mod test { .unwrap(); assert_eq!( - system_config.batcher_addr, + system_config.batcher_address, address!("000000000000000000000000000000000000bEEF") ); } diff --git a/justfile b/justfile index e714bcb86..7d63b5362 100644 --- a/justfile +++ b/justfile @@ -16,7 +16,6 @@ promote-to-standard CHAIN: # Generate auto-generated files codegen: clean-add-chain go run superchain/internal/codegen/main.go - node ./scripts/codegen.js # Lint all Go code lint-all: @@ -46,9 +45,7 @@ validate CHAIN_ID: # Clean test files generated by the add-chain tooling clean-add-chain: - rm -f superchain/configs/sepolia/testchain_*.yaml - rm -f superchain/extra/addresses/sepolia/testchain_*.json - rm -f superchain/extra/genesis-system-configs/sepolia/testchain_*.json + rm -f superchain/configs/sepolia/testchain_*.toml # Tidying all go.mod files tidy-all: tidy-add-chain tidy-superchain tidy-validation @@ -67,8 +64,6 @@ tidy-validation: # Removing a chain, example: just remove-chain sepolia op remove-chain SUPERCHAIN_TARGET CHAIN: - rm superchain/configs/{{SUPERCHAIN_TARGET}}/{{CHAIN}}.yaml - rm superchain/extra/addresses/{{SUPERCHAIN_TARGET}}/{{CHAIN}}.json - rm superchain/extra/genesis-system-configs/{{SUPERCHAIN_TARGET}}/{{CHAIN}}.json + rm superchain/configs/{{SUPERCHAIN_TARGET}}/{{CHAIN}}.toml rm superchain/extra/genesis/{{SUPERCHAIN_TARGET}}/{{CHAIN}}.json.gz just codegen diff --git a/scripts/codegen.js b/scripts/codegen.js deleted file mode 100644 index bbc3b79f1..000000000 --- a/scripts/codegen.js +++ /dev/null @@ -1,71 +0,0 @@ -import fs from 'fs' -import path from 'path' -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - -/** - * Geneartes the addresses.json file that sits at the root of the - * superchain/extra/addresses folder. Useful to have a combined JSON file for - * all of the various addresses to avoid dynamic imports. - */ -const addresses = () => { - const chainids = {} - var folder = path.resolve(__dirname, '../superchain/configs') - var subfolders = fs.readdirSync(folder, { withFileTypes: true }) - for (const subfolder of subfolders) { - if (!subfolder.isDirectory()) { - continue - } - - const subpath = path.resolve(folder, subfolder.name) - const files = fs.readdirSync(subpath) - for (const file of files) { - if (path.extname(file) !== '.yaml') { - continue - } - - const filepath = path.resolve(subpath, file) - const filename = filepath.replace('.yaml', '') - const chain = path.relative(folder, filename).replace(path.sep, '/') - const content = fs.readFileSync(filepath, 'utf8') - const matches = content.match(/^chain_id:\s*(\d+)$/m) - - if (matches) { - const id = parseInt(matches[1]) - chainids[chain] = id - } - } - } - - const result = {} - folder = path.resolve(__dirname, '../superchain/extra/addresses') - subfolders = fs.readdirSync(folder, { withFileTypes: true }) - for (const subfolder of subfolders) { - if (!subfolder.isDirectory()) { - continue - } - - const subpath = path.resolve(folder, subfolder.name) - const files = fs.readdirSync(subpath) - for (const file of files) { - if (path.extname(file) !== '.json') { - continue - } - - const filepath = path.resolve(subpath, file) - const filename = filepath.replace('.json', '') - const chain = path.relative(folder, filename).replace(path.sep, '/') - const content = fs.readFileSync(filepath, 'utf8') - - if (chainids[chain]) { - result[chainids[chain]] = JSON.parse(content) - } - } - } - - const outpath = path.resolve(folder, 'addresses.json') - fs.writeFileSync(outpath, JSON.stringify(result, null, 2)) -} - -addresses() diff --git a/superchain/configs/mainnet/base.toml b/superchain/configs/mainnet/base.toml new file mode 100644 index 000000000..bbfe63dc3 --- /dev/null +++ b/superchain/configs/mainnet/base.toml @@ -0,0 +1,47 @@ +name = "Base" +chain_id = 8453 +public_rpc = "https://mainnet.base.org" +sequencer_rpc = "https://mainnet-sequencer.base.org" +explorer = "https://explorer.base.org" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0xFf00000000000000000000000000000000008453" +canyon_time = 1704992401 # Thu 11 Jan 2024 17:00:01 UTC +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 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1686789347 + [genesis.l1] + hash = "0x5c13d307623a926cd31415036c8b7fa14572f9dac64528e857a470511fc30771" + number = 17481768 + [genesis.l2] + hash = "0xf712aa9241cc24369b143cf6dce85f0902a9731e70d66818a3a5845b296c73dd" + number = 0 + [genesis.system_config] + batcherAddress = "0x5050F69a9786F081509234F1a7F4684b5E5b76C9" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2" + BatchSubmitter = "0x5050F69a9786F081509234F1a7F4684b5E5b76C9" + Challenger = "0x6F8C5bA3F59ea3E76300E3BEcDC231D656017824" + Guardian = "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2" + L1CrossDomainMessengerProxy = "0x866E82a600A1414e583f7F13623F1aC5d58b0Afa" + L1ERC721BridgeProxy = "0x608d94945A64503E642E6370Ec598e519a2C1E53" + L1StandardBridgeProxy = "0x3154Cf16ccdb4C6d922629664174b904d80F2C35" + L2OutputOracleProxy = "0x56315b90c40730925ec5485cf004d835058518A0" + OptimismMintableERC20FactoryProxy = "0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84" + OptimismPortalProxy = "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e" + Proposer = "0x642229f238fb9dE03374Be34B0eD8D9De80752c5" + ProxyAdmin = "0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E" + ProxyAdminOwner = "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c" + SystemConfigOwner = "0x14536667Cd30e52C0b458BaACcB9faDA7046E056" + SystemConfigProxy = "0x73a79Fab69143498Ed3712e519A88a918e1f4072" + UnsafeBlockSigner = "0xAf6E19BE0F9cE7f8afd49a1824851023A8249e8a" diff --git a/superchain/configs/mainnet/base.yaml b/superchain/configs/mainnet/base.yaml deleted file mode 100644 index 420929a2e..000000000 --- a/superchain/configs/mainnet/base.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: Base -chain_id: 8453 -public_rpc: https://mainnet.base.org -sequencer_rpc: https://mainnet-sequencer.base.org -explorer: https://explorer.base.org - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - - - -system_config_addr: "0x73a79Fab69143498Ed3712e519A88a918e1f4072" -batch_inbox_addr: "0xFf00000000000000000000000000000000008453" - -genesis: - l1: # L1 anchor-point of the rollup - hash: "0x5c13d307623a926cd31415036c8b7fa14572f9dac64528e857a470511fc30771" - number: 17481768 - l2: - hash: "0xf712aa9241cc24369b143cf6dce85f0902a9731e70d66818a3a5845b296c73dd" - number: 0 - l2_time: 1686789347 # Thu 15 Jun 2023 00:35:47 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/mainnet/lyra.toml b/superchain/configs/mainnet/lyra.toml new file mode 100644 index 000000000..471008545 --- /dev/null +++ b/superchain/configs/mainnet/lyra.toml @@ -0,0 +1,47 @@ +name = "Lyra Chain" +chain_id = 957 +public_rpc = "https://rpc.lyra.finance" +sequencer_rpc = "https://rpc.lyra.finance" +explorer = "https://explorer.lyra.finance" +superchain_level = 1 +standard_chain_candidate = false +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0x5f7f7f6DB967F0ef10BdA0678964DBA185d16c50" +canyon_time = 1704992401 # Thu 11 Jan 2024 17:00:01 UTC +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 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1700021615 + [genesis.l1] + hash = "0x00b06b23108483a0b6af8ff726b5ed3f508b7986f72c12679b10d72c05839716" + number = 18574841 + [genesis.l2] + hash = "0x047f535b3da7ad4f96d353b5a439740b7591413daee0e2f27dd3aabb24581af2" + number = 0 + [genesis.system_config] + batcherAddress = "0x14e4E97bDc195d399Ad8E7FC14451C279FE04c8e" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0xC845F9C4004EB35a8bde8ad89C4760a9c0e65CAB" + BatchSubmitter = "0x14e4E97bDc195d399Ad8E7FC14451C279FE04c8e" + Challenger = "0x91F4be0C264FAFA1fEd75c4440910Cba2cAd98e8" + Guardian = "0x91F4be0C264FAFA1fEd75c4440910Cba2cAd98e8" + L1CrossDomainMessengerProxy = "0x5456f02c08e9A018E42C39b351328E5AA864174A" + L1ERC721BridgeProxy = "0x6CC3268794c5d3E3d9d52adEfC748B59d536cb22" + L1StandardBridgeProxy = "0x61E44dC0dae6888B5a301887732217d5725B0bFf" + L2OutputOracleProxy = "0x1145E7848c8B64c6cab86Fd6D378733385c5C3Ba" + OptimismMintableERC20FactoryProxy = "0x08Dea366F26C25a08C8D1C3568ad07d1e587136d" + OptimismPortalProxy = "0x85eA9c11cf3D4786027F7FD08F4406b15777e5f8" + Proposer = "0x03e820562ffd2e0390787caD706EaF1FF98C2608" + ProxyAdmin = "0x35d5D43271548c984662d4879FBc8e041Bc1Ff93" + ProxyAdminOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigProxy = "0x0e4C4CDd01ceCB01070E9Fdfe7600871e4ae996e" + UnsafeBlockSigner = "0xB71B58FfE538628557433dbBfA08d45ee5a69B44" diff --git a/superchain/configs/mainnet/lyra.yaml b/superchain/configs/mainnet/lyra.yaml deleted file mode 100644 index 61f11bd7e..000000000 --- a/superchain/configs/mainnet/lyra.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: Lyra Chain -chain_id: 957 -public_rpc: https://rpc.lyra.finance -sequencer_rpc: https://rpc.lyra.finance -explorer: https://explorer.lyra.finance - -superchain_level: 1 -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0x0e4C4CDd01ceCB01070E9Fdfe7600871e4ae996e" -batch_inbox_addr: "0x5f7f7f6DB967F0ef10BdA0678964DBA185d16c50" - -genesis: - l1: # L1 anchor-point of the rollup - hash: "0x00b06b23108483a0b6af8ff726b5ed3f508b7986f72c12679b10d72c05839716" - number: 18574841 - l2: - hash: "0x047f535b3da7ad4f96d353b5a439740b7591413daee0e2f27dd3aabb24581af2" - number: 0 - l2_time: 1700021615 # Wed 15 Nov 2023 04:13:35 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/mainnet/metal.toml b/superchain/configs/mainnet/metal.toml new file mode 100644 index 000000000..09dcc7216 --- /dev/null +++ b/superchain/configs/mainnet/metal.toml @@ -0,0 +1,47 @@ +name = "Metal L2" +chain_id = 1750 +public_rpc = "https://rpc.metall2.com" +sequencer_rpc = "https://rpc.metall2.com" +explorer = "https://explorer.metall2.com" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0xc83f7D9F2D4A76E81145849381ABA02602373723" +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 = 1720627201 # Wed 10 Jul 2024 16:00:01 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1711563515 + [genesis.l1] + hash = "0x2493565ce8472656b7c22377c8d4d8ef5d17f78392c799ca5f2429b01e2c159c" + number = 19527340 + [genesis.l2] + hash = "0xd31c12ffff2d563897ad9a041c0d26790d635911bdbbfa589347fa955f75281e" + number = 0 + [genesis.system_config] + batcherAddress = "0xC94C243f8fb37223F3EB2f7961F7072602A51B8B" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0xd4b1EC0DEc3C7F12abD3ec27B7514880ae1C3a37" + BatchSubmitter = "0xC94C243f8fb37223F3EB2f7961F7072602A51B8B" + Challenger = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + Guardian = "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2" + L1CrossDomainMessengerProxy = "0x0a47A44f1B2bb753474f8c830322554A96C9934D" + L1ERC721BridgeProxy = "0x50D700e97967F9115e3f999bDB263d69F6704680" + L1StandardBridgeProxy = "0x6d0f65D59b55B0FEC5d2d15365154DcADC140BF3" + L2OutputOracleProxy = "0x3B1F7aDa0Fcc26B13515af752Dd07fB1CAc11426" + OptimismMintableERC20FactoryProxy = "0x1aaab4E20d2e4Bb992b5BCA2125e8bd3588c8730" + OptimismPortalProxy = "0x3F37aBdE2C6b5B2ed6F8045787Df1ED1E3753956" + Proposer = "0xC8187d40AD440328104A52BBed2D8Efc5ab1F1F6" + ProxyAdmin = "0x37Ff0ae34dadA1A95A4251d10ef7Caa868c7AC99" + ProxyAdminOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigProxy = "0x7BD909970B0EEdcF078De6Aeff23ce571663b8aA" + UnsafeBlockSigner = "0x4a65F5da5e80DEFfEA844eAa15CE130e80605dc5" diff --git a/superchain/configs/mainnet/metal.yaml b/superchain/configs/mainnet/metal.yaml deleted file mode 100644 index a2252b00c..000000000 --- a/superchain/configs/mainnet/metal.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: Metal L2 -chain_id: 1750 -public_rpc: https://rpc.metall2.com -sequencer_rpc: https://rpc.metall2.com -explorer: https://explorer.metall2.com - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -batch_inbox_addr: "0xc83f7D9F2D4A76E81145849381ABA02602373723" - -genesis: - l1: - hash: "0x2493565ce8472656b7c22377c8d4d8ef5d17f78392c799ca5f2429b01e2c159c" - number: 19527340 - l2: - hash: "0xd31c12ffff2d563897ad9a041c0d26790d635911bdbbfa589347fa955f75281e" - number: 0 - l2_time: 1711563515 - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/mainnet/mode.toml b/superchain/configs/mainnet/mode.toml new file mode 100644 index 000000000..9380482b7 --- /dev/null +++ b/superchain/configs/mainnet/mode.toml @@ -0,0 +1,47 @@ +name = "Mode" +chain_id = 34443 +public_rpc = "https://mainnet.mode.network" +sequencer_rpc = "https://mainnet-sequencer.mode.network" +explorer = "https://explorer.mode.network" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0x24E59d9d3Bd73ccC28Dc54062AF7EF7bFF58Bd67" +canyon_time = 1704992401 # Thu 11 Jan 2024 17:00:01 UTC +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 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1700167583 + [genesis.l1] + hash = "0xf9b1b22a7ef9d13f063ea467bcb70fb6e9f29698ecb7366a2cdf5af2165cacee" + number = 18586927 + [genesis.l2] + hash = "0xb0f682e12fc555fd5ce8fce51a59a67d66a5b46be28611a168260a549dac8a9b" + number = 0 + [genesis.system_config] + batcherAddress = "0x99199a22125034c808ff20f377d91187E8050F2E" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x50eF494573f28Cad6B64C31b7a00Cdaa48306e15" + BatchSubmitter = "0x99199a22125034c808ff20f377d91187E8050F2E" + Challenger = "0x309Fe2536d01867018D120b40e4676723C53A14C" + Guardian = "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2" + L1CrossDomainMessengerProxy = "0x95bDCA6c8EdEB69C98Bd5bd17660BaCef1298A6f" + L1ERC721BridgeProxy = "0x2901dA832a4D0297FF0691100A8E496626cc626D" + L1StandardBridgeProxy = "0x735aDBbE72226BD52e818E7181953f42E3b0FF21" + L2OutputOracleProxy = "0x4317ba146D4933D889518a3e5E11Fe7a53199b04" + OptimismMintableERC20FactoryProxy = "0x69216395A62dFb243C05EF4F1C27AF8655096a95" + OptimismPortalProxy = "0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07" + Proposer = "0x674F64D64Ddc198db83cd9047dF54BF89cCD0ddB" + ProxyAdmin = "0x470d87b1dae09a454A43D1fD772A561a03276aB7" + ProxyAdminOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigProxy = "0x5e6432F18Bc5d497B1Ab2288a025Fbf9D69E2221" + UnsafeBlockSigner = "0xa7fA9CA4ac88686A542C0f830d7378eAB4A0278F" diff --git a/superchain/configs/mainnet/mode.yaml b/superchain/configs/mainnet/mode.yaml deleted file mode 100644 index 2c5416377..000000000 --- a/superchain/configs/mainnet/mode.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: Mode -chain_id: 34443 -public_rpc: https://mainnet.mode.network -sequencer_rpc: https://mainnet-sequencer.mode.network -explorer: https://explorer.mode.network - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain - -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0x5e6432F18Bc5d497B1Ab2288a025Fbf9D69E2221" -batch_inbox_addr: "0x24E59d9d3Bd73ccC28Dc54062AF7EF7bFF58Bd67" - -genesis: - l1: # L1 anchor-point of the rollup - hash: "0xf9b1b22a7ef9d13f063ea467bcb70fb6e9f29698ecb7366a2cdf5af2165cacee" - number: 18586927 - l2: - hash: "0xb0f682e12fc555fd5ce8fce51a59a67d66a5b46be28611a168260a549dac8a9b" - number: 0 - l2_time: 1700167583 # Thu 16 Nov 2023 20:46:23 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/mainnet/op.toml b/superchain/configs/mainnet/op.toml new file mode 100644 index 000000000..e88db7670 --- /dev/null +++ b/superchain/configs/mainnet/op.toml @@ -0,0 +1,53 @@ +name = "OP Mainnet" +chain_id = 10 +public_rpc = "https://mainnet.optimism.io" +sequencer_rpc = "https://mainnet-sequencer.optimism.io" +explorer = "https://explorer.optimism.io" +superchain_level = 2 +standard_chain_candidate = false +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0xFF00000000000000000000000000000000000010" +canyon_time = 1704992401 # Thu 11 Jan 2024 17:00:01 UTC +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 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1686068903 + [genesis.l1] + hash = "0x438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec04108" + number = 17422590 + [genesis.l2] + hash = "0xdbf6a80fef073de06add9b0d14026d6e5a86c85f6d102c36d3d8e9cf89c2afd3" + number = 105235063 + [genesis.system_config] + batcherAddress = "0x6887246668a3b87F54DeB3b94Ba47a6f63F32985" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0xdE1FCfB0851916CA5101820A69b13a4E276bd81F" + AnchorStateRegistryProxy = "0x18DAc71c228D1C32c99489B7323d441E1175e443" + BatchSubmitter = "0x6887246668a3b87F54DeB3b94Ba47a6f63F32985" + Challenger = "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A" + DelayedWETHProxy = "0xE497B094d6DbB3D5E4CaAc9a14696D7572588d14" + DisputeGameFactoryProxy = "0xe5965Ab5962eDc7477C8520243A95517CD252fA9" + FaultDisputeGame = "0x4146DF64D83acB0DcB0c1a4884a16f090165e122" + Guardian = "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2" + L1CrossDomainMessengerProxy = "0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1" + L1ERC721BridgeProxy = "0x5a7749f83b81B301cAb5f48EB8516B986DAef23D" + L1StandardBridgeProxy = "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1" + MIPS = "0x0f8EdFbDdD3c0256A80AD8C0F2560B1807873C9c" + OptimismMintableERC20FactoryProxy = "0x75505a97BD334E7BD3C476893285569C4136Fa0F" + OptimismPortalProxy = "0xbEb5Fc579115071764c7423A4f12eDde41f106Ed" + PermissionedDisputeGame = "0xE9daD167EF4DE8812C1abD013Ac9570C616599A0" + PreimageOracle = "0xD326E10B8186e90F4E2adc5c13a2d0C137ee8b34" + Proposer = "0x473300df21D047806A082244b417f96b32f13A33" + ProxyAdmin = "0x543bA4AADBAb8f9025686Bd03993043599c6fB04" + ProxyAdminOwner = "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A" + SystemConfigOwner = "0x847B5c174615B1B7fDF770882256e2D3E95b9D92" + SystemConfigProxy = "0x229047fed2591dbec1eF1118d64F7aF3dB9EB290" + UnsafeBlockSigner = "0xAAAA45d9549EDA09E70937013520214382Ffc4A2" diff --git a/superchain/configs/mainnet/op.yaml b/superchain/configs/mainnet/op.yaml deleted file mode 100644 index c39ccbe42..000000000 --- a/superchain/configs/mainnet/op.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: OP Mainnet -chain_id: 10 -public_rpc: https://mainnet.optimism.io -sequencer_rpc: https://mainnet-sequencer.optimism.io -explorer: https://explorer.optimism.io - -superchain_level: 2 -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0x229047fed2591dbec1eF1118d64F7aF3dB9EB290" -batch_inbox_addr: "0xFF00000000000000000000000000000000000010" - -genesis: - l1: - hash: "0x438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec04108" - number: 17422590 - l2: - hash: "0xdbf6a80fef073de06add9b0d14026d6e5a86c85f6d102c36d3d8e9cf89c2afd3" - number: 105235063 - l2_time: 1686068903 # Tue 6 Jun 2023 16:28:23 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/mainnet/orderly.toml b/superchain/configs/mainnet/orderly.toml new file mode 100644 index 000000000..52f1ff3b7 --- /dev/null +++ b/superchain/configs/mainnet/orderly.toml @@ -0,0 +1,47 @@ +name = "Orderly Mainnet" +chain_id = 291 +public_rpc = "https://rpc.orderly.network" +sequencer_rpc = "https://rpc.orderly.network" +explorer = "https://explorer.orderly.network" +superchain_level = 1 +standard_chain_candidate = false +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0x08aA34cC843CeEBcC88A627F18430294aA9780be" +canyon_time = 1704992401 # Thu 11 Jan 2024 17:00:01 UTC +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 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1696608227 + [genesis.l1] + hash = "0x787d5dd296d63bc6e7a4158d4f109e1260740ee115f5ed5124b35dece1fa3968" + number = 18292529 + [genesis.l2] + hash = "0xe53c94ddd42714239429bd132ba2fa080c7e5cc7dca816ec6e482ec0418e6d7f" + number = 0 + [genesis.system_config] + batcherAddress = "0xf8dB8Aba597fF36cCD16fECfbb1B816B3236E9b8" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x87630a802a3789463eC4b00f89b27b1e9f6b92e9" + BatchSubmitter = "0xf8dB8Aba597fF36cCD16fECfbb1B816B3236E9b8" + Challenger = "0xcE10372313Ca39Fbf75A09e7f4c0E57F070259f4" + Guardian = "0xcE10372313Ca39Fbf75A09e7f4c0E57F070259f4" + L1CrossDomainMessengerProxy = "0xc76543A64666d9a073FaEF4e75F651c88e7DBC08" + L1ERC721BridgeProxy = "0x934Ab59Ef14b638653b1C0FEf7aB9a72186393DC" + L1StandardBridgeProxy = "0xe07eA0436100918F157DF35D01dCE5c11b16D1F1" + L2OutputOracleProxy = "0x5e76821C3c1AbB9fD6E310224804556C61D860e0" + OptimismMintableERC20FactoryProxy = "0x7a69a90d8ea11E9618855da55D09E6F953730686" + OptimismPortalProxy = "0x91493a61ab83b62943E6dCAa5475Dd330704Cc84" + Proposer = "0x74BaD482a7f73C8286F50D8Aa03e53b7d24A5f3B" + ProxyAdmin = "0xb570F4aD27e7De879A2E4F2F3DE27dBaBc20E9B9" + ProxyAdminOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigProxy = "0x886B187C3D293B1449A3A0F23Ca9e2269E0f2664" + UnsafeBlockSigner = "0xceED24B1Fd4A4393f6A9D2B137D9597dd5482569" diff --git a/superchain/configs/mainnet/orderly.yaml b/superchain/configs/mainnet/orderly.yaml deleted file mode 100644 index 03322474f..000000000 --- a/superchain/configs/mainnet/orderly.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: Orderly Mainnet -chain_id: 291 -public_rpc: https://rpc.orderly.network -sequencer_rpc: https://rpc.orderly.network -explorer: https://explorer.orderly.network - -superchain_level: 1 -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0x886B187C3D293B1449A3A0F23Ca9e2269E0f2664" -batch_inbox_addr: "0x08aA34cC843CeEBcC88A627F18430294aA9780be" - -genesis: - l1: # L1 anchor-point of the rollup - hash: "0x787d5dd296d63bc6e7a4158d4f109e1260740ee115f5ed5124b35dece1fa3968" - number: 18292529 - l2: - hash: "0xe53c94ddd42714239429bd132ba2fa080c7e5cc7dca816ec6e482ec0418e6d7f" - number: 0 - l2_time: 1696608227 # Fri 6 Oct 2023 16:03:47 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/mainnet/pgn.toml b/superchain/configs/mainnet/pgn.toml new file mode 100644 index 000000000..6387d2c8c --- /dev/null +++ b/superchain/configs/mainnet/pgn.toml @@ -0,0 +1,47 @@ +name = "PGN (Public Goods Network)" +chain_id = 424 +public_rpc = "https://rpc.publicgoods.network" +sequencer_rpc = "https://rpc.publicgoods.network" +explorer = "https://explorer.publicgoods.network" +superchain_level = 1 +standard_chain_candidate = false +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0xC1B90E1e459aBBDcEc4DCF90dA45ba077d83BFc5" +canyon_time = 1704992401 # Thu 11 Jan 2024 17:00:01 UTC +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 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1689106727 + [genesis.l1] + hash = "0x8474f830d93f50b27db60ec4dd95c704d05d7b4a39766759955374da78cfb20c" + number = 17672702 + [genesis.l2] + hash = "0x39c02e153c193000f2d2907de42cc49f48329163f71d7f9c3fd0e15f41b529db" + number = 0 + [genesis.system_config] + batcherAddress = "0x99526b0e49A95833E734EB556A6aBaFFAb0Ee167" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x09d5DbA52F0ee2C4A5E94FD5C802bD74Ca9cAD3e" + BatchSubmitter = "0x99526b0e49A95833E734EB556A6aBaFFAb0Ee167" + Challenger = "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84" + Guardian = "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84" + L1CrossDomainMessengerProxy = "0x97BAf688E5d0465E149d1d5B497Ca99392a6760e" + L1ERC721BridgeProxy = "0xaFF0F8aaB6Cc9108D34b3B8423C76d2AF434d115" + L1StandardBridgeProxy = "0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b" + L2OutputOracleProxy = "0xA38d0c4E6319F9045F20318BA5f04CDe94208608" + OptimismMintableERC20FactoryProxy = "0x8A04c7e5b182eb3470073E681bE54b2aB48FBbE8" + OptimismPortalProxy = "0xb26Fd985c5959bBB382BAFdD0b879E149e48116c" + Proposer = "0x69968Ce0E92d9c101BAd81de55EFbcb69603cFe3" + ProxyAdmin = "0xc6A8d2c5d0F068BE745f6A770378F01ca1714cc4" + ProxyAdminOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigProxy = "0x7Df716EAD1d83a2BF35B416B7BC84bd0700357C9" + UnsafeBlockSigner = "0x7916D35b57c2E4AffCaB46C3E5C8d76D3b44d1F7" diff --git a/superchain/configs/mainnet/pgn.yaml b/superchain/configs/mainnet/pgn.yaml deleted file mode 100644 index d8dd814a3..000000000 --- a/superchain/configs/mainnet/pgn.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: PGN (Public Goods Network) -chain_id: 424 -public_rpc: https://rpc.publicgoods.network -sequencer_rpc: https://rpc.publicgoods.network -explorer: https://explorer.publicgoods.network - -superchain_level: 1 -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0x7Df716EAD1d83a2BF35B416B7BC84bd0700357C9" -batch_inbox_addr: "0xC1B90E1e459aBBDcEc4DCF90dA45ba077d83BFc5" - -genesis: - l1: - hash: "0x8474f830d93f50b27db60ec4dd95c704d05d7b4a39766759955374da78cfb20c" - number: 17672702 - l2: - hash: "0x39c02e153c193000f2d2907de42cc49f48329163f71d7f9c3fd0e15f41b529db" - number: 0 - l2_time: 1689106727 # Tue 11 Jul 2023 20:18:47 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/mainnet/superchain.toml b/superchain/configs/mainnet/superchain.toml new file mode 100644 index 000000000..dbbdcdd97 --- /dev/null +++ b/superchain/configs/mainnet/superchain.toml @@ -0,0 +1,13 @@ +name = "Mainnet" +protocol_versions_addr = "0x8062AbC286f5e7D9428a0Ccb9AbD71e50d93b935" +superchain_config_addr = "0x95703e0982140D16f8ebA6d158FccEde42f04a4C" + +canyon_time = 1704992401 # Thu 11 Jan 2024 17:00:01 UTC +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 + +[l1] + chain_id = 1 + public_rpc = "https://ethereum-rpc.publicnode.com" + explorer = "https://etherscan.io" diff --git a/superchain/configs/mainnet/superchain.yaml b/superchain/configs/mainnet/superchain.yaml deleted file mode 100644 index a1168f7c3..000000000 --- a/superchain/configs/mainnet/superchain.yaml +++ /dev/null @@ -1,13 +0,0 @@ -name: Mainnet -l1: - chain_id: 1 - public_rpc: https://ethereum-rpc.publicnode.com - explorer: https://etherscan.io - -protocol_versions_addr: "0x8062AbC286f5e7D9428a0Ccb9AbD71e50d93b935" -superchain_config_addr: "0x95703e0982140D16f8ebA6d158FccEde42f04a4C" - -canyon_time: 1704992401 # Thu 11 Jan 2024 17:00:01 UTC -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 Jul 10 16:00:01 UTC 2024 diff --git a/superchain/configs/mainnet/superlumio.toml b/superchain/configs/mainnet/superlumio.toml new file mode 100644 index 000000000..dd8526fdb --- /dev/null +++ b/superchain/configs/mainnet/superlumio.toml @@ -0,0 +1,42 @@ +name = "SuperLumio" +chain_id = 8866 +public_rpc = "https://mainnet.lumio.io" +sequencer_rpc = "https://mainnet.lumio.io" +explorer = "https://explorer.lumio.io" +superchain_level = 1 +standard_chain_candidate = false +batch_inbox_addr = "0xA12Cf34001e553dc254D131105364351f5174d75" +canyon_time = 1708984633 +delta_time = 1708984633 +ecotone_time = 1710374401 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1708984631 + [genesis.l1] + hash = "0xbe51a75131cf63e18596329bd4f8b805ce8dd6a0b17787d5da10f563616f1f1e" + number = 19314558 + [genesis.l2] + hash = "0x01711dc53a82967a34f4b38f7dff3ae8fa760882bb1e2ace50bb01e9ff420a9b" + number = 0 + [genesis.system_config] + batcherAddress = "0x5c53f2fF1030C7fbC0616fD5B8fC6bE97aa27e00" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x9cF613c19371eFf26c94c0d4F62197d2C0ab60bc" + L1CrossDomainMessengerProxy = "0x6c10d7e5750b21729Eb863Cf89E5b48850E6d97D" + L1ERC721BridgeProxy = "0x9bF59F099d4306B52C7624c90B6d5FD75ab8513b" + L1StandardBridgeProxy = "0xdB5C6b73CB1c5875995a42D64C250BF8BC69a8bc" + L2OutputOracleProxy = "0xffB004874CbBF8692B5f397B602f4B8a630aeD59" + OptimismMintableERC20FactoryProxy = "0xccc6Fc5B866D34a7A4C40455a3cCfaa0cbFc145B" + OptimismPortalProxy = "0x9C93982cb4861311179aE216d1B7fD61232DE1f0" + SystemConfigProxy = "0xFb252d6199AEfeE6938a1c57213AAd96ecD2650c" + ProxyAdmin = "0xA6b2b6B6E621482aF877F304D46B94123a942Ae9" + ProxyAdminOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + Guardian = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + Challenger = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" diff --git a/superchain/configs/mainnet/superlumio.yaml b/superchain/configs/mainnet/superlumio.yaml deleted file mode 100644 index cd838dc8c..000000000 --- a/superchain/configs/mainnet/superlumio.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: SuperLumio -chain_id: 8866 -public_rpc: https://mainnet.lumio.io -sequencer_rpc: https://mainnet.lumio.io -explorer: https://explorer.lumio.io - -superchain_level: 1 - -batch_inbox_addr: "0xA12Cf34001e553dc254D131105364351f5174d75" - -genesis: - l1: - hash: "0xbe51a75131cf63e18596329bd4f8b805ce8dd6a0b17787d5da10f563616f1f1e" - number: 19314558 - l2: - hash: "0x01711dc53a82967a34f4b38f7dff3ae8fa760882bb1e2ace50bb01e9ff420a9b" - number: 0 - l2_time: 1708984631 - -canyon_time: 1708984633 -delta_time: 1708984633 -ecotone_time: 1710374401 # Thu 14 Mar 2024 00:00:01 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/mainnet/zora.toml b/superchain/configs/mainnet/zora.toml new file mode 100644 index 000000000..8d38a2bd1 --- /dev/null +++ b/superchain/configs/mainnet/zora.toml @@ -0,0 +1,47 @@ +name = "Zora" +chain_id = 7777777 +public_rpc = "https://rpc.zora.energy" +sequencer_rpc = "https://rpc.zora.energy" +explorer = "https://explorer.zora.energy" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0x6F54Ca6F6EdE96662024Ffd61BFd18f3f4e34DFf" +canyon_time = 1704992401 # Thu 11 Jan 2024 17:00:01 UTC +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 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1686693839 + [genesis.l1] + hash = "0xbdbd2847f7aa5f7cd1bd4c9f904057f4ba0b498c7e380199c01d240e3a41a84f" + number = 17473923 + [genesis.l2] + hash = "0x47555a45a1af8d4728ca337a1e48375a83919b1ea16591e070a07388b7364e29" + number = 0 + [genesis.system_config] + batcherAddress = "0x625726c858dBF78c0125436C943Bf4b4bE9d9033" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0xEF8115F2733fb2033a7c756402Fc1deaa56550Ef" + BatchSubmitter = "0x625726c858dBF78c0125436C943Bf4b4bE9d9033" + Challenger = "0xcA4571b1ecBeC86Ea2E660d242c1c29FcB55Dc72" + Guardian = "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2" + L1CrossDomainMessengerProxy = "0xdC40a14d9abd6F410226f1E6de71aE03441ca506" + L1ERC721BridgeProxy = "0x83A4521A3573Ca87f3a971B169C5A0E1d34481c3" + L1StandardBridgeProxy = "0x3e2Ea9B92B7E48A52296fD261dc26fd995284631" + L2OutputOracleProxy = "0x9E6204F750cD866b299594e2aC9eA824E2e5f95c" + OptimismMintableERC20FactoryProxy = "0xc52BC7344e24e39dF1bf026fe05C4e6E23CfBcFf" + OptimismPortalProxy = "0x1a0ad011913A150f69f6A19DF447A0CfD9551054" + Proposer = "0x48247032092e7b0ecf5dEF611ad89eaf3fC888Dd" + ProxyAdmin = "0xD4ef175B9e72cAEe9f1fe7660a6Ec19009903b49" + ProxyAdminOwner = "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + SystemConfigOwner = "0xC72aE5c7cc9a332699305E29F68Be66c73b60542" + SystemConfigProxy = "0xA3cAB0126d5F504B071b81a3e8A2BBBF17930d86" + UnsafeBlockSigner = "0x3Dc8Dfd0709C835cAd15a6A27e089FF4cF4C9228" diff --git a/superchain/configs/mainnet/zora.yaml b/superchain/configs/mainnet/zora.yaml deleted file mode 100644 index 13ee6df81..000000000 --- a/superchain/configs/mainnet/zora.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: Zora -chain_id: 7777777 -public_rpc: https://rpc.zora.energy -sequencer_rpc: https://rpc.zora.energy -explorer: https://explorer.zora.energy - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain - -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0xA3cAB0126d5F504B071b81a3e8A2BBBF17930d86" -batch_inbox_addr: "0x6F54Ca6F6EdE96662024Ffd61BFd18f3f4e34DFf" - -genesis: - l1: - hash: "0xbdbd2847f7aa5f7cd1bd4c9f904057f4ba0b498c7e380199c01d240e3a41a84f" - number: 17473923 - l2: - hash: "0x47555a45a1af8d4728ca337a1e48375a83919b1ea16591e070a07388b7364e29" - number: 0 - l2_time: 1686693839 # Tue 13 Jun 2023 22:03:59 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia-dev-0/base-devnet-0.toml b/superchain/configs/sepolia-dev-0/base-devnet-0.toml new file mode 100644 index 000000000..933ee40c4 --- /dev/null +++ b/superchain/configs/sepolia-dev-0/base-devnet-0.toml @@ -0,0 +1,47 @@ +name = "Base devnet 0" +chain_id = 11763072 +public_rpc = "" +sequencer_rpc = "" +explorer = "" +superchain_level = 1 +standard_chain_candidate = false +superchain_time = 1706634000 # Tue 30 Jan 2024 17:00:00 UTC +batch_inbox_addr = "0xfF00000000000000000000000000000011763072" +canyon_time = 1698436800 # Fri 27 Oct 2023 20:00:00 UTC +delta_time = 1706555000 # Mon 29 Jan 2024 19:03:20 UTC +ecotone_time = 1706634000 # Tue 30 Jan 2024 17:00:00 UTC +fjord_time = 1715961600 # Fri 17 May 2024 16:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1695433056 + [genesis.l1] + hash = "0x86252c512dc5bd7201d0532b31d50696ba84344a7cda545e04a98073a8e13d87" + number = 4344216 + [genesis.l2] + hash = "0x1ab91449a7c65b8cd6c06f13e2e7ea2d10b6f9cbf5def79f362f2e7e501d2928" + number = 0 + [genesis.system_config] + batcherAddress = "0x212dD524932bC43478688F91045F2682913ad8EE" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 25000000 + +[addresses] + AddressManager = "0x882a60911d00867Fe4ea632C479cc48e583A8D69" + BatchSubmitter = "0x212dD524932bC43478688F91045F2682913ad8EE" + Challenger = "0x5a533AaAC6cd81605b301a1077BC393A94658B6D" + Guardian = "0x4F43c7422a9b2AC4BC6145Bd4eE206EA73cF8266" + L1CrossDomainMessengerProxy = "0x2cbD403d5BA3949D24ee4dF57805eaC612C2662f" + L1ERC721BridgeProxy = "0xc3016ED03E087d092d576B585F5222fFD9cadc10" + L1StandardBridgeProxy = "0x5638e55db5Fcf7A58df525F1098E8569C8DbA80c" + L2OutputOracleProxy = "0xB5901509329307E3f910f333Fa9C4B4A8EE7CE1A" + OptimismMintableERC20FactoryProxy = "0xEAa11178375e6B1078d815d6F9F85cBbb69b09Cd" + OptimismPortalProxy = "0x579c82A835B884336B632eeBeCC78FA08D3291Ec" + Proposer = "0xBcB04FC753D36dcEeBe9Df7E18E23c46D1fcEA3c" + ProxyAdmin = "0xC5aE9023bFA79124ffA50169E1423E733D0166f1" + ProxyAdminOwner = "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430" + SystemConfigOwner = "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430" + SystemConfigProxy = "0x7F67DC4959cb3E532B10A99F41bDD906C46FdFdE" + UnsafeBlockSigner = "0xfd7bc3C58Fe4D4296F11F7843ebbA84D729A24B9" diff --git a/superchain/configs/sepolia-dev-0/base-devnet-0.yaml b/superchain/configs/sepolia-dev-0/base-devnet-0.yaml deleted file mode 100644 index 18826b589..000000000 --- a/superchain/configs/sepolia-dev-0/base-devnet-0.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: Base devnet 0 -chain_id: 11763072 -public_rpc: "" -sequencer_rpc: "" -explorer: "" - -superchain_level: 1 -superchain_time: 1706634000 # joined from Ecotone - -system_config_addr: "0x7F67DC4959cb3E532B10A99F41bDD906C46FdFdE" -batch_inbox_addr: "0xfF00000000000000000000000000000011763072" - -genesis: - l1: - hash: "0x86252c512dc5bd7201d0532b31d50696ba84344a7cda545e04a98073a8e13d87" - number: 4344216 - l2: - hash: "0x1ab91449a7c65b8cd6c06f13e2e7ea2d10b6f9cbf5def79f362f2e7e501d2928" - number: 0 - l2_time: 1695433056 # Sat 23 Sep 2023 01:37:36 UTC - -canyon_time: 1698436800 # Fri 27 Oct 2023 20:00:00 UTC -delta_time: 1706555000 # Mon 29 Jan 2024 19:03:20 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia-dev-0/oplabs-devnet-0.toml b/superchain/configs/sepolia-dev-0/oplabs-devnet-0.toml new file mode 100644 index 000000000..bcb493f26 --- /dev/null +++ b/superchain/configs/sepolia-dev-0/oplabs-devnet-0.toml @@ -0,0 +1,53 @@ +name = "OP Labs Sepolia devnet 0" +chain_id = 11155421 +public_rpc = "" +sequencer_rpc = "" +explorer = "" +superchain_level = 1 +standard_chain_candidate = false +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0xFf00000000000000000000000000000011155421" +canyon_time = 0 # Thu 1 Jan 1970 00:00:00 UTC +delta_time = 0 # Thu 1 Jan 1970 00:00:00 UTC +ecotone_time = 1706634000 # Tue 30 Jan 2024 17:00:00 UTC +fjord_time = 1715961600 # Fri 17 May 2024 16:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1706484048 + [genesis.l1] + hash = "0x5639be97000fec7131a880b19b664cae43f975c773f628a08a9bb658c2a68df0" + number = 5173577 + [genesis.l2] + hash = "0x027ae1f4f9a441f9c8a01828f3b6d05803a0f524c07e09263264a38b755f804b" + number = 0 + [genesis.system_config] + batcherAddress = "0x19CC7073150D9f5888f09E0e9016d2a39667df14" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x3eb579b25F6b9547e0073c848389a768FD382296" + AnchorStateRegistryProxy = "0x03b82AE60989863BCEb0BbD442A70568e5AefB85" + BatchSubmitter = "0x19CC7073150D9f5888f09E0e9016d2a39667df14" + Challenger = "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2" + DelayedWETHProxy = "0xE99696a028171e31a72828A196C27c2Dd670E1aa" + DisputeGameFactoryProxy = "0x2419423C72998eb1c6c15A235de2f112f8E38efF" + FaultDisputeGame = "0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B" + Guardian = "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2" + L1CrossDomainMessengerProxy = "0x18e72C15FEE4e995454b919EfaA61D8f116F82dd" + L1ERC721BridgeProxy = "0x1bb726658E039E8a9A4ac21A41fE5a0704760461" + L1StandardBridgeProxy = "0x6D8bC564EF04AaF355a10c3eb9b00e349dd077ea" + MIPS = "0xCdD4eabeb5f5d1fD195b15AFBF4eC3CA605Ec8Fe" + OptimismMintableERC20FactoryProxy = "0xA16b8db3b5Cdbaf75158F34034B0537e528E17e2" + OptimismPortalProxy = "0x76114bd29dFcC7a9892240D317E6c7C2A281Ffc6" + PermissionedDisputeGame = "0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC" + PreimageOracle = "0xA6662E943C763b23e82eEf3868E50007C9Af10bf" + Proposer = "0x95014c45078354Ff839f14192228108Eac82E00A" + ProxyAdmin = "0x18d890A46A3556e7F36f28C79F6157BC7a59f867" + ProxyAdminOwner = "0x4377BB0F0103992b31eC12b4d796a8687B8dC8E9" + SystemConfigOwner = "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2" + SystemConfigProxy = "0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7" + UnsafeBlockSigner = "0xa95B83e39AA78B00F12fe431865B563793D97AF5" diff --git a/superchain/configs/sepolia-dev-0/oplabs-devnet-0.yaml b/superchain/configs/sepolia-dev-0/oplabs-devnet-0.yaml deleted file mode 100644 index ef186a09a..000000000 --- a/superchain/configs/sepolia-dev-0/oplabs-devnet-0.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: OP Labs Sepolia devnet 0 -chain_id: 11155421 -public_rpc: "" -sequencer_rpc: "" -explorer: "" - -superchain_level: 1 -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7" -batch_inbox_addr: "0xFf00000000000000000000000000000011155421" - -genesis: - l1: - hash: "0x5639be97000fec7131a880b19b664cae43f975c773f628a08a9bb658c2a68df0" - number: 5173577 - l2: - hash: "0x027ae1f4f9a441f9c8a01828f3b6d05803a0f524c07e09263264a38b755f804b" - number: 0 - l2_time: 1706484048 # Sun 28 Jan 2024 23:20:48 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia-dev-0/superchain.toml b/superchain/configs/sepolia-dev-0/superchain.toml new file mode 100644 index 000000000..268167038 --- /dev/null +++ b/superchain/configs/sepolia-dev-0/superchain.toml @@ -0,0 +1,16 @@ +name = "Sepolia Dev 0" +protocol_versions_addr = "0x252CbE9517F731C618961D890D534183822dcC8d" +superchain_config_addr = "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7" + +canyon_time = 0 +delta_time = 0 +ecotone_time = 1706634000 # Tue 30 Jan 2024 17:00:00 UTC +fjord_time = 1715961600 # Fri May 17 2024 16:00:00 UTC + +block_time = 2 +seq_window_size = 3600 + +[l1] + chain_id = 11155111 + public_rpc = "https://ethereum-sepolia-rpc.publicnode.com" + explorer = "https://sepolia.etherscan.io" diff --git a/superchain/configs/sepolia-dev-0/superchain.yaml b/superchain/configs/sepolia-dev-0/superchain.yaml deleted file mode 100644 index b563132af..000000000 --- a/superchain/configs/sepolia-dev-0/superchain.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: Sepolia Dev 0 -l1: - chain_id: 11155111 - public_rpc: https://ethereum-sepolia-rpc.publicnode.com - explorer: https://sepolia.etherscan.io - -protocol_versions_addr: "0x252CbE9517F731C618961D890D534183822dcC8d" -superchain_config_addr: "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7" - -canyon_time: 0 -delta_time: 0 -ecotone_time: 1706634000 # Tue 30 Jan 2024 17:00:00 UTC -fjord_time: 1715961600 # Fri May 17 16:00:00 UTC 2024 - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia/base.toml b/superchain/configs/sepolia/base.toml new file mode 100644 index 000000000..22c884a66 --- /dev/null +++ b/superchain/configs/sepolia/base.toml @@ -0,0 +1,47 @@ +name = "Base Sepolia Testnet" +chain_id = 84532 +public_rpc = "https://sepolia.base.org" +sequencer_rpc = "https://sepolia-sequencer.base.org" +explorer = "https://sepolia-explorer.base.org" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0xfF00000000000000000000000000000000084532" +canyon_time = 1699981200 # Tue 14 Nov 2023 17:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +ecotone_time = 1708534800 # Wed 21 Feb 2024 17:00:00 UTC +fjord_time = 1716998400 # Wed 29 May 2024 16:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1695768288 + [genesis.l1] + hash = "0xcac9a83291d4dec146d6f7f69ab2304f23f5be87b1789119a0c5b1e4482444ed" + number = 4370868 + [genesis.l2] + hash = "0x0dcc9e089e30b90ddfc55be9a37dd15bc551aeee999d2e2b51414c54eaf934e4" + number = 0 + [genesis.system_config] + batcherAddress = "0x6CDEbe940BC0F26850285cacA097C11c33103E47" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 25000000 + +[addresses] + AddressManager = "0x709c2B8ef4A9feFc629A8a2C1AF424Dc5BD6ad1B" + BatchSubmitter = "0x6CDEbe940BC0F26850285cacA097C11c33103E47" + Challenger = "0xDa3037Ff70Ac92CD867c683BD807e5A484857405" + Guardian = "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E" + L1CrossDomainMessengerProxy = "0xC34855F4De64F1840e5686e64278da901e261f20" + L1ERC721BridgeProxy = "0x21eFD066e581FA55Ef105170Cc04d74386a09190" + L1StandardBridgeProxy = "0xfd0Bf71F60660E2f608ed56e1659C450eB113120" + L2OutputOracleProxy = "0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254" + OptimismMintableERC20FactoryProxy = "0xb1efB9650aD6d0CC1ed3Ac4a0B7f1D5732696D37" + OptimismPortalProxy = "0x49f53e41452C74589E85cA1677426Ba426459e85" + Proposer = "0x20044a0d104E9e788A0C984A2B7eAe615afD046b" + ProxyAdmin = "0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3" + ProxyAdminOwner = "0x0fe884546476dDd290eC46318785046ef68a0BA9" + SystemConfigOwner = "0x0fe884546476dDd290eC46318785046ef68a0BA9" + SystemConfigProxy = "0xf272670eb55e895584501d564AfEB048bEd26194" + UnsafeBlockSigner = "0xb830b99c95Ea32300039624Cb567d324D4b1D83C" diff --git a/superchain/configs/sepolia/base.yaml b/superchain/configs/sepolia/base.yaml deleted file mode 100644 index b5c6ec766..000000000 --- a/superchain/configs/sepolia/base.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: Base Sepolia Testnet -chain_id: 84532 -public_rpc: https://sepolia.base.org -sequencer_rpc: https://sepolia-sequencer.base.org -explorer: https://sepolia-explorer.base.org - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain - -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0xf272670eb55e895584501d564AfEB048bEd26194" -batch_inbox_addr: "0xfF00000000000000000000000000000000084532" - -genesis: - l1: # L1 anchor-point of the rollup - hash: "0xcac9a83291d4dec146d6f7f69ab2304f23f5be87b1789119a0c5b1e4482444ed" - number: 4370868 - l2: - hash: "0x0dcc9e089e30b90ddfc55be9a37dd15bc551aeee999d2e2b51414c54eaf934e4" - number: 0 - l2_time: 1695768288 # Tue 26 Sep 2023 22:44:48 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia/metal.toml b/superchain/configs/sepolia/metal.toml new file mode 100644 index 000000000..f400dbacb --- /dev/null +++ b/superchain/configs/sepolia/metal.toml @@ -0,0 +1,42 @@ +name = "Metal L2 Testnet" +chain_id = 1740 +public_rpc = "https://testnet.rpc.metall2.com" +sequencer_rpc = "https://testnet.rpc.metall2.com" +explorer = "https://testnet.explorer.metall2.com" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +batch_inbox_addr = "0x24567B64a86A4c966655fba6502a93dFb701E316" +canyon_time = 1708129622 +delta_time = 1708385400 +ecotone_time = 1708534800 +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1708129620 + [genesis.l1] + hash = "0x6a10927c70985f75898c48235b620acb2a48e9c777a40022f9dbad1b0c96a9c1" + number = 5304030 + [genesis.l2] + hash = "0xd24cf8e46b189b0c128dab4e46168520e3a4cdd390b239e8cc1e5abd22a629ae" + number = 0 + [genesis.system_config] + batcherAddress = "0xdb80Eca386AC72a55510e33CF9CF7533e75916eE" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x394f844B9A0FC876935d1b0b791D9e94Ad905e8b" + L1CrossDomainMessengerProxy = "0x5D335Aa7d93102110879e3B54985c5F08146091E" + L1ERC721BridgeProxy = "0x5d6cE6917dBeeacF010c96BfFdaBE89e33a30309" + L1StandardBridgeProxy = "0x21530aAdF4DCFb9c477171400E40d4ef615868BE" + L2OutputOracleProxy = "0x75a6B961c8da942Ee03CA641B09C322549f6FA98" + OptimismMintableERC20FactoryProxy = "0x49Ff2C4be882298e8CA7DeCD195c207c42B45F66" + OptimismPortalProxy = "0x01D4dfC994878682811b2980653D03E589f093cB" + SystemConfigProxy = "0x5D63A8Dc2737cE771aa4a6510D063b6Ba2c4f6F2" + ProxyAdmin = "0xF7Bc4b3a78C7Dd8bE9B69B3128EEB0D6776Ce18A" + ProxyAdminOwner = "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD" + SystemConfigOwner = "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C" + Guardian = "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E" + Challenger = "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7" diff --git a/superchain/configs/sepolia/metal.yaml b/superchain/configs/sepolia/metal.yaml deleted file mode 100644 index d13b77295..000000000 --- a/superchain/configs/sepolia/metal.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: Metal L2 Testnet -chain_id: 1740 -public_rpc: https://testnet.rpc.metall2.com -sequencer_rpc: https://testnet.rpc.metall2.com -explorer: https://testnet.explorer.metall2.com - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain -superchain_time: null # Missing hardfork times are NOT yet inherited from superchain.yaml - -batch_inbox_addr: "0x24567B64a86A4c966655fba6502a93dFb701E316" - -genesis: - l1: - hash: "0x6a10927c70985f75898c48235b620acb2a48e9c777a40022f9dbad1b0c96a9c1" - number: 5304030 - l2: - hash: "0xd24cf8e46b189b0c128dab4e46168520e3a4cdd390b239e8cc1e5abd22a629ae" - number: 0 - l2_time: 1708129620 - -canyon_time: 1708129622 -delta_time: 1708385400 # Mon 19 Feb 2024 23:30:00 UTC -ecotone_time: 1708534800 # Wed 21 Feb 2024 17:00:00 UTC -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia/mode.toml b/superchain/configs/sepolia/mode.toml new file mode 100644 index 000000000..e2f9952e9 --- /dev/null +++ b/superchain/configs/sepolia/mode.toml @@ -0,0 +1,47 @@ +name = "Mode Testnet" +chain_id = 919 +public_rpc = "https://sepolia.mode.network" +sequencer_rpc = "https://sepolia.mode.network" +explorer = "https://sepolia.explorer.mode.network" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +superchain_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +batch_inbox_addr = "0xcDDaE6148dA1E003C230E4527f9baEdc8a204e7E" +canyon_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +ecotone_time = 1708534800 # Wed 21 Feb 2024 17:00:00 UTC +fjord_time = 1716998400 # Wed 29 May 2024 16:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1687867932 + [genesis.l1] + hash = "0x4370cafe528a1b8f2aaffc578094731daf69ff82fd9edc30d2d842d3763f3410" + number = 3778382 + [genesis.l2] + hash = "0x13c352562289a88ed33087a51b6b6c859a27709c8555c9def7cb9757c043acad" + number = 0 + [genesis.system_config] + batcherAddress = "0x4e6BD53883107B063c502dDd49F9600Dc51b3DDc" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x83D45725d6562d8CD717673D6bb4c67C07dC1905" + BatchSubmitter = "0x4e6BD53883107B063c502dDd49F9600Dc51b3DDc" + Challenger = "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7" + Guardian = "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E" + L1CrossDomainMessengerProxy = "0xc19a60d9E8C27B9A43527c3283B4dd8eDC8bE15C" + L1ERC721BridgeProxy = "0x015a8c2e0a5fEd579dbb05fd290e413Adc6FC24A" + L1StandardBridgeProxy = "0xbC5C679879B2965296756CD959C3C739769995E2" + L2OutputOracleProxy = "0x2634BD65ba27AB63811c74A63118ACb312701Bfa" + OptimismMintableERC20FactoryProxy = "0x00F7ab8c72D32f55cFf15e8901C2F9f2BF29A3C0" + OptimismPortalProxy = "0x320e1580effF37E008F1C92700d1eBa47c1B23fD" + Proposer = "0xe9e08A478e3a773c1B5D59014A0FDb901e6d1d69" + ProxyAdmin = "0xE7413127F29E050Df65ac3FC9335F85bB10091AE" + ProxyAdminOwner = "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD" + SystemConfigOwner = "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C" + SystemConfigProxy = "0x15cd4f6e0CE3B4832B33cB9c6f6Fe6fc246754c2" + UnsafeBlockSigner = "0x93A14E6894eEB4FF6a373E1Ad4f498c3a207afe4" diff --git a/superchain/configs/sepolia/mode.yaml b/superchain/configs/sepolia/mode.yaml deleted file mode 100644 index bdf182643..000000000 --- a/superchain/configs/sepolia/mode.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: Mode Testnet -chain_id: 919 -public_rpc: https://sepolia.mode.network -sequencer_rpc: https://sepolia.mode.network -explorer: https://sepolia.explorer.mode.network - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain - -superchain_time: 1703203200 # Fri 22 Dec 2023 00:00:00 UTC - -batch_inbox_addr: "0xcDDaE6148dA1E003C230E4527f9baEdc8a204e7E" - -genesis: - l1: - hash: "0x4370cafe528a1b8f2aaffc578094731daf69ff82fd9edc30d2d842d3763f3410" - number: 3778382 - l2: - hash: "0x13c352562289a88ed33087a51b6b6c859a27709c8555c9def7cb9757c043acad" - number: 0 - l2_time: 1687867932 - -canyon_time: 1703203200 # Fri 22 Dec 2023 00:00:00 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia/op.toml b/superchain/configs/sepolia/op.toml new file mode 100644 index 000000000..21250fc23 --- /dev/null +++ b/superchain/configs/sepolia/op.toml @@ -0,0 +1,53 @@ +name = "OP Sepolia Testnet" +chain_id = 11155420 +public_rpc = "https://sepolia.optimism.io" +sequencer_rpc = "https://sepolia-sequencer.optimism.io" +explorer = "https://sepolia-optimistic.etherscan.io" +superchain_level = 2 +standard_chain_candidate = false +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0xff00000000000000000000000000000011155420" +canyon_time = 1699981200 # Tue 14 Nov 2023 17:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +ecotone_time = 1708534800 # Wed 21 Feb 2024 17:00:00 UTC +fjord_time = 1716998400 # Wed 29 May 2024 16:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1691802540 + [genesis.l1] + hash = "0x48f520cf4ddaf34c8336e6e490632ea3cf1e5e93b0b2bc6e917557e31845371b" + number = 4071408 + [genesis.l2] + hash = "0x102de6ffb001480cc9b8b548fd05c34cd4f46ae4aa91759393db90ea0409887d" + number = 0 + [genesis.system_config] + batcherAddress = "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x9bFE9c5609311DF1c011c47642253B78a4f33F4B" + AnchorStateRegistryProxy = "0x218CD9489199F321E1177b56385d333c5B598629" + BatchSubmitter = "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c" + Challenger = "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301" + DelayedWETHProxy = "0xF3D833949133e4E4D3551343494b34079598EA5a" + DisputeGameFactoryProxy = "0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1" + FaultDisputeGame = "0xD5Bc8c45692aada756f2d68f0a2002d6Bf130C42" + Guardian = "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E" + L1CrossDomainMessengerProxy = "0x58Cc85b8D04EA49cC6DBd3CbFFd00B4B8D6cb3ef" + L1ERC721BridgeProxy = "0xd83e03D576d23C9AEab8cC44Fa98d058D2176D1f" + L1StandardBridgeProxy = "0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1" + MIPS = "0xFF760A87E41144b336E29b6D4582427dEBdB6dee" + OptimismMintableERC20FactoryProxy = "0x868D59fF9710159C2B330Cc0fBDF57144dD7A13b" + OptimismPortalProxy = "0x16Fc5058F25648194471939df75CF27A2fdC48BC" + PermissionedDisputeGame = "0xBEA4384faCBcf51279962fbCFb8f16F9eD2fe0C6" + PreimageOracle = "0x627F825CBd48c4102d36f287be71f4234426b9e4" + Proposer = "0x49277EE36A024120Ee218127354c4a3591dc90A9" + ProxyAdmin = "0x189aBAAaa82DfC015A588A7dbaD6F13b1D3485Bc" + ProxyAdminOwner = "0x1Eb2fFc903729a0F03966B917003800b145F56E2" + SystemConfigOwner = "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301" + SystemConfigProxy = "0x034edD2A225f7f429A63E0f1D2084B9E0A93b538" + UnsafeBlockSigner = "0x57CACBB0d30b01eb2462e5dC940c161aff3230D3" diff --git a/superchain/configs/sepolia/op.yaml b/superchain/configs/sepolia/op.yaml deleted file mode 100644 index 3965bde30..000000000 --- a/superchain/configs/sepolia/op.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: OP Sepolia Testnet -chain_id: 11155420 -public_rpc: "https://sepolia.optimism.io" -sequencer_rpc: "https://sepolia-sequencer.optimism.io" -explorer: "https://sepolia-optimistic.etherscan.io" - -superchain_level: 2 -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0x034edD2A225f7f429A63E0f1D2084B9E0A93b538" -batch_inbox_addr: "0xff00000000000000000000000000000011155420" - -genesis: - l1: - hash: "0x48f520cf4ddaf34c8336e6e490632ea3cf1e5e93b0b2bc6e917557e31845371b" - number: 4071408 - l2: - hash: "0x102de6ffb001480cc9b8b548fd05c34cd4f46ae4aa91759393db90ea0409887d" - number: 0 - l2_time: 1691802540 # Sat 12 Aug 2023 01:09:00 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia/pgn.toml b/superchain/configs/sepolia/pgn.toml new file mode 100644 index 000000000..0b8d80a1c --- /dev/null +++ b/superchain/configs/sepolia/pgn.toml @@ -0,0 +1,47 @@ +name = "Sepolia PGN (Public Goods Network)" +chain_id = 58008 +public_rpc = "https://sepolia.publicgoods.network" +sequencer_rpc = "https://sepolia.publicgoods.network" +explorer = "https://explorer.sepolia.publicgoods.network" +superchain_level = 1 +standard_chain_candidate = false +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0x454A2A86132C937AD4eFc8721f1b85418f92cbCe" +canyon_time = 1699981200 # Tue 14 Nov 2023 17:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +ecotone_time = 1708534800 # Wed 21 Feb 2024 17:00:00 UTC +fjord_time = 1716998400 # Wed 29 May 2024 16:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1685727972 + [genesis.l1] + hash = "0x41dc2afe8963b5ca8e1c7457ffc356acb4366c6fef6bec353b1463245f02cd8b" + number = 3610357 + [genesis.l2] + hash = "0x1d2ad9a8139d33161b1915698d2ae94019fd0817f2113198b6cb568110fa16ad" + number = 0 + [genesis.system_config] + batcherAddress = "0x7224e05E6cF6E07aFBE1eFa09a3fA23A637DD485" + overhead = "0x0000000000000000000000000000000000000000000000000000000000000834" + scalar = "0x00000000000000000000000000000000000000000000000000000000000f4240" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x0Ad91488288BBe60ff38258785568A6D1EB3B983" + BatchSubmitter = "0x7224e05E6cF6E07aFBE1eFa09a3fA23A637DD485" + Challenger = "0x69F0FFc19504B57e9AE4B6D7694d028c3CD876F8" + Guardian = "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7" + L1CrossDomainMessengerProxy = "0x97f3558Ce48FE71B8CeFA5497708A49531D5A8E1" + L1ERC721BridgeProxy = "0xBA8397B6f255618D5985d0fB427D8c0496F3a5FA" + L1StandardBridgeProxy = "0xFaE6abCAF30D23e233AC7faF747F2fC3a5a6Bfa3" + L2OutputOracleProxy = "0xD5bAc3152ffC25318F848B3DD5dA6C85171BaEEe" + OptimismMintableERC20FactoryProxy = "0x0167EF3188FDaa2661e4530A4623Ee1aB4555683" + OptimismPortalProxy = "0xF04BdD5353Bb0EFF6CA60CfcC78594278eBfE179" + Proposer = "0xD457799C5ba870D609f21048c67a9b11aC611BF0" + ProxyAdmin = "0x5f336973dabaD13409EA93416b8487D92769e457" + ProxyAdminOwner = "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C" + SystemConfigOwner = "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C" + SystemConfigProxy = "0x4BCCC52151f0ad7C62D45Ce0aA77d9d8ffCE534e" + UnsafeBlockSigner = "0x91Bf8996f15B128FDDC80e170FD1aA2C52659A4e" diff --git a/superchain/configs/sepolia/pgn.yaml b/superchain/configs/sepolia/pgn.yaml deleted file mode 100644 index ae8346b71..000000000 --- a/superchain/configs/sepolia/pgn.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: Sepolia PGN (Public Goods Network) -chain_id: 58008 -public_rpc: https://sepolia.publicgoods.network -sequencer_rpc: https://sepolia.publicgoods.network -explorer: https://explorer.sepolia.publicgoods.network - -superchain_level: 1 -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0x4BCCC52151f0ad7C62D45Ce0aA77d9d8ffCE534e" -batch_inbox_addr: "0x454A2A86132C937AD4eFc8721f1b85418f92cbCe" - -genesis: - l1: - hash: "0x41dc2afe8963b5ca8e1c7457ffc356acb4366c6fef6bec353b1463245f02cd8b" - number: 3610357 - l2: - hash: "0x1d2ad9a8139d33161b1915698d2ae94019fd0817f2113198b6cb568110fa16ad" - number: 0 - l2_time: 1685727972 # Fri 2 Jun 2023 17:46:12 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/configs/sepolia/superchain.toml b/superchain/configs/sepolia/superchain.toml new file mode 100644 index 000000000..404f5f5ba --- /dev/null +++ b/superchain/configs/sepolia/superchain.toml @@ -0,0 +1,13 @@ +name = "Sepolia" +protocol_versions_addr = "0x79ADD5713B383DAa0a138d3C4780C7A1804a8090" +superchain_config_addr = "0xC2Be75506d5724086DEB7245bd260Cc9753911Be" + +canyon_time = 1699981200 # Tue 14 Nov 2023 17:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +ecotone_time = 1708534800 # Wed 21 Feb 2024 17:00:00 UTC +fjord_time = 1716998400 # Wed 29 May 2024 16:00:00 UTC + +[l1] + chain_id = 11155111 + public_rpc = "https://ethereum-sepolia-rpc.publicnode.com" + explorer = "https://sepolia.etherscan.io" diff --git a/superchain/configs/sepolia/superchain.yaml b/superchain/configs/sepolia/superchain.yaml deleted file mode 100644 index 951c1a4e6..000000000 --- a/superchain/configs/sepolia/superchain.yaml +++ /dev/null @@ -1,13 +0,0 @@ -name: Sepolia -l1: - chain_id: 11155111 - public_rpc: https://ethereum-sepolia-rpc.publicnode.com - explorer: https://sepolia.etherscan.io - -protocol_versions_addr: "0x79ADD5713B383DAa0a138d3C4780C7A1804a8090" -superchain_config_addr: "0xC2Be75506d5724086DEB7245bd260Cc9753911Be" - -canyon_time: 1699981200 # Tue 14 Nov 2023 17:00:00 UTC -delta_time: 1703203200 # Fri 22 Dec 2023 00:00:00 UTC -ecotone_time: 1708534800 # Wed 21 Feb 2024 17:00:00 UTC -fjord_time: 1716998400 # Wed May 29 16:00:00 UTC 2024 diff --git a/superchain/configs/sepolia/zora.toml b/superchain/configs/sepolia/zora.toml new file mode 100644 index 000000000..349854283 --- /dev/null +++ b/superchain/configs/sepolia/zora.toml @@ -0,0 +1,47 @@ +name = "Zora Sepolia Testnet" +chain_id = 999999999 +public_rpc = "https://sepolia.rpc.zora.energy" +sequencer_rpc = "https://sepolia.rpc.zora.energy" +explorer = "https://sepolia.explorer.zora.energy" +superchain_level = 1 +standard_chain_candidate = true # This is a temporary field which causes most of the standard validation checks to run on this chain +superchain_time = 0 # Missing hardfork times are inherited from superchain.toml +batch_inbox_addr = "0xCd734290E4bd0200dAC631c7D4b9E8a33234e91f" +canyon_time = 1699981200 # Tue 14 Nov 2023 17:00:00 UTC +delta_time = 1703203200 # Fri 22 Dec 2023 00:00:00 UTC +ecotone_time = 1708534800 # Wed 21 Feb 2024 17:00:00 UTC +fjord_time = 1716998400 # Wed 29 May 2024 16:00:00 UTC +block_time = 2 +seq_window_size = 3600 + +[genesis] + l2_time = 1698080004 + [genesis.l1] + hash = "0xf782446a2487d900addb5d466a8597c7c543b59fa9aaa154d413830238f8798a" + number = 4548041 + [genesis.l2] + hash = "0x8b17d2d52564a5a90079d9c860e1386272579e87b17ea27a3868513f53facd74" + number = 0 + [genesis.system_config] + batcherAddress = "0x3Cd868E221A3be64B161D596A7482257a99D857f" + overhead = "0x00000000000000000000000000000000000000000000000000000000000000bc" + scalar = "0x00000000000000000000000000000000000000000000000000000000000a6fe0" + gasLimit = 30000000 + +[addresses] + AddressManager = "0x27c9392144DFcB6dab113F737356C32435cD1D55" + BatchSubmitter = "0x3Cd868E221A3be64B161D596A7482257a99D857f" + Challenger = "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7" + Guardian = "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E" + L1CrossDomainMessengerProxy = "0x1bDBC0ae22bEc0c2f08B4dd836944b3E28fe9b7A" + L1ERC721BridgeProxy = "0x16B0a4f451c4CB567703367e587E15Ac108e4311" + L1StandardBridgeProxy = "0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB" + L2OutputOracleProxy = "0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9" + OptimismMintableERC20FactoryProxy = "0x5F3bdd57f01e88cE2F88f00685D30D6eb51A187c" + OptimismPortalProxy = "0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f" + Proposer = "0xe8326a5839175dE7f467e66D8bB443aa70DA1c3e" + ProxyAdmin = "0xE17071F4C216Eb189437fbDBCc16Bb79c4efD9c2" + ProxyAdminOwner = "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD" + SystemConfigOwner = "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C" + SystemConfigProxy = "0xB54c7BFC223058773CF9b739cC5bd4095184Fb08" + UnsafeBlockSigner = "0x3609513933100689bd1f84782529A99239842344" diff --git a/superchain/configs/sepolia/zora.yaml b/superchain/configs/sepolia/zora.yaml deleted file mode 100644 index ca53870e9..000000000 --- a/superchain/configs/sepolia/zora.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: Zora Sepolia Testnet -chain_id: 999999999 -public_rpc: "https://sepolia.rpc.zora.energy" -sequencer_rpc: "https://sepolia.rpc.zora.energy" -explorer: "https://sepolia.explorer.zora.energy" - -superchain_level: 1 -standard_chain_candidate: true # This is a temporary field which causes most of the standard validation checks to run on this chain - -superchain_time: 0 # Missing hardfork times are inherited from superchain.yaml - -system_config_addr: "0xB54c7BFC223058773CF9b739cC5bd4095184Fb08" -batch_inbox_addr: "0xCd734290E4bd0200dAC631c7D4b9E8a33234e91f" - -genesis: - l1: - hash: "0xf782446a2487d900addb5d466a8597c7c543b59fa9aaa154d413830238f8798a" - number: 4548041 - l2: - hash: "0x8b17d2d52564a5a90079d9c860e1386272579e87b17ea27a3868513f53facd74" - number: 0 - l2_time: 1698080004 # Mon 23 Oct 2023 16:53:24 UTC - -block_time: 2 -seq_window_size: 3600 diff --git a/superchain/extra/addresses/addresses.json b/superchain/extra/addresses/addresses.json index e7575ea99..be3a6e595 100644 --- a/superchain/extra/addresses/addresses.json +++ b/superchain/extra/addresses/addresses.json @@ -1,320 +1,320 @@ { "10": { "AddressManager": "0xdE1FCfB0851916CA5101820A69b13a4E276bd81F", + "AnchorStateRegistryProxy": "0x18DAc71c228D1C32c99489B7323d441E1175e443", + "BatchSubmitter": "0x6887246668a3b87F54DeB3b94Ba47a6f63F32985", + "Challenger": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", + "DelayedWETHProxy": "0xE497B094d6DbB3D5E4CaAc9a14696D7572588d14", + "DisputeGameFactoryProxy": "0xe5965Ab5962eDc7477C8520243A95517CD252fA9", + "FaultDisputeGame": "0x4146DF64D83acB0DcB0c1a4884a16f090165e122", + "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1", "L1ERC721BridgeProxy": "0x5a7749f83b81B301cAb5f48EB8516B986DAef23D", "L1StandardBridgeProxy": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1", + "MIPS": "0x0f8EdFbDdD3c0256A80AD8C0F2560B1807873C9c", "OptimismMintableERC20FactoryProxy": "0x75505a97BD334E7BD3C476893285569C4136Fa0F", "OptimismPortalProxy": "0xbEb5Fc579115071764c7423A4f12eDde41f106Ed", - "ProxyAdmin": "0x543bA4AADBAb8f9025686Bd03993043599c6fB04", - "SystemConfigProxy": "0x229047fed2591dbec1eF1118d64F7aF3dB9EB290", - "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", - "SystemConfigOwner": "0x847B5c174615B1B7fDF770882256e2D3E95b9D92", - "DisputeGameFactoryProxy": "0xe5965Ab5962eDc7477C8520243A95517CD252fA9", - "AnchorStateRegistryProxy": "0x18DAc71c228D1C32c99489B7323d441E1175e443", - "DelayedWETHProxy": "0xE497B094d6DbB3D5E4CaAc9a14696D7572588d14", - "FaultDisputeGame": "0x4146DF64D83acB0DcB0c1a4884a16f090165e122", "PermissionedDisputeGame": "0xE9daD167EF4DE8812C1abD013Ac9570C616599A0", "PreimageOracle": "0xD326E10B8186e90F4E2adc5c13a2d0C137ee8b34", - "MIPS": "0x0f8EdFbDdD3c0256A80AD8C0F2560B1807873C9c", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", "Proposer": "0x473300df21D047806A082244b417f96b32f13A33", - "UnsafeBlockSigner": "0xAAAA45d9549EDA09E70937013520214382Ffc4A2", - "BatchSubmitter": "0x6887246668a3b87F54DeB3b94Ba47a6f63F32985" - }, - "291": { - "OptimismMintableERC20FactoryProxy": "0x7a69a90d8ea11E9618855da55D09E6F953730686", - "SystemConfigProxy": "0x886B187C3D293B1449A3A0F23Ca9e2269E0f2664", - "L1ERC721BridgeProxy": "0x934Ab59Ef14b638653b1C0FEf7aB9a72186393DC", - "OptimismPortalProxy": "0x91493a61ab83b62943E6dCAa5475Dd330704Cc84", - "L1CrossDomainMessengerProxy": "0xc76543A64666d9a073FaEF4e75F651c88e7DBC08", - "L2OutputOracleProxy": "0x5e76821C3c1AbB9fD6E310224804556C61D860e0", - "ProxyAdmin": "0xb570F4aD27e7De879A2E4F2F3DE27dBaBc20E9B9", - "AddressManager": "0x87630a802a3789463eC4b00f89b27b1e9f6b92e9", - "L1StandardBridgeProxy": "0xe07eA0436100918F157DF35D01dCE5c11b16D1F1", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0xcE10372313Ca39Fbf75A09e7f4c0E57F070259f4", - "Challenger": "0xcE10372313Ca39Fbf75A09e7f4c0E57F070259f4", - "UnsafeBlockSigner": "0xceED24B1Fd4A4393f6A9D2B137D9597dd5482569", - "BatchSubmitter": "0xf8dB8Aba597fF36cCD16fECfbb1B816B3236E9b8", - "Proposer": "0x74BaD482a7f73C8286F50D8Aa03e53b7d24A5f3B" - }, - "424": { - "AddressManager": "0x09d5DbA52F0ee2C4A5E94FD5C802bD74Ca9cAD3e", - "L1CrossDomainMessengerProxy": "0x97BAf688E5d0465E149d1d5B497Ca99392a6760e", - "L1ERC721BridgeProxy": "0xaFF0F8aaB6Cc9108D34b3B8423C76d2AF434d115", - "L1StandardBridgeProxy": "0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b", - "L2OutputOracleProxy": "0xA38d0c4E6319F9045F20318BA5f04CDe94208608", - "OptimismMintableERC20FactoryProxy": "0x8A04c7e5b182eb3470073E681bE54b2aB48FBbE8", - "OptimismPortalProxy": "0xb26Fd985c5959bBB382BAFdD0b879E149e48116c", - "ProxyAdmin": "0xc6A8d2c5d0F068BE745f6A770378F01ca1714cc4", - "SystemConfigProxy": "0x7Df716EAD1d83a2BF35B416B7BC84bd0700357C9", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84", - "Challenger": "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84", - "UnsafeBlockSigner": "0x7916D35b57c2E4AffCaB46C3E5C8d76D3b44d1F7", - "BatchSubmitter": "0x99526b0e49A95833E734EB556A6aBaFFAb0Ee167", - "Proposer": "0x69968Ce0E92d9c101BAd81de55EFbcb69603cFe3" + "ProxyAdmin": "0x543bA4AADBAb8f9025686Bd03993043599c6fB04", + "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", + "SystemConfigOwner": "0x847B5c174615B1B7fDF770882256e2D3E95b9D92", + "SystemConfigProxy": "0x229047fed2591dbec1eF1118d64F7aF3dB9EB290", + "UnsafeBlockSigner": "0xAAAA45d9549EDA09E70937013520214382Ffc4A2" }, - "919": { - "AddressManager": "0x83D45725d6562d8CD717673D6bb4c67C07dC1905", - "L1CrossDomainMessengerProxy": "0xc19a60d9E8C27B9A43527c3283B4dd8eDC8bE15C", - "L1ERC721BridgeProxy": "0x015a8c2e0a5fEd579dbb05fd290e413Adc6FC24A", - "L1StandardBridgeProxy": "0xbC5C679879B2965296756CD959C3C739769995E2", - "L2OutputOracleProxy": "0x2634BD65ba27AB63811c74A63118ACb312701Bfa", - "OptimismMintableERC20FactoryProxy": "0x00F7ab8c72D32f55cFf15e8901C2F9f2BF29A3C0", - "OptimismPortalProxy": "0x320e1580effF37E008F1C92700d1eBa47c1B23fD", - "SystemConfigProxy": "0x15cd4f6e0CE3B4832B33cB9c6f6Fe6fc246754c2", - "ProxyAdmin": "0xE7413127F29E050Df65ac3FC9335F85bB10091AE", - "ProxyAdminOwner": "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD", - "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", + "11155420": { + "AddressManager": "0x9bFE9c5609311DF1c011c47642253B78a4f33F4B", + "AnchorStateRegistryProxy": "0x218CD9489199F321E1177b56385d333c5B598629", + "BatchSubmitter": "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c", + "Challenger": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", + "DelayedWETHProxy": "0xF3D833949133e4E4D3551343494b34079598EA5a", + "DisputeGameFactoryProxy": "0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1", + "FaultDisputeGame": "0xD5Bc8c45692aada756f2d68f0a2002d6Bf130C42", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", - "UnsafeBlockSigner": "0x93A14E6894eEB4FF6a373E1Ad4f498c3a207afe4", - "BatchSubmitter": "0x4e6BD53883107B063c502dDd49F9600Dc51b3DDc", - "Proposer": "0xe9e08A478e3a773c1B5D59014A0FDb901e6d1d69" + "L1CrossDomainMessengerProxy": "0x58Cc85b8D04EA49cC6DBd3CbFFd00B4B8D6cb3ef", + "L1ERC721BridgeProxy": "0xd83e03D576d23C9AEab8cC44Fa98d058D2176D1f", + "L1StandardBridgeProxy": "0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1", + "MIPS": "0xFF760A87E41144b336E29b6D4582427dEBdB6dee", + "OptimismMintableERC20FactoryProxy": "0x868D59fF9710159C2B330Cc0fBDF57144dD7A13b", + "OptimismPortalProxy": "0x16Fc5058F25648194471939df75CF27A2fdC48BC", + "PermissionedDisputeGame": "0xBEA4384faCBcf51279962fbCFb8f16F9eD2fe0C6", + "PreimageOracle": "0x627F825CBd48c4102d36f287be71f4234426b9e4", + "Proposer": "0x49277EE36A024120Ee218127354c4a3591dc90A9", + "ProxyAdmin": "0x189aBAAaa82DfC015A588A7dbaD6F13b1D3485Bc", + "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", + "SystemConfigOwner": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", + "SystemConfigProxy": "0x034edD2A225f7f429A63E0f1D2084B9E0A93b538", + "UnsafeBlockSigner": "0x57CACBB0d30b01eb2462e5dC940c161aff3230D3" }, - "957": { - "AddressManager": "0xC845F9C4004EB35a8bde8ad89C4760a9c0e65CAB", - "L1CrossDomainMessengerProxy": "0x5456f02c08e9A018E42C39b351328E5AA864174A", - "L1ERC721BridgeProxy": "0x6CC3268794c5d3E3d9d52adEfC748B59d536cb22", - "L1StandardBridgeProxy": "0x61E44dC0dae6888B5a301887732217d5725B0bFf", - "L2OutputOracleProxy": "0x1145E7848c8B64c6cab86Fd6D378733385c5C3Ba", - "OptimismMintableERC20FactoryProxy": "0x08Dea366F26C25a08C8D1C3568ad07d1e587136d", - "OptimismPortalProxy": "0x85eA9c11cf3D4786027F7FD08F4406b15777e5f8", - "ProxyAdmin": "0x35d5D43271548c984662d4879FBc8e041Bc1Ff93", - "SystemConfigProxy": "0x0e4C4CDd01ceCB01070E9Fdfe7600871e4ae996e", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x91F4be0C264FAFA1fEd75c4440910Cba2cAd98e8", - "Challenger": "0x91F4be0C264FAFA1fEd75c4440910Cba2cAd98e8", - "UnsafeBlockSigner": "0xB71B58FfE538628557433dbBfA08d45ee5a69B44", - "BatchSubmitter": "0x14e4E97bDc195d399Ad8E7FC14451C279FE04c8e", - "Proposer": "0x03e820562ffd2e0390787caD706EaF1FF98C2608" + "11155421": { + "AddressManager": "0x3eb579b25F6b9547e0073c848389a768FD382296", + "AnchorStateRegistryProxy": "0x03b82AE60989863BCEb0BbD442A70568e5AefB85", + "BatchSubmitter": "0x19CC7073150D9f5888f09E0e9016d2a39667df14", + "Challenger": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", + "DelayedWETHProxy": "0xE99696a028171e31a72828A196C27c2Dd670E1aa", + "DisputeGameFactoryProxy": "0x2419423C72998eb1c6c15A235de2f112f8E38efF", + "FaultDisputeGame": "0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B", + "Guardian": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", + "L1CrossDomainMessengerProxy": "0x18e72C15FEE4e995454b919EfaA61D8f116F82dd", + "L1ERC721BridgeProxy": "0x1bb726658E039E8a9A4ac21A41fE5a0704760461", + "L1StandardBridgeProxy": "0x6D8bC564EF04AaF355a10c3eb9b00e349dd077ea", + "MIPS": "0xCdD4eabeb5f5d1fD195b15AFBF4eC3CA605Ec8Fe", + "OptimismMintableERC20FactoryProxy": "0xA16b8db3b5Cdbaf75158F34034B0537e528E17e2", + "OptimismPortalProxy": "0x76114bd29dFcC7a9892240D317E6c7C2A281Ffc6", + "PermissionedDisputeGame": "0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC", + "PreimageOracle": "0xA6662E943C763b23e82eEf3868E50007C9Af10bf", + "Proposer": "0x95014c45078354Ff839f14192228108Eac82E00A", + "ProxyAdmin": "0x18d890A46A3556e7F36f28C79F6157BC7a59f867", + "ProxyAdminOwner": "0x4377BB0F0103992b31eC12b4d796a8687B8dC8E9", + "SystemConfigOwner": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", + "SystemConfigProxy": "0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7", + "UnsafeBlockSigner": "0xa95B83e39AA78B00F12fe431865B563793D97AF5" + }, + "11763072": { + "AddressManager": "0x882a60911d00867Fe4ea632C479cc48e583A8D69", + "BatchSubmitter": "0x212dD524932bC43478688F91045F2682913ad8EE", + "Challenger": "0x5a533AaAC6cd81605b301a1077BC393A94658B6D", + "Guardian": "0x4F43c7422a9b2AC4BC6145Bd4eE206EA73cF8266", + "L1CrossDomainMessengerProxy": "0x2cbD403d5BA3949D24ee4dF57805eaC612C2662f", + "L1ERC721BridgeProxy": "0xc3016ED03E087d092d576B585F5222fFD9cadc10", + "L1StandardBridgeProxy": "0x5638e55db5Fcf7A58df525F1098E8569C8DbA80c", + "L2OutputOracleProxy": "0xB5901509329307E3f910f333Fa9C4B4A8EE7CE1A", + "OptimismMintableERC20FactoryProxy": "0xEAa11178375e6B1078d815d6F9F85cBbb69b09Cd", + "OptimismPortalProxy": "0x579c82A835B884336B632eeBeCC78FA08D3291Ec", + "Proposer": "0xBcB04FC753D36dcEeBe9Df7E18E23c46D1fcEA3c", + "ProxyAdmin": "0xC5aE9023bFA79124ffA50169E1423E733D0166f1", + "ProxyAdminOwner": "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430", + "SystemConfigOwner": "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430", + "SystemConfigProxy": "0x7F67DC4959cb3E532B10A99F41bDD906C46FdFdE", + "UnsafeBlockSigner": "0xfd7bc3C58Fe4D4296F11F7843ebbA84D729A24B9" }, "1740": { "AddressManager": "0x394f844B9A0FC876935d1b0b791D9e94Ad905e8b", + "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", + "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x5D335Aa7d93102110879e3B54985c5F08146091E", "L1ERC721BridgeProxy": "0x5d6cE6917dBeeacF010c96BfFdaBE89e33a30309", "L1StandardBridgeProxy": "0x21530aAdF4DCFb9c477171400E40d4ef615868BE", "L2OutputOracleProxy": "0x75a6B961c8da942Ee03CA641B09C322549f6FA98", "OptimismMintableERC20FactoryProxy": "0x49Ff2C4be882298e8CA7DeCD195c207c42B45F66", "OptimismPortalProxy": "0x01D4dfC994878682811b2980653D03E589f093cB", - "SystemConfigProxy": "0x5D63A8Dc2737cE771aa4a6510D063b6Ba2c4f6F2", "ProxyAdmin": "0xF7Bc4b3a78C7Dd8bE9B69B3128EEB0D6776Ce18A", "ProxyAdminOwner": "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD", "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7" + "SystemConfigProxy": "0x5D63A8Dc2737cE771aa4a6510D063b6Ba2c4f6F2" }, "1750": { "AddressManager": "0xd4b1EC0DEc3C7F12abD3ec27B7514880ae1C3a37", + "BatchSubmitter": "0xC94C243f8fb37223F3EB2f7961F7072602A51B8B", + "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x0a47A44f1B2bb753474f8c830322554A96C9934D", "L1ERC721BridgeProxy": "0x50D700e97967F9115e3f999bDB263d69F6704680", "L1StandardBridgeProxy": "0x6d0f65D59b55B0FEC5d2d15365154DcADC140BF3", "L2OutputOracleProxy": "0x3B1F7aDa0Fcc26B13515af752Dd07fB1CAc11426", "OptimismMintableERC20FactoryProxy": "0x1aaab4E20d2e4Bb992b5BCA2125e8bd3588c8730", "OptimismPortalProxy": "0x3F37aBdE2C6b5B2ed6F8045787Df1ED1E3753956", - "SystemConfigProxy": "0x7BD909970B0EEdcF078De6Aeff23ce571663b8aA", + "Proposer": "0xC8187d40AD440328104A52BBed2D8Efc5ab1F1F6", "ProxyAdmin": "0x37Ff0ae34dadA1A95A4251d10ef7Caa868c7AC99", "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "UnsafeBlockSigner": "0x4a65F5da5e80DEFfEA844eAa15CE130e80605dc5", - "BatchSubmitter": "0xC94C243f8fb37223F3EB2f7961F7072602A51B8B", - "Proposer": "0xC8187d40AD440328104A52BBed2D8Efc5ab1F1F6" - }, - "8453": { - "AddressManager": "0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2", - "L1CrossDomainMessengerProxy": "0x866E82a600A1414e583f7F13623F1aC5d58b0Afa", - "L1ERC721BridgeProxy": "0x608d94945A64503E642E6370Ec598e519a2C1E53", - "L1StandardBridgeProxy": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", - "L2OutputOracleProxy": "0x56315b90c40730925ec5485cf004d835058518A0", - "OptimismMintableERC20FactoryProxy": "0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84", - "OptimismPortalProxy": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", - "ProxyAdmin": "0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E", - "SystemConfigProxy": "0x73a79Fab69143498Ed3712e519A88a918e1f4072", - "ProxyAdminOwner": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", - "SystemConfigOwner": "0x14536667Cd30e52C0b458BaACcB9faDA7046E056", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0x6F8C5bA3F59ea3E76300E3BEcDC231D656017824", - "UnsafeBlockSigner": "0xAf6E19BE0F9cE7f8afd49a1824851023A8249e8a", - "BatchSubmitter": "0x5050F69a9786F081509234F1a7F4684b5E5b76C9", - "Proposer": "0x642229f238fb9dE03374Be34B0eD8D9De80752c5" + "SystemConfigProxy": "0x7BD909970B0EEdcF078De6Aeff23ce571663b8aA", + "UnsafeBlockSigner": "0x4a65F5da5e80DEFfEA844eAa15CE130e80605dc5" }, - "8866": { - "AddressManager": "0x9cF613c19371eFf26c94c0d4F62197d2C0ab60bc", - "L1CrossDomainMessengerProxy": "0x6c10d7e5750b21729Eb863Cf89E5b48850E6d97D", - "L1ERC721BridgeProxy": "0x9bF59F099d4306B52C7624c90B6d5FD75ab8513b", - "L1StandardBridgeProxy": "0xdB5C6b73CB1c5875995a42D64C250BF8BC69a8bc", - "L2OutputOracleProxy": "0xffB004874CbBF8692B5f397B602f4B8a630aeD59", - "OptimismMintableERC20FactoryProxy": "0xccc6Fc5B866D34a7A4C40455a3cCfaa0cbFc145B", - "OptimismPortalProxy": "0x9C93982cb4861311179aE216d1B7fD61232DE1f0", - "SystemConfigProxy": "0xFb252d6199AEfeE6938a1c57213AAd96ecD2650c", - "ProxyAdmin": "0xA6b2b6B6E621482aF877F304D46B94123a942Ae9", + "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", "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" + "SystemConfigProxy": "0x886B187C3D293B1449A3A0F23Ca9e2269E0f2664", + "UnsafeBlockSigner": "0xceED24B1Fd4A4393f6A9D2B137D9597dd5482569" }, "34443": { - "OptimismMintableERC20FactoryProxy": "0x69216395A62dFb243C05EF4F1C27AF8655096a95", - "SystemConfigProxy": "0x5e6432F18Bc5d497B1Ab2288a025Fbf9D69E2221", - "L1ERC721BridgeProxy": "0x2901dA832a4D0297FF0691100A8E496626cc626D", - "OptimismPortalProxy": "0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07", + "AddressManager": "0x50eF494573f28Cad6B64C31b7a00Cdaa48306e15", + "BatchSubmitter": "0x99199a22125034c808ff20f377d91187E8050F2E", + "Challenger": "0x309Fe2536d01867018D120b40e4676723C53A14C", + "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0x95bDCA6c8EdEB69C98Bd5bd17660BaCef1298A6f", + "L1ERC721BridgeProxy": "0x2901dA832a4D0297FF0691100A8E496626cc626D", + "L1StandardBridgeProxy": "0x735aDBbE72226BD52e818E7181953f42E3b0FF21", "L2OutputOracleProxy": "0x4317ba146D4933D889518a3e5E11Fe7a53199b04", + "OptimismMintableERC20FactoryProxy": "0x69216395A62dFb243C05EF4F1C27AF8655096a95", + "OptimismPortalProxy": "0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07", + "Proposer": "0x674F64D64Ddc198db83cd9047dF54BF89cCD0ddB", "ProxyAdmin": "0x470d87b1dae09a454A43D1fD772A561a03276aB7", - "AddressManager": "0x50eF494573f28Cad6B64C31b7a00Cdaa48306e15", - "L1StandardBridgeProxy": "0x735aDBbE72226BD52e818E7181953f42E3b0FF21", "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0x309Fe2536d01867018D120b40e4676723C53A14C", - "UnsafeBlockSigner": "0xa7fA9CA4ac88686A542C0f830d7378eAB4A0278F", - "BatchSubmitter": "0x99199a22125034c808ff20f377d91187E8050F2E", - "Proposer": "0x674F64D64Ddc198db83cd9047dF54BF89cCD0ddB" + "SystemConfigProxy": "0x5e6432F18Bc5d497B1Ab2288a025Fbf9D69E2221", + "UnsafeBlockSigner": "0xa7fA9CA4ac88686A542C0f830d7378eAB4A0278F" + }, + "424": { + "AddressManager": "0x09d5DbA52F0ee2C4A5E94FD5C802bD74Ca9cAD3e", + "BatchSubmitter": "0x99526b0e49A95833E734EB556A6aBaFFAb0Ee167", + "Challenger": "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84", + "Guardian": "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84", + "L1CrossDomainMessengerProxy": "0x97BAf688E5d0465E149d1d5B497Ca99392a6760e", + "L1ERC721BridgeProxy": "0xaFF0F8aaB6Cc9108D34b3B8423C76d2AF434d115", + "L1StandardBridgeProxy": "0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b", + "L2OutputOracleProxy": "0xA38d0c4E6319F9045F20318BA5f04CDe94208608", + "OptimismMintableERC20FactoryProxy": "0x8A04c7e5b182eb3470073E681bE54b2aB48FBbE8", + "OptimismPortalProxy": "0xb26Fd985c5959bBB382BAFdD0b879E149e48116c", + "Proposer": "0x69968Ce0E92d9c101BAd81de55EFbcb69603cFe3", + "ProxyAdmin": "0xc6A8d2c5d0F068BE745f6A770378F01ca1714cc4", + "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "SystemConfigProxy": "0x7Df716EAD1d83a2BF35B416B7BC84bd0700357C9", + "UnsafeBlockSigner": "0x7916D35b57c2E4AffCaB46C3E5C8d76D3b44d1F7" }, "58008": { "AddressManager": "0x0Ad91488288BBe60ff38258785568A6D1EB3B983", + "BatchSubmitter": "0x7224e05E6cF6E07aFBE1eFa09a3fA23A637DD485", + "Challenger": "0x69F0FFc19504B57e9AE4B6D7694d028c3CD876F8", + "Guardian": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", "L1CrossDomainMessengerProxy": "0x97f3558Ce48FE71B8CeFA5497708A49531D5A8E1", "L1ERC721BridgeProxy": "0xBA8397B6f255618D5985d0fB427D8c0496F3a5FA", "L1StandardBridgeProxy": "0xFaE6abCAF30D23e233AC7faF747F2fC3a5a6Bfa3", "L2OutputOracleProxy": "0xD5bAc3152ffC25318F848B3DD5dA6C85171BaEEe", "OptimismMintableERC20FactoryProxy": "0x0167EF3188FDaa2661e4530A4623Ee1aB4555683", "OptimismPortalProxy": "0xF04BdD5353Bb0EFF6CA60CfcC78594278eBfE179", + "Proposer": "0xD457799C5ba870D609f21048c67a9b11aC611BF0", "ProxyAdmin": "0x5f336973dabaD13409EA93416b8487D92769e457", - "SystemConfigProxy": "0x4BCCC52151f0ad7C62D45Ce0aA77d9d8ffCE534e", "ProxyAdminOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "Guardian": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", - "Challenger": "0x69F0FFc19504B57e9AE4B6D7694d028c3CD876F8", - "UnsafeBlockSigner": "0x91Bf8996f15B128FDDC80e170FD1aA2C52659A4e", - "BatchSubmitter": "0x7224e05E6cF6E07aFBE1eFa09a3fA23A637DD485", - "Proposer": "0xD457799C5ba870D609f21048c67a9b11aC611BF0" - }, - "84532": { - "AddressManager": "0x709c2B8ef4A9feFc629A8a2C1AF424Dc5BD6ad1B", - "L1CrossDomainMessengerProxy": "0xC34855F4De64F1840e5686e64278da901e261f20", - "L1ERC721BridgeProxy": "0x21eFD066e581FA55Ef105170Cc04d74386a09190", - "L1StandardBridgeProxy": "0xfd0Bf71F60660E2f608ed56e1659C450eB113120", - "L2OutputOracleProxy": "0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254", - "OptimismMintableERC20FactoryProxy": "0xb1efB9650aD6d0CC1ed3Ac4a0B7f1D5732696D37", - "OptimismPortalProxy": "0x49f53e41452C74589E85cA1677426Ba426459e85", - "ProxyAdmin": "0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3", - "SystemConfigProxy": "0xf272670eb55e895584501d564AfEB048bEd26194", - "ProxyAdminOwner": "0x0fe884546476dDd290eC46318785046ef68a0BA9", - "SystemConfigOwner": "0x0fe884546476dDd290eC46318785046ef68a0BA9", - "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0xDa3037Ff70Ac92CD867c683BD807e5A484857405", - "UnsafeBlockSigner": "0xb830b99c95Ea32300039624Cb567d324D4b1D83C", - "BatchSubmitter": "0x6CDEbe940BC0F26850285cacA097C11c33103E47", - "Proposer": "0x20044a0d104E9e788A0C984A2B7eAe615afD046b" + "SystemConfigProxy": "0x4BCCC52151f0ad7C62D45Ce0aA77d9d8ffCE534e", + "UnsafeBlockSigner": "0x91Bf8996f15B128FDDC80e170FD1aA2C52659A4e" }, "7777777": { "AddressManager": "0xEF8115F2733fb2033a7c756402Fc1deaa56550Ef", + "BatchSubmitter": "0x625726c858dBF78c0125436C943Bf4b4bE9d9033", + "Challenger": "0xcA4571b1ecBeC86Ea2E660d242c1c29FcB55Dc72", + "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", "L1CrossDomainMessengerProxy": "0xdC40a14d9abd6F410226f1E6de71aE03441ca506", "L1ERC721BridgeProxy": "0x83A4521A3573Ca87f3a971B169C5A0E1d34481c3", "L1StandardBridgeProxy": "0x3e2Ea9B92B7E48A52296fD261dc26fd995284631", "L2OutputOracleProxy": "0x9E6204F750cD866b299594e2aC9eA824E2e5f95c", "OptimismMintableERC20FactoryProxy": "0xc52BC7344e24e39dF1bf026fe05C4e6E23CfBcFf", "OptimismPortalProxy": "0x1a0ad011913A150f69f6A19DF447A0CfD9551054", + "Proposer": "0x48247032092e7b0ecf5dEF611ad89eaf3fC888Dd", "ProxyAdmin": "0xD4ef175B9e72cAEe9f1fe7660a6Ec19009903b49", - "SystemConfigProxy": "0xA3cAB0126d5F504B071b81a3e8A2BBBF17930d86", "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", "SystemConfigOwner": "0xC72aE5c7cc9a332699305E29F68Be66c73b60542", + "SystemConfigProxy": "0xA3cAB0126d5F504B071b81a3e8A2BBBF17930d86", + "UnsafeBlockSigner": "0x3Dc8Dfd0709C835cAd15a6A27e089FF4cF4C9228" + }, + "8453": { + "AddressManager": "0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2", + "BatchSubmitter": "0x5050F69a9786F081509234F1a7F4684b5E5b76C9", + "Challenger": "0x6F8C5bA3F59ea3E76300E3BEcDC231D656017824", "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0xcA4571b1ecBeC86Ea2E660d242c1c29FcB55Dc72", - "UnsafeBlockSigner": "0x3Dc8Dfd0709C835cAd15a6A27e089FF4cF4C9228", - "BatchSubmitter": "0x625726c858dBF78c0125436C943Bf4b4bE9d9033", - "Proposer": "0x48247032092e7b0ecf5dEF611ad89eaf3fC888Dd" + "L1CrossDomainMessengerProxy": "0x866E82a600A1414e583f7F13623F1aC5d58b0Afa", + "L1ERC721BridgeProxy": "0x608d94945A64503E642E6370Ec598e519a2C1E53", + "L1StandardBridgeProxy": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", + "L2OutputOracleProxy": "0x56315b90c40730925ec5485cf004d835058518A0", + "OptimismMintableERC20FactoryProxy": "0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84", + "OptimismPortalProxy": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", + "Proposer": "0x642229f238fb9dE03374Be34B0eD8D9De80752c5", + "ProxyAdmin": "0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E", + "ProxyAdminOwner": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", + "SystemConfigOwner": "0x14536667Cd30e52C0b458BaACcB9faDA7046E056", + "SystemConfigProxy": "0x73a79Fab69143498Ed3712e519A88a918e1f4072", + "UnsafeBlockSigner": "0xAf6E19BE0F9cE7f8afd49a1824851023A8249e8a" }, - "11155420": { - "AddressManager": "0x9bFE9c5609311DF1c011c47642253B78a4f33F4B", - "L1CrossDomainMessengerProxy": "0x58Cc85b8D04EA49cC6DBd3CbFFd00B4B8D6cb3ef", - "L1ERC721BridgeProxy": "0xd83e03D576d23C9AEab8cC44Fa98d058D2176D1f", - "L1StandardBridgeProxy": "0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1", - "OptimismMintableERC20FactoryProxy": "0x868D59fF9710159C2B330Cc0fBDF57144dD7A13b", - "OptimismPortalProxy": "0x16Fc5058F25648194471939df75CF27A2fdC48BC", - "ProxyAdmin": "0x189aBAAaa82DfC015A588A7dbaD6F13b1D3485Bc", - "SystemConfigProxy": "0x034edD2A225f7f429A63E0f1D2084B9E0A93b538", - "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", - "SystemConfigOwner": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", - "DisputeGameFactoryProxy": "0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1", - "AnchorStateRegistryProxy": "0x218CD9489199F321E1177b56385d333c5B598629", - "DelayedWETHProxy": "0xF3D833949133e4E4D3551343494b34079598EA5a", - "FaultDisputeGame": "0xD5Bc8c45692aada756f2d68f0a2002d6Bf130C42", - "PermissionedDisputeGame": "0xBEA4384faCBcf51279962fbCFb8f16F9eD2fe0C6", - "PreimageOracle": "0x627F825CBd48c4102d36f287be71f4234426b9e4", - "MIPS": "0xFF760A87E41144b336E29b6D4582427dEBdB6dee", + "84532": { + "AddressManager": "0x709c2B8ef4A9feFc629A8a2C1AF424Dc5BD6ad1B", + "BatchSubmitter": "0x6CDEbe940BC0F26850285cacA097C11c33103E47", + "Challenger": "0xDa3037Ff70Ac92CD867c683BD807e5A484857405", "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", - "UnsafeBlockSigner": "0x57CACBB0d30b01eb2462e5dC940c161aff3230D3", - "BatchSubmitter": "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c", - "Proposer": "0x49277EE36A024120Ee218127354c4a3591dc90A9" + "L1CrossDomainMessengerProxy": "0xC34855F4De64F1840e5686e64278da901e261f20", + "L1ERC721BridgeProxy": "0x21eFD066e581FA55Ef105170Cc04d74386a09190", + "L1StandardBridgeProxy": "0xfd0Bf71F60660E2f608ed56e1659C450eB113120", + "L2OutputOracleProxy": "0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254", + "OptimismMintableERC20FactoryProxy": "0xb1efB9650aD6d0CC1ed3Ac4a0B7f1D5732696D37", + "OptimismPortalProxy": "0x49f53e41452C74589E85cA1677426Ba426459e85", + "Proposer": "0x20044a0d104E9e788A0C984A2B7eAe615afD046b", + "ProxyAdmin": "0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3", + "ProxyAdminOwner": "0x0fe884546476dDd290eC46318785046ef68a0BA9", + "SystemConfigOwner": "0x0fe884546476dDd290eC46318785046ef68a0BA9", + "SystemConfigProxy": "0xf272670eb55e895584501d564AfEB048bEd26194", + "UnsafeBlockSigner": "0xb830b99c95Ea32300039624Cb567d324D4b1D83C" }, - "11155421": { - "AddressManager": "0x3eb579b25F6b9547e0073c848389a768FD382296", - "L1CrossDomainMessengerProxy": "0x18e72C15FEE4e995454b919EfaA61D8f116F82dd", - "L1ERC721BridgeProxy": "0x1bb726658E039E8a9A4ac21A41fE5a0704760461", - "L1StandardBridgeProxy": "0x6D8bC564EF04AaF355a10c3eb9b00e349dd077ea", - "OptimismMintableERC20FactoryProxy": "0xA16b8db3b5Cdbaf75158F34034B0537e528E17e2", - "OptimismPortalProxy": "0x76114bd29dFcC7a9892240D317E6c7C2A281Ffc6", - "SystemConfigProxy": "0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7", - "ProxyAdmin": "0x18d890A46A3556e7F36f28C79F6157BC7a59f867", - "SystemConfigOwner": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "ProxyAdminOwner": "0x4377BB0F0103992b31eC12b4d796a8687B8dC8E9", - "Guardian": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "AnchorStateRegistryProxy": "0x03b82AE60989863BCEb0BbD442A70568e5AefB85", - "DelayedWETHProxy": "0xE99696a028171e31a72828A196C27c2Dd670E1aa", - "DisputeGameFactoryProxy": "0x2419423C72998eb1c6c15A235de2f112f8E38efF", - "FaultDisputeGame": "0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B", - "Mips": "0xCdD4eabeb5f5d1fD195b15AFBF4eC3CA605Ec8Fe", - "PermissionedDisputeGame": "0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC", - "PreimageOracle": "0xA6662E943C763b23e82eEf3868E50007C9Af10bf", - "UnsafeBlockSigner": "0xa95B83e39AA78B00F12fe431865B563793D97AF5", - "BatchSubmitter": "0x19CC7073150D9f5888f09E0e9016d2a39667df14", - "Challenger": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "Proposer": "0x95014c45078354Ff839f14192228108Eac82E00A" + "8866": { + "AddressManager": "0x9cF613c19371eFf26c94c0d4F62197d2C0ab60bc", + "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "Guardian": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "L1CrossDomainMessengerProxy": "0x6c10d7e5750b21729Eb863Cf89E5b48850E6d97D", + "L1ERC721BridgeProxy": "0x9bF59F099d4306B52C7624c90B6d5FD75ab8513b", + "L1StandardBridgeProxy": "0xdB5C6b73CB1c5875995a42D64C250BF8BC69a8bc", + "L2OutputOracleProxy": "0xffB004874CbBF8692B5f397B602f4B8a630aeD59", + "OptimismMintableERC20FactoryProxy": "0xccc6Fc5B866D34a7A4C40455a3cCfaa0cbFc145B", + "OptimismPortalProxy": "0x9C93982cb4861311179aE216d1B7fD61232DE1f0", + "ProxyAdmin": "0xA6b2b6B6E621482aF877F304D46B94123a942Ae9", + "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "SystemConfigProxy": "0xFb252d6199AEfeE6938a1c57213AAd96ecD2650c" }, - "11763072": { - "AddressManager": "0x882a60911d00867Fe4ea632C479cc48e583A8D69", - "L1CrossDomainMessengerProxy": "0x2cbD403d5BA3949D24ee4dF57805eaC612C2662f", - "L1ERC721BridgeProxy": "0xc3016ED03E087d092d576B585F5222fFD9cadc10", - "L1StandardBridgeProxy": "0x5638e55db5Fcf7A58df525F1098E8569C8DbA80c", - "L2OutputOracleProxy": "0xB5901509329307E3f910f333Fa9C4B4A8EE7CE1A", - "OptimismMintableERC20FactoryProxy": "0xEAa11178375e6B1078d815d6F9F85cBbb69b09Cd", - "OptimismPortalProxy": "0x579c82A835B884336B632eeBeCC78FA08D3291Ec", - "ProxyAdmin": "0xC5aE9023bFA79124ffA50169E1423E733D0166f1", - "SystemConfigProxy": "0x7F67DC4959cb3E532B10A99F41bDD906C46FdFdE", - "SystemConfigOwner": "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430", - "ProxyAdminOwner": "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430", - "Challenger": "0x5a533AaAC6cd81605b301a1077BC393A94658B6D", - "Guardian": "0x4F43c7422a9b2AC4BC6145Bd4eE206EA73cF8266", - "UnsafeBlockSigner": "0xfd7bc3C58Fe4D4296F11F7843ebbA84D729A24B9", - "BatchSubmitter": "0x212dD524932bC43478688F91045F2682913ad8EE", - "Proposer": "0xBcB04FC753D36dcEeBe9Df7E18E23c46D1fcEA3c" + "919": { + "AddressManager": "0x83D45725d6562d8CD717673D6bb4c67C07dC1905", + "BatchSubmitter": "0x4e6BD53883107B063c502dDd49F9600Dc51b3DDc", + "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", + "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", + "L1CrossDomainMessengerProxy": "0xc19a60d9E8C27B9A43527c3283B4dd8eDC8bE15C", + "L1ERC721BridgeProxy": "0x015a8c2e0a5fEd579dbb05fd290e413Adc6FC24A", + "L1StandardBridgeProxy": "0xbC5C679879B2965296756CD959C3C739769995E2", + "L2OutputOracleProxy": "0x2634BD65ba27AB63811c74A63118ACb312701Bfa", + "OptimismMintableERC20FactoryProxy": "0x00F7ab8c72D32f55cFf15e8901C2F9f2BF29A3C0", + "OptimismPortalProxy": "0x320e1580effF37E008F1C92700d1eBa47c1B23fD", + "Proposer": "0xe9e08A478e3a773c1B5D59014A0FDb901e6d1d69", + "ProxyAdmin": "0xE7413127F29E050Df65ac3FC9335F85bB10091AE", + "ProxyAdminOwner": "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD", + "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", + "SystemConfigProxy": "0x15cd4f6e0CE3B4832B33cB9c6f6Fe6fc246754c2", + "UnsafeBlockSigner": "0x93A14E6894eEB4FF6a373E1Ad4f498c3a207afe4" + }, + "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", + "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", + "SystemConfigProxy": "0x0e4C4CDd01ceCB01070E9Fdfe7600871e4ae996e", + "UnsafeBlockSigner": "0xB71B58FfE538628557433dbBfA08d45ee5a69B44" }, "999999999": { "AddressManager": "0x27c9392144DFcB6dab113F737356C32435cD1D55", + "BatchSubmitter": "0x3Cd868E221A3be64B161D596A7482257a99D857f", + "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", + "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", "L1CrossDomainMessengerProxy": "0x1bDBC0ae22bEc0c2f08B4dd836944b3E28fe9b7A", "L1ERC721BridgeProxy": "0x16B0a4f451c4CB567703367e587E15Ac108e4311", "L1StandardBridgeProxy": "0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB", "L2OutputOracleProxy": "0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9", "OptimismMintableERC20FactoryProxy": "0x5F3bdd57f01e88cE2F88f00685D30D6eb51A187c", "OptimismPortalProxy": "0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f", + "Proposer": "0xe8326a5839175dE7f467e66D8bB443aa70DA1c3e", "ProxyAdmin": "0xE17071F4C216Eb189437fbDBCc16Bb79c4efD9c2", - "SystemConfigProxy": "0xB54c7BFC223058773CF9b739cC5bd4095184Fb08", "ProxyAdminOwner": "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD", "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", - "UnsafeBlockSigner": "0x3609513933100689bd1f84782529A99239842344", - "BatchSubmitter": "0x3Cd868E221A3be64B161D596A7482257a99D857f", - "Proposer": "0xe8326a5839175dE7f467e66D8bB443aa70DA1c3e" + "SystemConfigProxy": "0xB54c7BFC223058773CF9b739cC5bd4095184Fb08", + "UnsafeBlockSigner": "0x3609513933100689bd1f84782529A99239842344" } } \ No newline at end of file diff --git a/superchain/extra/addresses/holesky/frax.json b/superchain/extra/addresses/holesky/frax.json deleted file mode 100644 index 5d118ef17..000000000 --- a/superchain/extra/addresses/holesky/frax.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "AddressManager": "0x6C52d1f7aAdD1F27aaa6A9e228CE0312E3CB09A6", - "L1CrossDomainMessenger": "0xdbcc8fBbBD5ea41e17CaE1170e3cC7e021531aEa", - "L1CrossDomainMessengerProxy": "0x45A98115D5722C6cfC48D711e0053758E7C0b8ad", - "L1ERC721BridgeProxy": "0x0301A6b26a37566d3DCebC7fC4c2143B426bBf53", - "L1StandardBridge": "0x6F5A168c283fE7B0FA47798eD64EF26926E4cd25", - "L1StandardBridgeProxy": "0x0BaafC217162f64930909aD9f2B27125121d6332", - "L2OutputOracle": "0xA556a6C8C606Cb86092B2eeD70065437281b009F", - "L2OutputOracleProxy": "0x715EA64DA13F4d0831ece4Ad3E8c1aa013167F32", - "OptimismMintableERC20Factory": "0xC673767a0AaA36Cc23149a9BE7CBC36fAc88c5De", - "OptimismMintableERC20FactoryProxy": "0x740fAfe2383F736d0Bd1a042E50fE15dDa2726C6", - "OptimismPortal": "0x8f95e7929c00A566d8f69A20E7f2007646a2a56e", - "OptimismPortalProxy": "0xB9c64BfA498d5b9a8398Ed6f46eb76d90dE5505d", - "ProxyAdmin": "0xA0c6294D524f56fF9BdAeE94b69064c529cB9a1e", - "SystemConfig": "0x2C1Ef0F9A9A141e4EA55F1Dd4c2E4a259912Ab16", - "SystemConfigProxy": "0x570Bf63A187776A19a44E6D1e055E3da65C1E3Db", - "SystemDictatorProxy": "0x9dB2E7550c91Ea166c65099D01424A19f0A30481", - "l1ERC721Bridge": "0x61953583636c1F87429baeb64B1B9a966De1d7A1" -} diff --git a/superchain/extra/addresses/mainnet/base.json b/superchain/extra/addresses/mainnet/base.json deleted file mode 100644 index 2ee78cf84..000000000 --- a/superchain/extra/addresses/mainnet/base.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0x8EfB6B5c4767B09Dc9AA6Af4eAA89F749522BaE2", - "L1CrossDomainMessengerProxy": "0x866E82a600A1414e583f7F13623F1aC5d58b0Afa", - "L1ERC721BridgeProxy": "0x608d94945A64503E642E6370Ec598e519a2C1E53", - "L1StandardBridgeProxy": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", - "L2OutputOracleProxy": "0x56315b90c40730925ec5485cf004d835058518A0", - "OptimismMintableERC20FactoryProxy": "0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84", - "OptimismPortalProxy": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e", - "ProxyAdmin": "0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E", - "SystemConfigProxy": "0x73a79Fab69143498Ed3712e519A88a918e1f4072", - "ProxyAdminOwner": "0x7bB41C3008B3f03FE483B28b8DB90e19Cf07595c", - "SystemConfigOwner": "0x14536667Cd30e52C0b458BaACcB9faDA7046E056", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0x6F8C5bA3F59ea3E76300E3BEcDC231D656017824", - "UnsafeBlockSigner": "0xAf6E19BE0F9cE7f8afd49a1824851023A8249e8a", - "BatchSubmitter": "0x5050F69a9786F081509234F1a7F4684b5E5b76C9", - "Proposer": "0x642229f238fb9dE03374Be34B0eD8D9De80752c5" -} diff --git a/superchain/extra/addresses/mainnet/lyra.json b/superchain/extra/addresses/mainnet/lyra.json deleted file mode 100644 index de718c66b..000000000 --- a/superchain/extra/addresses/mainnet/lyra.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0xC845F9C4004EB35a8bde8ad89C4760a9c0e65CAB", - "L1CrossDomainMessengerProxy": "0x5456f02c08e9A018E42C39b351328E5AA864174A", - "L1ERC721BridgeProxy": "0x6CC3268794c5d3E3d9d52adEfC748B59d536cb22", - "L1StandardBridgeProxy": "0x61E44dC0dae6888B5a301887732217d5725B0bFf", - "L2OutputOracleProxy": "0x1145E7848c8B64c6cab86Fd6D378733385c5C3Ba", - "OptimismMintableERC20FactoryProxy": "0x08Dea366F26C25a08C8D1C3568ad07d1e587136d", - "OptimismPortalProxy": "0x85eA9c11cf3D4786027F7FD08F4406b15777e5f8", - "ProxyAdmin": "0x35d5D43271548c984662d4879FBc8e041Bc1Ff93", - "SystemConfigProxy": "0x0e4C4CDd01ceCB01070E9Fdfe7600871e4ae996e", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x91F4be0C264FAFA1fEd75c4440910Cba2cAd98e8", - "Challenger": "0x91F4be0C264FAFA1fEd75c4440910Cba2cAd98e8", - "UnsafeBlockSigner": "0xB71B58FfE538628557433dbBfA08d45ee5a69B44", - "BatchSubmitter": "0x14e4E97bDc195d399Ad8E7FC14451C279FE04c8e", - "Proposer": "0x03e820562ffd2e0390787caD706EaF1FF98C2608" -} diff --git a/superchain/extra/addresses/mainnet/metal.json b/superchain/extra/addresses/mainnet/metal.json deleted file mode 100644 index 084da30ca..000000000 --- a/superchain/extra/addresses/mainnet/metal.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0xd4b1EC0DEc3C7F12abD3ec27B7514880ae1C3a37", - "L1CrossDomainMessengerProxy": "0x0a47A44f1B2bb753474f8c830322554A96C9934D", - "L1ERC721BridgeProxy": "0x50D700e97967F9115e3f999bDB263d69F6704680", - "L1StandardBridgeProxy": "0x6d0f65D59b55B0FEC5d2d15365154DcADC140BF3", - "L2OutputOracleProxy": "0x3B1F7aDa0Fcc26B13515af752Dd07fB1CAc11426", - "OptimismMintableERC20FactoryProxy": "0x1aaab4E20d2e4Bb992b5BCA2125e8bd3588c8730", - "OptimismPortalProxy": "0x3F37aBdE2C6b5B2ed6F8045787Df1ED1E3753956", - "SystemConfigProxy": "0x7BD909970B0EEdcF078De6Aeff23ce571663b8aA", - "ProxyAdmin": "0x37Ff0ae34dadA1A95A4251d10ef7Caa868c7AC99", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "UnsafeBlockSigner": "0x4a65F5da5e80DEFfEA844eAa15CE130e80605dc5", - "BatchSubmitter": "0xC94C243f8fb37223F3EB2f7961F7072602A51B8B", - "Proposer": "0xC8187d40AD440328104A52BBed2D8Efc5ab1F1F6" -} diff --git a/superchain/extra/addresses/mainnet/mode.json b/superchain/extra/addresses/mainnet/mode.json deleted file mode 100644 index d21687511..000000000 --- a/superchain/extra/addresses/mainnet/mode.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "OptimismMintableERC20FactoryProxy": "0x69216395A62dFb243C05EF4F1C27AF8655096a95", - "SystemConfigProxy": "0x5e6432F18Bc5d497B1Ab2288a025Fbf9D69E2221", - "L1ERC721BridgeProxy": "0x2901dA832a4D0297FF0691100A8E496626cc626D", - "OptimismPortalProxy": "0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07", - "L1CrossDomainMessengerProxy": "0x95bDCA6c8EdEB69C98Bd5bd17660BaCef1298A6f", - "L2OutputOracleProxy": "0x4317ba146D4933D889518a3e5E11Fe7a53199b04", - "ProxyAdmin": "0x470d87b1dae09a454A43D1fD772A561a03276aB7", - "AddressManager": "0x50eF494573f28Cad6B64C31b7a00Cdaa48306e15", - "L1StandardBridgeProxy": "0x735aDBbE72226BD52e818E7181953f42E3b0FF21", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0x309Fe2536d01867018D120b40e4676723C53A14C", - "UnsafeBlockSigner": "0xa7fA9CA4ac88686A542C0f830d7378eAB4A0278F", - "BatchSubmitter": "0x99199a22125034c808ff20f377d91187E8050F2E", - "Proposer": "0x674F64D64Ddc198db83cd9047dF54BF89cCD0ddB" -} diff --git a/superchain/extra/addresses/mainnet/op.json b/superchain/extra/addresses/mainnet/op.json deleted file mode 100644 index e19c9aafd..000000000 --- a/superchain/extra/addresses/mainnet/op.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "AddressManager": "0xdE1FCfB0851916CA5101820A69b13a4E276bd81F", - "L1CrossDomainMessengerProxy": "0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1", - "L1ERC721BridgeProxy": "0x5a7749f83b81B301cAb5f48EB8516B986DAef23D", - "L1StandardBridgeProxy": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1", - "OptimismMintableERC20FactoryProxy": "0x75505a97BD334E7BD3C476893285569C4136Fa0F", - "OptimismPortalProxy": "0xbEb5Fc579115071764c7423A4f12eDde41f106Ed", - "ProxyAdmin": "0x543bA4AADBAb8f9025686Bd03993043599c6fB04", - "SystemConfigProxy": "0x229047fed2591dbec1eF1118d64F7aF3dB9EB290", - "ProxyAdminOwner": "0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A", - "SystemConfigOwner": "0x847B5c174615B1B7fDF770882256e2D3E95b9D92", - "DisputeGameFactoryProxy": "0xe5965Ab5962eDc7477C8520243A95517CD252fA9", - "AnchorStateRegistryProxy": "0x18DAc71c228D1C32c99489B7323d441E1175e443", - "DelayedWETHProxy": "0xE497B094d6DbB3D5E4CaAc9a14696D7572588d14", - "FaultDisputeGame": "0x4146DF64D83acB0DcB0c1a4884a16f090165e122", - "PermissionedDisputeGame": "0xE9daD167EF4DE8812C1abD013Ac9570C616599A0", - "PreimageOracle": "0xD326E10B8186e90F4E2adc5c13a2d0C137ee8b34", - "MIPS": "0x0f8EdFbDdD3c0256A80AD8C0F2560B1807873C9c", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A", - "Proposer": "0x473300df21D047806A082244b417f96b32f13A33", - "UnsafeBlockSigner": "0xAAAA45d9549EDA09E70937013520214382Ffc4A2", - "BatchSubmitter": "0x6887246668a3b87F54DeB3b94Ba47a6f63F32985" -} diff --git a/superchain/extra/addresses/mainnet/orderly.json b/superchain/extra/addresses/mainnet/orderly.json deleted file mode 100644 index 1d914908f..000000000 --- a/superchain/extra/addresses/mainnet/orderly.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "OptimismMintableERC20FactoryProxy": "0x7a69a90d8ea11E9618855da55D09E6F953730686", - "SystemConfigProxy": "0x886B187C3D293B1449A3A0F23Ca9e2269E0f2664", - "L1ERC721BridgeProxy": "0x934Ab59Ef14b638653b1C0FEf7aB9a72186393DC", - "OptimismPortalProxy": "0x91493a61ab83b62943E6dCAa5475Dd330704Cc84", - "L1CrossDomainMessengerProxy": "0xc76543A64666d9a073FaEF4e75F651c88e7DBC08", - "L2OutputOracleProxy": "0x5e76821C3c1AbB9fD6E310224804556C61D860e0", - "ProxyAdmin": "0xb570F4aD27e7De879A2E4F2F3DE27dBaBc20E9B9", - "AddressManager": "0x87630a802a3789463eC4b00f89b27b1e9f6b92e9", - "L1StandardBridgeProxy": "0xe07eA0436100918F157DF35D01dCE5c11b16D1F1", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0xcE10372313Ca39Fbf75A09e7f4c0E57F070259f4", - "Challenger": "0xcE10372313Ca39Fbf75A09e7f4c0E57F070259f4", - "UnsafeBlockSigner": "0xceED24B1Fd4A4393f6A9D2B137D9597dd5482569", - "BatchSubmitter": "0xf8dB8Aba597fF36cCD16fECfbb1B816B3236E9b8", - "Proposer": "0x74BaD482a7f73C8286F50D8Aa03e53b7d24A5f3B" -} diff --git a/superchain/extra/addresses/mainnet/pgn.json b/superchain/extra/addresses/mainnet/pgn.json deleted file mode 100644 index e2a7314c9..000000000 --- a/superchain/extra/addresses/mainnet/pgn.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0x09d5DbA52F0ee2C4A5E94FD5C802bD74Ca9cAD3e", - "L1CrossDomainMessengerProxy": "0x97BAf688E5d0465E149d1d5B497Ca99392a6760e", - "L1ERC721BridgeProxy": "0xaFF0F8aaB6Cc9108D34b3B8423C76d2AF434d115", - "L1StandardBridgeProxy": "0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b", - "L2OutputOracleProxy": "0xA38d0c4E6319F9045F20318BA5f04CDe94208608", - "OptimismMintableERC20FactoryProxy": "0x8A04c7e5b182eb3470073E681bE54b2aB48FBbE8", - "OptimismPortalProxy": "0xb26Fd985c5959bBB382BAFdD0b879E149e48116c", - "ProxyAdmin": "0xc6A8d2c5d0F068BE745f6A770378F01ca1714cc4", - "SystemConfigProxy": "0x7Df716EAD1d83a2BF35B416B7BC84bd0700357C9", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84", - "Challenger": "0x39E13D1AB040F6EA58CE19998edCe01B3C365f84", - "UnsafeBlockSigner": "0x7916D35b57c2E4AffCaB46C3E5C8d76D3b44d1F7", - "BatchSubmitter": "0x99526b0e49A95833E734EB556A6aBaFFAb0Ee167", - "Proposer": "0x69968Ce0E92d9c101BAd81de55EFbcb69603cFe3" -} diff --git a/superchain/extra/addresses/mainnet/superlumio.json b/superchain/extra/addresses/mainnet/superlumio.json deleted file mode 100644 index bdf32316f..000000000 --- a/superchain/extra/addresses/mainnet/superlumio.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "AddressManager": "0x9cF613c19371eFf26c94c0d4F62197d2C0ab60bc", - "L1CrossDomainMessengerProxy": "0x6c10d7e5750b21729Eb863Cf89E5b48850E6d97D", - "L1ERC721BridgeProxy": "0x9bF59F099d4306B52C7624c90B6d5FD75ab8513b", - "L1StandardBridgeProxy": "0xdB5C6b73CB1c5875995a42D64C250BF8BC69a8bc", - "L2OutputOracleProxy": "0xffB004874CbBF8692B5f397B602f4B8a630aeD59", - "OptimismMintableERC20FactoryProxy": "0xccc6Fc5B866D34a7A4C40455a3cCfaa0cbFc145B", - "OptimismPortalProxy": "0x9C93982cb4861311179aE216d1B7fD61232DE1f0", - "SystemConfigProxy": "0xFb252d6199AEfeE6938a1c57213AAd96ecD2650c", - "ProxyAdmin": "0xA6b2b6B6E621482aF877F304D46B94123a942Ae9", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Guardian": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "Challenger": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746" -} diff --git a/superchain/extra/addresses/mainnet/zora.json b/superchain/extra/addresses/mainnet/zora.json deleted file mode 100644 index 800f3cb83..000000000 --- a/superchain/extra/addresses/mainnet/zora.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0xEF8115F2733fb2033a7c756402Fc1deaa56550Ef", - "L1CrossDomainMessengerProxy": "0xdC40a14d9abd6F410226f1E6de71aE03441ca506", - "L1ERC721BridgeProxy": "0x83A4521A3573Ca87f3a971B169C5A0E1d34481c3", - "L1StandardBridgeProxy": "0x3e2Ea9B92B7E48A52296fD261dc26fd995284631", - "L2OutputOracleProxy": "0x9E6204F750cD866b299594e2aC9eA824E2e5f95c", - "OptimismMintableERC20FactoryProxy": "0xc52BC7344e24e39dF1bf026fe05C4e6E23CfBcFf", - "OptimismPortalProxy": "0x1a0ad011913A150f69f6A19DF447A0CfD9551054", - "ProxyAdmin": "0xD4ef175B9e72cAEe9f1fe7660a6Ec19009903b49", - "SystemConfigProxy": "0xA3cAB0126d5F504B071b81a3e8A2BBBF17930d86", - "ProxyAdminOwner": "0x4a4962275DF8C60a80d3a25faEc5AA7De116A746", - "SystemConfigOwner": "0xC72aE5c7cc9a332699305E29F68Be66c73b60542", - "Guardian": "0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2", - "Challenger": "0xcA4571b1ecBeC86Ea2E660d242c1c29FcB55Dc72", - "UnsafeBlockSigner": "0x3Dc8Dfd0709C835cAd15a6A27e089FF4cF4C9228", - "BatchSubmitter": "0x625726c858dBF78c0125436C943Bf4b4bE9d9033", - "Proposer": "0x48247032092e7b0ecf5dEF611ad89eaf3fC888Dd" -} diff --git a/superchain/extra/addresses/sepolia-dev-0/base-devnet-0.json b/superchain/extra/addresses/sepolia-dev-0/base-devnet-0.json deleted file mode 100644 index 15756d1c8..000000000 --- a/superchain/extra/addresses/sepolia-dev-0/base-devnet-0.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0x882a60911d00867Fe4ea632C479cc48e583A8D69", - "L1CrossDomainMessengerProxy": "0x2cbD403d5BA3949D24ee4dF57805eaC612C2662f", - "L1ERC721BridgeProxy": "0xc3016ED03E087d092d576B585F5222fFD9cadc10", - "L1StandardBridgeProxy": "0x5638e55db5Fcf7A58df525F1098E8569C8DbA80c", - "L2OutputOracleProxy": "0xB5901509329307E3f910f333Fa9C4B4A8EE7CE1A", - "OptimismMintableERC20FactoryProxy": "0xEAa11178375e6B1078d815d6F9F85cBbb69b09Cd", - "OptimismPortalProxy": "0x579c82A835B884336B632eeBeCC78FA08D3291Ec", - "ProxyAdmin": "0xC5aE9023bFA79124ffA50169E1423E733D0166f1", - "SystemConfigProxy": "0x7F67DC4959cb3E532B10A99F41bDD906C46FdFdE", - "SystemConfigOwner": "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430", - "ProxyAdminOwner": "0xAf6E0E871f38c7B653700F7CbAEDafaa2784D430", - "Challenger": "0x5a533AaAC6cd81605b301a1077BC393A94658B6D", - "Guardian": "0x4F43c7422a9b2AC4BC6145Bd4eE206EA73cF8266", - "UnsafeBlockSigner": "0xfd7bc3C58Fe4D4296F11F7843ebbA84D729A24B9", - "BatchSubmitter": "0x212dD524932bC43478688F91045F2682913ad8EE", - "Proposer": "0xBcB04FC753D36dcEeBe9Df7E18E23c46D1fcEA3c" -} diff --git a/superchain/extra/addresses/sepolia-dev-0/oplabs-devnet-0.json b/superchain/extra/addresses/sepolia-dev-0/oplabs-devnet-0.json deleted file mode 100644 index 913a775ae..000000000 --- a/superchain/extra/addresses/sepolia-dev-0/oplabs-devnet-0.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "AddressManager": "0x3eb579b25F6b9547e0073c848389a768FD382296", - "L1CrossDomainMessengerProxy": "0x18e72C15FEE4e995454b919EfaA61D8f116F82dd", - "L1ERC721BridgeProxy": "0x1bb726658E039E8a9A4ac21A41fE5a0704760461", - "L1StandardBridgeProxy": "0x6D8bC564EF04AaF355a10c3eb9b00e349dd077ea", - "OptimismMintableERC20FactoryProxy": "0xA16b8db3b5Cdbaf75158F34034B0537e528E17e2", - "OptimismPortalProxy": "0x76114bd29dFcC7a9892240D317E6c7C2A281Ffc6", - "SystemConfigProxy": "0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7", - "ProxyAdmin": "0x18d890A46A3556e7F36f28C79F6157BC7a59f867", - "SystemConfigOwner": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "ProxyAdminOwner": "0x4377BB0F0103992b31eC12b4d796a8687B8dC8E9", - "Guardian": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "AnchorStateRegistryProxy": "0x03b82AE60989863BCEb0BbD442A70568e5AefB85", - "DelayedWETHProxy": "0xE99696a028171e31a72828A196C27c2Dd670E1aa", - "DisputeGameFactoryProxy": "0x2419423C72998eb1c6c15A235de2f112f8E38efF", - "FaultDisputeGame": "0x3CdB0e38bC990c07eADA1376248BB2a405Ae3B9B", - "Mips": "0xCdD4eabeb5f5d1fD195b15AFBF4eC3CA605Ec8Fe", - "PermissionedDisputeGame": "0xc06B6A93c4b8ef23e1FB535BB2dd80239ca433AC", - "PreimageOracle": "0xA6662E943C763b23e82eEf3868E50007C9Af10bf", - "UnsafeBlockSigner": "0xa95B83e39AA78B00F12fe431865B563793D97AF5", - "BatchSubmitter": "0x19CC7073150D9f5888f09E0e9016d2a39667df14", - "Challenger": "0x8c20c40180751d93E939DDDee3517AE0d1EBeAd2", - "Proposer": "0x95014c45078354Ff839f14192228108Eac82E00A" -} diff --git a/superchain/extra/addresses/sepolia/base.json b/superchain/extra/addresses/sepolia/base.json deleted file mode 100644 index 558eb5e72..000000000 --- a/superchain/extra/addresses/sepolia/base.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0x709c2B8ef4A9feFc629A8a2C1AF424Dc5BD6ad1B", - "L1CrossDomainMessengerProxy": "0xC34855F4De64F1840e5686e64278da901e261f20", - "L1ERC721BridgeProxy": "0x21eFD066e581FA55Ef105170Cc04d74386a09190", - "L1StandardBridgeProxy": "0xfd0Bf71F60660E2f608ed56e1659C450eB113120", - "L2OutputOracleProxy": "0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254", - "OptimismMintableERC20FactoryProxy": "0xb1efB9650aD6d0CC1ed3Ac4a0B7f1D5732696D37", - "OptimismPortalProxy": "0x49f53e41452C74589E85cA1677426Ba426459e85", - "ProxyAdmin": "0x0389E59Aa0a41E4A413Ae70f0008e76CAA34b1F3", - "SystemConfigProxy": "0xf272670eb55e895584501d564AfEB048bEd26194", - "ProxyAdminOwner": "0x0fe884546476dDd290eC46318785046ef68a0BA9", - "SystemConfigOwner": "0x0fe884546476dDd290eC46318785046ef68a0BA9", - "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0xDa3037Ff70Ac92CD867c683BD807e5A484857405", - "UnsafeBlockSigner": "0xb830b99c95Ea32300039624Cb567d324D4b1D83C", - "BatchSubmitter": "0x6CDEbe940BC0F26850285cacA097C11c33103E47", - "Proposer": "0x20044a0d104E9e788A0C984A2B7eAe615afD046b" -} diff --git a/superchain/extra/addresses/sepolia/metal.json b/superchain/extra/addresses/sepolia/metal.json deleted file mode 100644 index eedb45ae8..000000000 --- a/superchain/extra/addresses/sepolia/metal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "AddressManager": "0x394f844B9A0FC876935d1b0b791D9e94Ad905e8b", - "L1CrossDomainMessengerProxy": "0x5D335Aa7d93102110879e3B54985c5F08146091E", - "L1ERC721BridgeProxy": "0x5d6cE6917dBeeacF010c96BfFdaBE89e33a30309", - "L1StandardBridgeProxy": "0x21530aAdF4DCFb9c477171400E40d4ef615868BE", - "L2OutputOracleProxy": "0x75a6B961c8da942Ee03CA641B09C322549f6FA98", - "OptimismMintableERC20FactoryProxy": "0x49Ff2C4be882298e8CA7DeCD195c207c42B45F66", - "OptimismPortalProxy": "0x01D4dfC994878682811b2980653D03E589f093cB", - "SystemConfigProxy": "0x5D63A8Dc2737cE771aa4a6510D063b6Ba2c4f6F2", - "ProxyAdmin": "0xF7Bc4b3a78C7Dd8bE9B69B3128EEB0D6776Ce18A", - "ProxyAdminOwner": "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD", - "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7" -} diff --git a/superchain/extra/addresses/sepolia/mode.json b/superchain/extra/addresses/sepolia/mode.json deleted file mode 100644 index 1faa802a7..000000000 --- a/superchain/extra/addresses/sepolia/mode.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0x83D45725d6562d8CD717673D6bb4c67C07dC1905", - "L1CrossDomainMessengerProxy": "0xc19a60d9E8C27B9A43527c3283B4dd8eDC8bE15C", - "L1ERC721BridgeProxy": "0x015a8c2e0a5fEd579dbb05fd290e413Adc6FC24A", - "L1StandardBridgeProxy": "0xbC5C679879B2965296756CD959C3C739769995E2", - "L2OutputOracleProxy": "0x2634BD65ba27AB63811c74A63118ACb312701Bfa", - "OptimismMintableERC20FactoryProxy": "0x00F7ab8c72D32f55cFf15e8901C2F9f2BF29A3C0", - "OptimismPortalProxy": "0x320e1580effF37E008F1C92700d1eBa47c1B23fD", - "SystemConfigProxy": "0x15cd4f6e0CE3B4832B33cB9c6f6Fe6fc246754c2", - "ProxyAdmin": "0xE7413127F29E050Df65ac3FC9335F85bB10091AE", - "ProxyAdminOwner": "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD", - "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", - "UnsafeBlockSigner": "0x93A14E6894eEB4FF6a373E1Ad4f498c3a207afe4", - "BatchSubmitter": "0x4e6BD53883107B063c502dDd49F9600Dc51b3DDc", - "Proposer": "0xe9e08A478e3a773c1B5D59014A0FDb901e6d1d69" -} diff --git a/superchain/extra/addresses/sepolia/op.json b/superchain/extra/addresses/sepolia/op.json deleted file mode 100644 index 54353605f..000000000 --- a/superchain/extra/addresses/sepolia/op.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "AddressManager": "0x9bFE9c5609311DF1c011c47642253B78a4f33F4B", - "L1CrossDomainMessengerProxy": "0x58Cc85b8D04EA49cC6DBd3CbFFd00B4B8D6cb3ef", - "L1ERC721BridgeProxy": "0xd83e03D576d23C9AEab8cC44Fa98d058D2176D1f", - "L1StandardBridgeProxy": "0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1", - "OptimismMintableERC20FactoryProxy": "0x868D59fF9710159C2B330Cc0fBDF57144dD7A13b", - "OptimismPortalProxy": "0x16Fc5058F25648194471939df75CF27A2fdC48BC", - "ProxyAdmin": "0x189aBAAaa82DfC015A588A7dbaD6F13b1D3485Bc", - "SystemConfigProxy": "0x034edD2A225f7f429A63E0f1D2084B9E0A93b538", - "ProxyAdminOwner": "0x1Eb2fFc903729a0F03966B917003800b145F56E2", - "SystemConfigOwner": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", - "DisputeGameFactoryProxy": "0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1", - "AnchorStateRegistryProxy": "0x218CD9489199F321E1177b56385d333c5B598629", - "DelayedWETHProxy": "0xF3D833949133e4E4D3551343494b34079598EA5a", - "FaultDisputeGame": "0xD5Bc8c45692aada756f2d68f0a2002d6Bf130C42", - "PermissionedDisputeGame": "0xBEA4384faCBcf51279962fbCFb8f16F9eD2fe0C6", - "PreimageOracle": "0x627F825CBd48c4102d36f287be71f4234426b9e4", - "MIPS": "0xFF760A87E41144b336E29b6D4582427dEBdB6dee", - "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0xfd1D2e729aE8eEe2E146c033bf4400fE75284301", - "UnsafeBlockSigner": "0x57CACBB0d30b01eb2462e5dC940c161aff3230D3", - "BatchSubmitter": "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c", - "Proposer": "0x49277EE36A024120Ee218127354c4a3591dc90A9" -} diff --git a/superchain/extra/addresses/sepolia/pgn.json b/superchain/extra/addresses/sepolia/pgn.json deleted file mode 100644 index 10d8285f4..000000000 --- a/superchain/extra/addresses/sepolia/pgn.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0x0Ad91488288BBe60ff38258785568A6D1EB3B983", - "L1CrossDomainMessengerProxy": "0x97f3558Ce48FE71B8CeFA5497708A49531D5A8E1", - "L1ERC721BridgeProxy": "0xBA8397B6f255618D5985d0fB427D8c0496F3a5FA", - "L1StandardBridgeProxy": "0xFaE6abCAF30D23e233AC7faF747F2fC3a5a6Bfa3", - "L2OutputOracleProxy": "0xD5bAc3152ffC25318F848B3DD5dA6C85171BaEEe", - "OptimismMintableERC20FactoryProxy": "0x0167EF3188FDaa2661e4530A4623Ee1aB4555683", - "OptimismPortalProxy": "0xF04BdD5353Bb0EFF6CA60CfcC78594278eBfE179", - "ProxyAdmin": "0x5f336973dabaD13409EA93416b8487D92769e457", - "SystemConfigProxy": "0x4BCCC52151f0ad7C62D45Ce0aA77d9d8ffCE534e", - "ProxyAdminOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "Guardian": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", - "Challenger": "0x69F0FFc19504B57e9AE4B6D7694d028c3CD876F8", - "UnsafeBlockSigner": "0x91Bf8996f15B128FDDC80e170FD1aA2C52659A4e", - "BatchSubmitter": "0x7224e05E6cF6E07aFBE1eFa09a3fA23A637DD485", - "Proposer": "0xD457799C5ba870D609f21048c67a9b11aC611BF0" -} diff --git a/superchain/extra/addresses/sepolia/zora.json b/superchain/extra/addresses/sepolia/zora.json deleted file mode 100644 index c31da4d53..000000000 --- a/superchain/extra/addresses/sepolia/zora.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "AddressManager": "0x27c9392144DFcB6dab113F737356C32435cD1D55", - "L1CrossDomainMessengerProxy": "0x1bDBC0ae22bEc0c2f08B4dd836944b3E28fe9b7A", - "L1ERC721BridgeProxy": "0x16B0a4f451c4CB567703367e587E15Ac108e4311", - "L1StandardBridgeProxy": "0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB", - "L2OutputOracleProxy": "0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9", - "OptimismMintableERC20FactoryProxy": "0x5F3bdd57f01e88cE2F88f00685D30D6eb51A187c", - "OptimismPortalProxy": "0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f", - "ProxyAdmin": "0xE17071F4C216Eb189437fbDBCc16Bb79c4efD9c2", - "SystemConfigProxy": "0xB54c7BFC223058773CF9b739cC5bd4095184Fb08", - "ProxyAdminOwner": "0xE75Cd021F520B160BF6b54D472Fa15e52aFe5aDD", - "SystemConfigOwner": "0x23BA22Dd7923F3a3f2495bB32a6f3c9b9CD1EC6C", - "Guardian": "0x7a50f00e8D05b95F98fE38d8BeE366a7324dCf7E", - "Challenger": "0x45eFFbD799Ab49122eeEAB75B78D9C56A187F9A7", - "UnsafeBlockSigner": "0x3609513933100689bd1f84782529A99239842344", - "BatchSubmitter": "0x3Cd868E221A3be64B161D596A7482257a99D857f", - "Proposer": "0xe8326a5839175dE7f467e66D8bB443aa70DA1c3e" -} diff --git a/superchain/extra/genesis-system-configs/mainnet/base.json b/superchain/extra/genesis-system-configs/mainnet/base.json deleted file mode 100644 index 814d76912..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/base.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x5050F69a9786F081509234F1a7F4684b5E5b76C9", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/mainnet/lyra.json b/superchain/extra/genesis-system-configs/mainnet/lyra.json deleted file mode 100644 index 2e0bed74b..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/lyra.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x14e4E97bDc195d399Ad8E7FC14451C279FE04c8e", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/mainnet/metal.json b/superchain/extra/genesis-system-configs/mainnet/metal.json deleted file mode 100644 index be7a9a32c..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/metal.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0xC94C243f8fb37223F3EB2f7961F7072602A51B8B", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} diff --git a/superchain/extra/genesis-system-configs/mainnet/mode.json b/superchain/extra/genesis-system-configs/mainnet/mode.json deleted file mode 100644 index 4ac494859..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/mode.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x99199a22125034c808ff20f377d91187E8050F2E", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} diff --git a/superchain/extra/genesis-system-configs/mainnet/op.json b/superchain/extra/genesis-system-configs/mainnet/op.json deleted file mode 100644 index 4c1172364..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/op.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x6887246668a3b87F54DeB3b94Ba47a6f63F32985", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/mainnet/orderly.json b/superchain/extra/genesis-system-configs/mainnet/orderly.json deleted file mode 100644 index c6bd50e87..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/orderly.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0xf8dB8Aba597fF36cCD16fECfbb1B816B3236E9b8", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/mainnet/pgn.json b/superchain/extra/genesis-system-configs/mainnet/pgn.json deleted file mode 100644 index a4c274403..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/pgn.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x99526b0e49A95833E734EB556A6aBaFFAb0Ee167", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} diff --git a/superchain/extra/genesis-system-configs/mainnet/superlumio.json b/superchain/extra/genesis-system-configs/mainnet/superlumio.json deleted file mode 100644 index 0a4e888c9..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/superlumio.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x5c53f2fF1030C7fbC0616fD5B8fC6bE97aa27e00", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} diff --git a/superchain/extra/genesis-system-configs/mainnet/zora.json b/superchain/extra/genesis-system-configs/mainnet/zora.json deleted file mode 100644 index 689afd885..000000000 --- a/superchain/extra/genesis-system-configs/mainnet/zora.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x625726c858dBF78c0125436C943Bf4b4bE9d9033", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/sepolia-dev-0/base-devnet-0.json b/superchain/extra/genesis-system-configs/sepolia-dev-0/base-devnet-0.json deleted file mode 100644 index 50ec90de5..000000000 --- a/superchain/extra/genesis-system-configs/sepolia-dev-0/base-devnet-0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x212dD524932bC43478688F91045F2682913ad8EE", - "overhead": "0x0000000000000000000000000000000000000000000000000000000000000834", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "gasLimit": 25000000 -} diff --git a/superchain/extra/genesis-system-configs/sepolia-dev-0/oplabs-devnet-0.json b/superchain/extra/genesis-system-configs/sepolia-dev-0/oplabs-devnet-0.json deleted file mode 100644 index f9dddba75..000000000 --- a/superchain/extra/genesis-system-configs/sepolia-dev-0/oplabs-devnet-0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x19CC7073150D9f5888f09E0e9016d2a39667df14", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} diff --git a/superchain/extra/genesis-system-configs/sepolia/base.json b/superchain/extra/genesis-system-configs/sepolia/base.json deleted file mode 100644 index 4cc7d2710..000000000 --- a/superchain/extra/genesis-system-configs/sepolia/base.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x6CDEbe940BC0F26850285cacA097C11c33103E47", - "overhead": "0x0000000000000000000000000000000000000000000000000000000000000834", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "gasLimit": 25000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/sepolia/metal.json b/superchain/extra/genesis-system-configs/sepolia/metal.json deleted file mode 100644 index 90020d9e9..000000000 --- a/superchain/extra/genesis-system-configs/sepolia/metal.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0xdb80Eca386AC72a55510e33CF9CF7533e75916eE", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} diff --git a/superchain/extra/genesis-system-configs/sepolia/mode.json b/superchain/extra/genesis-system-configs/sepolia/mode.json deleted file mode 100644 index 18aaac43d..000000000 --- a/superchain/extra/genesis-system-configs/sepolia/mode.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x4e6BD53883107B063c502dDd49F9600Dc51b3DDc", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/sepolia/op.json b/superchain/extra/genesis-system-configs/sepolia/op.json deleted file mode 100644 index bc01dfbef..000000000 --- a/superchain/extra/genesis-system-configs/sepolia/op.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/sepolia/pgn.json b/superchain/extra/genesis-system-configs/sepolia/pgn.json deleted file mode 100644 index 78989d358..000000000 --- a/superchain/extra/genesis-system-configs/sepolia/pgn.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x7224e05E6cF6E07aFBE1eFa09a3fA23A637DD485", - "overhead": "0x0000000000000000000000000000000000000000000000000000000000000834", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000f4240", - "gasLimit": 30000000 -} \ No newline at end of file diff --git a/superchain/extra/genesis-system-configs/sepolia/zora.json b/superchain/extra/genesis-system-configs/sepolia/zora.json deleted file mode 100644 index 03cd4ae2d..000000000 --- a/superchain/extra/genesis-system-configs/sepolia/zora.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "batcherAddr": "0x3Cd868E221A3be64B161D596A7482257a99D857f", - "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", - "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", - "gasLimit": 30000000 -} diff --git a/superchain/go.mod b/superchain/go.mod index 9a17f6b53..1a036c61f 100644 --- a/superchain/go.mod +++ b/superchain/go.mod @@ -7,7 +7,6 @@ require ( github.com/stretchr/testify v1.9.0 golang.org/x/crypto v0.23.0 golang.org/x/mod v0.17.0 - gopkg.in/yaml.v3 v3.0.1 ) require ( @@ -17,4 +16,5 @@ require ( github.com/rogpeppe/go-internal v1.10.0 // indirect golang.org/x/sys v0.20.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/superchain/init.go b/superchain/init.go index d72eca65c..843512851 100644 --- a/superchain/init.go +++ b/superchain/init.go @@ -1,13 +1,12 @@ package superchain import ( - "encoding/json" "fmt" "os" "path" "strings" - "gopkg.in/yaml.v3" + "github.com/BurntSushi/toml" ) func init() { @@ -26,7 +25,7 @@ func init() { } // Load superchain-target config - superchainConfigData, err := superchainFS.ReadFile(path.Join("configs", s.Name(), "superchain.yaml")) + superchainConfigData, err := superchainFS.ReadFile(path.Join("configs", s.Name(), "superchain.toml")) if err != nil { panic(fmt.Errorf("failed to read superchain config: %w", err)) } @@ -52,34 +51,15 @@ func init() { } var chainConfig ChainConfig - if err := yaml.Unmarshal(chainConfigData, &chainConfig); err != nil { + if err := toml.Unmarshal(chainConfigData, &chainConfig); err != nil { panic(fmt.Errorf("failed to decode chain config %s/%s: %w", s.Name(), c.Name(), err)) } - chainConfig.Chain = strings.TrimSuffix(c.Name(), ".yaml") + chainConfig.Chain = strings.TrimSuffix(c.Name(), ".toml") (&chainConfig).setNilHardforkTimestampsToDefaultOrZero(&superchainEntry.Config) MustBeValidSuperchainLevel(chainConfig) - jsonName := chainConfig.Chain + ".json" - addressesData, err := extraFS.ReadFile(path.Join("extra", "addresses", s.Name(), jsonName)) - if err != nil { - panic(fmt.Errorf("failed to read addresses data of chain %s/%s: %w", s.Name(), jsonName, err)) - } - var addrs AddressList - if err := json.Unmarshal(addressesData, &addrs); err != nil { - panic(fmt.Errorf("failed to decode addresses %s/%s: %w", s.Name(), jsonName, err)) - } - - genesisSysCfgData, err := extraFS.ReadFile(path.Join("extra", "genesis-system-configs", s.Name(), jsonName)) - if err != nil { - panic(fmt.Errorf("failed to read genesis system config data of chain %s/%s: %w", s.Name(), jsonName, err)) - } - var genesisSysCfg GenesisSystemConfig - if err := json.Unmarshal(genesisSysCfgData, &genesisSysCfg); err != nil { - panic(fmt.Errorf("failed to decode genesis system config %s/%s: %w", s.Name(), jsonName, err)) - } - chainConfig.Superchain = s.Name() if other, ok := OPChains[chainConfig.ChainID]; ok { panic(fmt.Errorf("found chain config %q in superchain target %q with chain ID %d "+ @@ -89,9 +69,8 @@ func init() { } superchainEntry.ChainIDs = append(superchainEntry.ChainIDs, chainConfig.ChainID) OPChains[chainConfig.ChainID] = &chainConfig - Addresses[chainConfig.ChainID] = &addrs - GenesisSystemConfigs[chainConfig.ChainID] = &genesisSysCfg - + Addresses[chainConfig.ChainID] = &chainConfig.Addresses + GenesisSystemConfigs[chainConfig.ChainID] = &chainConfig.Genesis.SystemConfig } ciMainnetRPC := os.Getenv("CIRCLE_CI_MAINNET_RPC") diff --git a/superchain/internal/codegen/main.go b/superchain/internal/codegen/main.go index 7f154974f..54798b84b 100644 --- a/superchain/internal/codegen/main.go +++ b/superchain/internal/codegen/main.go @@ -33,6 +33,7 @@ type Parent struct { func main() { allChains := make([]ChainEntry, 0) superchainTargets := make([]string, 0) + chainAddresses := make(map[uint64]AddressList, 0) for t := range Superchains { superchainTargets = append(superchainTargets, t) } @@ -54,6 +55,7 @@ func main() { SuperchainLevel: uint(chain.SuperchainLevel), Parent: Parent{"L2", chain.Superchain, []string{}}, } + chainAddresses[chainId] = chain.Addresses switch chain.SuperchainLevel { case Standard: standardChains = append(standardChains, chainEntry) @@ -93,6 +95,18 @@ func main() { panic(err) } fmt.Println("Wrote chainList.toml file") + + // Marshal to JSON + addressesBytes, err := json.MarshalIndent(chainAddresses, "", " ") + if err != nil { + panic(err) + } + + err = os.WriteFile(filepath.Join(currentDir, "../../extra/addresses/addresses.json"), addressesBytes, 0o644) + if err != nil { + panic(err) + } + fmt.Println("Wrote addresses.json file") } func currentDir() string { diff --git a/superchain/superchain.go b/superchain/superchain.go index 6a6dc6848..e344b4673 100644 --- a/superchain/superchain.go +++ b/superchain/superchain.go @@ -11,13 +11,11 @@ import ( "io/fs" "path" "reflect" - "regexp" - "strconv" "strings" "time" + "github.com/BurntSushi/toml" "golang.org/x/mod/semver" - "gopkg.in/yaml.v3" ) var ErrEmptyVersion = errors.New("empty version") @@ -25,47 +23,47 @@ var ErrEmptyVersion = errors.New("empty version") //go:embed configs var superchainFS embed.FS -//go:embed extra/addresses extra/bytecodes extra/genesis extra/genesis-system-configs +//go:embed extra/bytecodes extra/genesis var extraFS embed.FS type BlockID struct { - Hash Hash `yaml:"hash"` - Number uint64 `yaml:"number"` + Hash Hash `toml:"hash"` + Number uint64 `toml:"number"` } type ChainGenesis struct { - L1 BlockID `yaml:"l1"` - L2 BlockID `yaml:"l2"` - L2Time uint64 `json:"l2_time" yaml:"l2_time"` - ExtraData *HexBytes `yaml:"extra_data,omitempty"` - SystemConfig SystemConfig `json:"system_config" yaml:"-"` + L1 BlockID `toml:"l1"` + L2 BlockID `toml:"l2"` + L2Time uint64 `toml:"l2_time" json:"l2_time"` + ExtraData *HexBytes `toml:"extra_data,omitempty"` + SystemConfig SystemConfig `toml:"system_config" json:"system_config" ` } type SystemConfig struct { - BatcherAddr Address `json:"batcherAddr"` - Overhead string `json:"overhead"` - Scalar string `json:"scalar"` - GasLimit uint64 `json:"gasLimit"` - BaseFeeScalar *uint64 `json:"baseFeeScalar,omitempty"` - BlobBaseFeeScalar *uint64 `json:"blobBaseFeeScalar,omitempty"` + BatcherAddr Address `json:"batcherAddr" toml:"batcherAddress"` + Overhead Hash `json:"overhead" toml:"overhead"` + Scalar Hash `json:"scalar" toml:"scalar"` + GasLimit uint64 `json:"gasLimit" toml:"gasLimit"` + BaseFeeScalar *uint64 `json:"baseFeeScalar,omitempty" toml:"baseFeeScalar,omitempty"` + BlobBaseFeeScalar *uint64 `json:"blobBaseFeeScalar,omitempty" toml:"blobBaseFeeScalar,omitempty"` } type GenesisData struct { - L1 GenesisLayer `json:"l1" yaml:"l1"` - L2 GenesisLayer `json:"l2" yaml:"l2"` - L2Time int `json:"l2_time" yaml:"l2_time"` + L1 GenesisLayer `json:"l1"` + L2 GenesisLayer `json:"l2"` + L2Time int `json:"l2_time"` } type GenesisLayer struct { - Hash string `json:"hash" yaml:"hash"` - Number int `json:"number" yaml:"number"` + Hash string `json:"hash"` + Number int `json:"number"` } type HardForkConfiguration struct { - CanyonTime *uint64 `json:"canyon_time,omitempty" yaml:"canyon_time,omitempty"` - DeltaTime *uint64 `json:"delta_time,omitempty" yaml:"delta_time,omitempty"` - EcotoneTime *uint64 `json:"ecotone_time,omitempty" yaml:"ecotone_time,omitempty"` - FjordTime *uint64 `json:"fjord_time,omitempty" yaml:"fjord_time,omitempty"` + CanyonTime *uint64 `json:"canyon_time,omitempty" toml:"canyon_time,omitempty"` + DeltaTime *uint64 `json:"delta_time,omitempty" toml:"delta_time,omitempty"` + EcotoneTime *uint64 `json:"ecotone_time,omitempty" toml:"ecotone_time,omitempty"` + FjordTime *uint64 `json:"fjord_time,omitempty" toml:"fjord_time,omitempty"` } type SuperchainLevel uint @@ -76,41 +74,43 @@ const ( ) type ChainConfig struct { - Name string `yaml:"name"` - ChainID uint64 `yaml:"chain_id"` - PublicRPC string `yaml:"public_rpc"` - SequencerRPC string `yaml:"sequencer_rpc"` - Explorer string `yaml:"explorer"` + Name string `toml:"name"` + ChainID uint64 `toml:"chain_id"` + PublicRPC string `toml:"public_rpc"` + SequencerRPC string `toml:"sequencer_rpc"` + Explorer string `toml:"explorer"` - SuperchainLevel SuperchainLevel `yaml:"superchain_level"` + SuperchainLevel SuperchainLevel `toml:"superchain_level"` // If StandardChainCandidate is true, standard chain validation checks will // run on this chain even if it is a frontier chain. - StandardChainCandidate bool `yaml:"standard_chain_candidate,omitempty"` + StandardChainCandidate bool `toml:"standard_chain_candidate,omitempty"` // If SuperchainTime is set, hardforks times after SuperchainTime // will be inherited from the superchain-wide config. - SuperchainTime *uint64 `yaml:"superchain_time"` + SuperchainTime *uint64 `toml:"superchain_time"` - BatchInboxAddr Address `yaml:"batch_inbox_addr"` - - Genesis ChainGenesis `yaml:"genesis"` + BatchInboxAddr Address `toml:"batch_inbox_addr"` // Superchain is a simple string to identify the superchain. // This is implied by directory structure, and not encoded in the config file itself. - Superchain string `yaml:"-"` + Superchain string `toml:"-"` // Chain is a simple string to identify the chain, within its superchain context. // This matches the resource filename, it is not encoded in the config file itself. - Chain string `yaml:"-"` + Chain string `toml:"-"` // Hardfork Configuration Overrides - HardForkConfiguration `yaml:",inline"` + HardForkConfiguration `toml:",inline"` - BlockTime uint64 `yaml:"block_time"` - SequencerWindowSize uint64 `yaml:"seq_window_size"` + BlockTime uint64 `toml:"block_time"` + SequencerWindowSize uint64 `toml:"seq_window_size"` // Optional feature - Plasma *PlasmaConfig `yaml:"plasma,omitempty"` + Plasma *PlasmaConfig `toml:"plasma,omitempty"` + + Genesis ChainGenesis `toml:"genesis"` + + Addresses AddressList `toml:"addresses"` } func (c ChainConfig) Identifier() string { @@ -118,13 +118,13 @@ func (c ChainConfig) Identifier() string { } type PlasmaConfig struct { - DAChallengeAddress *Address `json:"da_challenge_contract_address" yaml:"da_challenge_contract_address"` + DAChallengeAddress *Address `json:"da_challenge_contract_address" toml:"da_challenge_contract_address"` // DA challenge window value set on the DAC contract. Used in plasma mode // to compute when a commitment can no longer be challenged. - DAChallengeWindow *uint64 `json:"da_challenge_window" yaml:"da_challenge_window"` + DAChallengeWindow *uint64 `json:"da_challenge_window" toml:"da_challenge_window"` // DA resolve window value set on the DAC contract. Used in plasma mode // to compute when a challenge expires and trigger a reorg if needed. - DAResolveWindow *uint64 `json:"da_resolve_window" yaml:"da_resolve_window"` + DAResolveWindow *uint64 `json:"da_resolve_window" toml:"da_resolve_window"` } // setNilHardforkTimestampsToDefaultOrZero overwrites each unspecified hardfork activation time override @@ -171,105 +171,96 @@ func (c *ChainConfig) setNilHardforkTimestampsToDefaultOrZero(s *SuperchainConfi } } -// EnhanceYAML creates a customized yaml string from a RollupConfig. After completion, -// the *yaml.Node pointer can be used with a yaml encoder to write the custom format to file -func (c *ChainConfig) EnhanceYAML(ctx context.Context, node *yaml.Node) error { - hexStringRegex := regexp.MustCompile(`^0x[a-fA-F0-9]+$`) +// MarshalJSON excludes any addresses set to 0x000...000 +func (a AddressList) MarshalJSON() ([]byte, error) { + type AddressList2 AddressList // use another type to prevent infinite recursion later on + b := AddressList2(a) - // Check if context is done before processing - if err := ctx.Err(); err != nil { - return fmt.Errorf("context error: %w", err) + o, err := json.Marshal(b) + if err != nil { + return nil, err } - if node.Kind == yaml.DocumentNode && len(node.Content) > 0 { - node = node.Content[0] // Dive into the document node + out := make(map[string]Address) + err = json.Unmarshal(o, &out) + if err != nil { + return nil, err } - var lastKey string - for i := 0; i < len(node.Content)-1; i += 2 { - keyNode := node.Content[i] - valNode := node.Content[i+1] - if valNode.Kind == yaml.ScalarNode && valNode.Tag == "!!str" && hexStringRegex.MatchString(valNode.Value) { - valNode.Style = yaml.DoubleQuotedStyle - } - - // Add blank line AFTER these keys - if lastKey == "explorer" || lastKey == "genesis" { - keyNode.HeadComment = "\n" + for k, v := range out { + if (v == Address{}) { + delete(out, k) } + } - // Add blank line BEFORE these keys - if keyNode.Value == "genesis" || keyNode.Value == "plasma" || keyNode.Value == "block_time" { - keyNode.HeadComment = "\n" - } + return json.Marshal(out) +} - // Recursive call to check nested fields for "_time" suffix - if valNode.Kind == yaml.MappingNode { - if err := c.EnhanceYAML(ctx, valNode); err != nil { - return err - } - } +func (c *ChainConfig) GenerateTOMLComments(ctx context.Context) (map[string]string, error) { + comments := make(map[string]string) - if keyNode.Value == "superchain_time" { - if valNode.Value == "" || valNode.Value == "null" { - keyNode.LineComment = "Missing hardfork times are NOT yet inherited from superchain.yaml" - } else if valNode.Value == "0" { - keyNode.LineComment = "Missing hardfork times are inherited from superchain.yaml" - } else { - keyNode.LineComment = "Missing hardfork times after this time are inherited from superchain.yaml" - } + createTimestampComment := func(fieldName string, fieldValue *uint64, comments map[string]string) { + if fieldValue != nil { + timestamp := time.Unix(int64(*fieldValue), 0).UTC() + comments[fieldName] = fmt.Sprintf("# %s", timestamp.Format("Mon 2 Jan 2006 15:04:05 UTC")) } + } - // Add human readable timestamp in comment - if strings.HasSuffix(keyNode.Value, "_time") && valNode.Value != "" && valNode.Value != "null" && keyNode.Value != "block_time" { - t, err := strconv.ParseInt(valNode.Value, 10, 64) - if err != nil { - return fmt.Errorf("failed to convert yaml string timestamp to int: %w", err) - } - timestamp := time.Unix(t, 0).UTC() - keyNode.LineComment = timestamp.Format("Mon 2 Jan 2006 15:04:05 UTC") + if c.SuperchainTime != nil { + if *c.SuperchainTime == 0 { + comments["superchain_time"] = "# Missing hardfork times are inherited from superchain.toml" + } else { + createTimestampComment("superchain_time", c.SuperchainTime, comments) } + } - if keyNode.Value == "standard_chain_candidate" { - keyNode.LineComment = "This is a temporary field which causes most of the standard validation checks to run on this chain" - } + createTimestampComment("canyon_time", c.CanyonTime, comments) + createTimestampComment("delta_time", c.DeltaTime, comments) + createTimestampComment("ecotone_time", c.EcotoneTime, comments) + createTimestampComment("fjord_time", c.FjordTime, comments) - lastKey = keyNode.Value + if c.StandardChainCandidate { + comments["standard_chain_candidate"] = "# This is a temporary field which causes most of the standard validation checks to run on this chain" } - return nil + + return comments, nil } type Roles struct { - SystemConfigOwner Address `json:"SystemConfigOwner"` - ProxyAdminOwner Address `json:"ProxyAdminOwner"` - Guardian Address `json:"Guardian"` - Challenger Address `json:"Challenger"` - Proposer Address `json:"Proposer"` - UnsafeBlockSigner Address `json:"UnsafeBlockSigner"` - BatchSubmitter Address `json:"BatchSubmitter"` + SystemConfigOwner Address `json:"SystemConfigOwner" toml:"SystemConfigOwner"` + ProxyAdminOwner Address `json:"ProxyAdminOwner" toml:"ProxyAdminOwner"` + Guardian Address `json:"Guardian" toml:"Guardian"` + Challenger Address `json:"Challenger" toml:"Challenger"` + Proposer Address `json:"Proposer" toml:"Proposer"` + UnsafeBlockSigner Address `json:"UnsafeBlockSigner" toml:"UnsafeBlockSigner"` + BatchSubmitter Address `json:"BatchSubmitter" toml:"BatchSubmitter"` } // AddressList represents the set of network specific contracts and roles for a given network. type AddressList struct { - Roles `json:",inline"` - AddressManager Address `json:"AddressManager"` - L1CrossDomainMessengerProxy Address `json:"L1CrossDomainMessengerProxy"` - L1ERC721BridgeProxy Address `json:"L1ERC721BridgeProxy"` - L1StandardBridgeProxy Address `json:"L1StandardBridgeProxy"` - L2OutputOracleProxy Address `json:"L2OutputOracleProxy"` - OptimismMintableERC20FactoryProxy Address `json:"OptimismMintableERC20FactoryProxy"` - OptimismPortalProxy Address `json:"OptimismPortalProxy"` - SystemConfigProxy Address `json:"SystemConfigProxy"` - ProxyAdmin Address `json:"ProxyAdmin"` + Roles `json:",inline" toml:",inline"` + AddressManager Address `json:"AddressManager" toml:"AddressManager"` + L1CrossDomainMessengerProxy Address `json:"L1CrossDomainMessengerProxy" toml:"L1CrossDomainMessengerProxy"` + L1ERC721BridgeProxy Address `json:"L1ERC721BridgeProxy" toml:"L1ERC721BridgeProxy"` + L1StandardBridgeProxy Address `json:"L1StandardBridgeProxy" toml:"L1StandardBridgeProxy"` + L2OutputOracleProxy Address `json:"L2OutputOracleProxy" toml:"L2OutputOracleProxy,omitempty"` + OptimismMintableERC20FactoryProxy Address `json:"OptimismMintableERC20FactoryProxy" toml:"OptimismMintableERC20FactoryProxy"` + OptimismPortalProxy Address `json:"OptimismPortalProxy,omitempty" toml:"OptimismPortalProxy,omitempty"` + SystemConfigProxy Address `json:"SystemConfigProxy" toml:"SystemConfigProxy"` + ProxyAdmin Address `json:"ProxyAdmin" toml:"ProxyAdmin"` + SuperchainConfig Address `json:"SuperchainConfig,omitempty" toml:"SuperchainConfig,omitempty"` // Fault Proof contracts: - AnchorStateRegistryProxy Address `json:"AnchorStateRegistryProxy,omitempty"` - DelayedWETHProxy Address `json:"DelayedWETHProxy,omitempty"` - DisputeGameFactoryProxy Address `json:"DisputeGameFactoryProxy,omitempty"` - FaultDisputeGame Address `json:"FaultDisputeGame,omitempty"` - MIPS Address `json:"MIPS,omitempty"` - PermissionedDisputeGame Address `json:"PermissionedDisputeGame,omitempty"` - PreimageOracle Address `json:"PreimageOracle,omitempty"` + AnchorStateRegistryProxy Address `json:"AnchorStateRegistryProxy,omitempty" toml:"AnchorStateRegistryProxy,omitempty"` + DelayedWETHProxy Address `json:"DelayedWETHProxy,omitempty" toml:"DelayedWETHProxy,omitempty"` + DisputeGameFactoryProxy Address `json:"DisputeGameFactoryProxy,omitempty" toml:"DisputeGameFactoryProxy,omitempty"` + FaultDisputeGame Address `json:"FaultDisputeGame,omitempty" toml:"FaultDisputeGame,omitempty"` + MIPS Address `json:"MIPS,omitempty" toml:"MIPS,omitempty"` + PermissionedDisputeGame Address `json:"PermissionedDisputeGame,omitempty" toml:"PermissionedDisputeGame,omitempty"` + PreimageOracle Address `json:"PreimageOracle,omitempty" toml:"PreimageOracle,omitempty"` + + // Plasma contracts: + DAChallengeAddress Address `json:"DAChallengeAddress,omitempty" toml:"DAChallengeAddress,omitempty"` } // AddressFor returns a nonzero address for the supplied name, if it has been specified @@ -338,32 +329,32 @@ type AddressSet map[string]Address // VersionedContract represents a contract that has a semantic version. type VersionedContract struct { - Version string `json:"version"` - Address Address `json:"address"` + Version string `json:"version" toml:"version"` + Address Address `json:"address" toml:"address"` } // ContractVersions represents the desired semantic version of the contracts // in the superchain. This currently only supports L1 contracts but could // represent L2 predeploys in the future. type ContractVersions struct { - L1CrossDomainMessenger string `yaml:"l1_cross_domain_messenger" toml:"l1_cross_domain_messenger"` - L1ERC721Bridge string `yaml:"l1_erc721_bridge" toml:"l1_erc721_bridge"` - L1StandardBridge string `yaml:"l1_standard_bridge" toml:"l1_standard_bridge"` - L2OutputOracle string `yaml:"l2_output_oracle,omitempty" toml:"l2_output_oracle,omitempty"` - OptimismMintableERC20Factory string `yaml:"optimism_mintable_erc20_factory" toml:"optimism_mintable_erc20_factory"` - OptimismPortal string `yaml:"optimism_portal" toml:"optimism_portal"` - SystemConfig string `yaml:"system_config" toml:"system_config"` + L1CrossDomainMessenger string `toml:"l1_cross_domain_messenger"` + L1ERC721Bridge string `toml:"l1_erc721_bridge"` + L1StandardBridge string `toml:"l1_standard_bridge"` + L2OutputOracle string `toml:"l2_output_oracle,omitempty"` + OptimismMintableERC20Factory string `toml:"optimism_mintable_erc20_factory"` + OptimismPortal string `toml:"optimism_portal"` + SystemConfig string `toml:"system_config"` // Superchain-wide contracts: - ProtocolVersions string `yaml:"protocol_versions" toml:"protocol_versions"` - SuperchainConfig string `yaml:"superchain_config,omitempty"` + ProtocolVersions string `toml:"protocol_versions"` + SuperchainConfig string `toml:"superchain_config,omitempty"` // Fault Proof contracts: - AnchorStateRegistry string `yaml:"anchor_state_registry,omitempty" toml:"anchor_state_registry,omitempty"` - DelayedWETH string `yaml:"delayed_weth,omitempty" toml:"delayed_weth,omitempty"` - DisputeGameFactory string `yaml:"dispute_game_factory,omitempty" toml:"dispute_game_factory,omitempty"` - FaultDisputeGame string `yaml:"fault_dispute_game,omitempty" toml:"fault_dispute_game,omitempty"` - MIPS string `yaml:"mips,omitempty" toml:"mips,omitempty"` - PermissionedDisputeGame string `yaml:"permissioned_dispute_game,omitempty" toml:"permissioned_dispute_game,omitempty"` - PreimageOracle string `yaml:"preimage_oracle,omitempty" toml:"preimage_oracle,omitempty"` + AnchorStateRegistry string `toml:"anchor_state_registry,omitempty"` + DelayedWETH string `toml:"delayed_weth,omitempty"` + DisputeGameFactory string `toml:"dispute_game_factory,omitempty"` + FaultDisputeGame string `toml:"fault_dispute_game,omitempty"` + MIPS string `toml:"mips,omitempty"` + PermissionedDisputeGame string `toml:"permissioned_dispute_game,omitempty"` + PreimageOracle string `toml:"preimage_oracle,omitempty"` } // VersionFor returns the version for the supplied contract name, if it exits @@ -485,33 +476,33 @@ type Genesis struct { } type SuperchainL1Info struct { - ChainID uint64 `yaml:"chain_id"` - PublicRPC string `yaml:"public_rpc"` - Explorer string `yaml:"explorer"` + ChainID uint64 `toml:"chain_id"` + PublicRPC string `toml:"public_rpc"` + Explorer string `toml:"explorer"` } type SuperchainConfig struct { - Name string `yaml:"name"` - L1 SuperchainL1Info `yaml:"l1"` + Name string `toml:"name"` + L1 SuperchainL1Info `toml:"l1"` - ProtocolVersionsAddr *Address `yaml:"protocol_versions_addr,omitempty"` - SuperchainConfigAddr *Address `yaml:"superchain_config_addr,omitempty"` + ProtocolVersionsAddr *Address `toml:"protocol_versions_addr,omitempty"` + SuperchainConfigAddr *Address `toml:"superchain_config_addr,omitempty"` // Hardfork Configuration. These values may be overridden by individual chains. hardForkDefaults HardForkConfiguration } -// custom unmarshal function to allow yaml to be unmarshalled into unexported fields +// custom unmarshal function to allow toml to be unmarshalled into unexported fields func unMarshalSuperchainConfig(data []byte, s *SuperchainConfig) error { temp := struct { - *SuperchainConfig `yaml:",inline"` - HardForks *HardForkConfiguration `yaml:",inline"` + *SuperchainConfig `toml:",inline"` + *HardForkConfiguration `toml:",inline"` }{ - SuperchainConfig: s, - HardForks: &s.hardForkDefaults, + s, + &s.hardForkDefaults, } - return yaml.Unmarshal(data, temp) + return toml.Unmarshal(data, &temp) } type Superchain struct { @@ -538,16 +529,16 @@ var OPChains = map[uint64]*ChainConfig{} var Addresses = map[uint64]*AddressList{} -var GenesisSystemConfigs = map[uint64]*GenesisSystemConfig{} +var GenesisSystemConfigs = map[uint64]*SystemConfig{} // SuperchainSemver maps superchain name to a contract name : approved semver version structure. var SuperchainSemver map[string]ContractVersions func isConfigFile(c fs.DirEntry) bool { return (!c.IsDir() && - strings.HasSuffix(c.Name(), ".yaml") && - c.Name() != "superchain.yaml" && - c.Name() != "semver.yaml") + strings.HasSuffix(c.Name(), ".toml") && + c.Name() != "superchain.toml" && + c.Name() != "semver.toml") } func LoadGenesis(chainID uint64) (*Genesis, error) { diff --git a/superchain/superchain_test.go b/superchain/superchain_test.go index f53a9440b..4cada1d82 100644 --- a/superchain/superchain_test.go +++ b/superchain/superchain_test.go @@ -5,8 +5,8 @@ import ( "strings" "testing" + "github.com/BurntSushi/toml" "github.com/stretchr/testify/require" - "gopkg.in/yaml.v3" ) func TestAddressFor(t *testing.T) { @@ -64,7 +64,7 @@ func TestChainIds(t *testing.T) { require.NoError(t, err) var chainConfig ChainConfig - require.NoError(t, yaml.Unmarshal(configBytes, &chainConfig)) + require.NoError(t, toml.Unmarshal(configBytes, &chainConfig)) storeIfUnique(chainConfig.ChainID) } @@ -189,24 +189,23 @@ func testNetworkUpgradeTimestampOffset(l2GenesisTime uint64, blockTime uint64, u } func TestSuperchainConfigUnmarshaling(t *testing.T) { - rawYAML := ` -name: Mickey Mouse -l1: - chain_id: 314 - public_rpc: https://disney.com - explorer: https://disneyscan.io - -protocol_versions_addr: "0x252CbE9517F731C618961D890D534183822dcC8d" -superchain_config_addr: "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7" - -canyon_time: 1 -delta_time: 2 -ecotone_time: 3 -fjord_time: + rawTOML := ` +name = "Mickey Mouse" +protocol_versions_addr = "0x252CbE9517F731C618961D890D534183822dcC8d" +superchain_config_addr = "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7" + +canyon_time = 1 +delta_time = 2 +ecotone_time = 3 + +[l1] + chain_id = 314 + public_rpc = "https://disney.com" + explorer = "https://disneyscan.io" ` s := SuperchainConfig{} - err := unMarshalSuperchainConfig([]byte(rawYAML), &s) + err := unMarshalSuperchainConfig([]byte(rawTOML), &s) require.NoError(t, err) require.Equal(t, "Mickey Mouse", s.Name) @@ -215,6 +214,7 @@ fjord_time: PublicRPC: "https://disney.com", Explorer: "https://disneyscan.io", }, s.L1) + require.Equal(t, "0x252CbE9517F731C618961D890D534183822dcC8d", s.ProtocolVersionsAddr.String()) require.Equal(t, "0x02d91Cf852423640d93920BE0CAdceC0E7A00FA7", s.SuperchainConfigAddr.String()) require.Equal(t, uint64Ptr(uint64(1)), s.hardForkDefaults.CanyonTime) @@ -237,42 +237,36 @@ func TestHardForkOverridesAndDefaults(t *testing.T) { } overridenCanyonTime := uint64Ptr(uint64(8)) - override := []byte(`canyon_time: 8`) - nilOverride := []byte(`canyon_time:`) - nilOverride2 := []byte(``) - nilOverride3 := []byte(`superchain_time: 2`) - nilOverride4 := []byte(`superchain_time: 0`) - nilOverride5 := []byte(`superchain_time: 10`) - nilOverride6 := []byte(` -superchain_time: 1 -genesis: - l2_time: 4 + override := []byte(`canyon_time = 8`) + nilOverride1 := []byte(`superchain_time = 2`) + nilOverride2 := []byte(`superchain_time = 0`) + nilOverride3 := []byte(`superchain_time = 10`) + nilOverride4 := []byte(` +superchain_time = 1 +[genesis] + l2_time = 4 `) type testCase struct { name string scConfig SuperchainConfig - rawYAML []byte + rawTOML []byte expectedCanyonTime *uint64 } testCases := []testCase{ {"default + override (nil superchain_time)= override", defaultSuperchainConfig, override, overridenCanyonTime}, - {"default + nil override (nil superchain_time) = nil", defaultSuperchainConfig, nilOverride, nil}, - {"default + no override (nil superchain_time )= nil", defaultSuperchainConfig, nilOverride2, nil}, {"nil default + override = override", nilDefaultSuperchainConfig, override, overridenCanyonTime}, - {"nil default + nil override = nil", nilDefaultSuperchainConfig, nilOverride, nil}, - {"nil default + no override = nil", nilDefaultSuperchainConfig, nilOverride2, nil}, - {"default + nil override (default after superchain_time) = default", defaultSuperchainConfig, nilOverride3, &defaultCanyonTime}, - {"default + nil override (default after zero superchain_time) = default", defaultSuperchainConfig, nilOverride4, &defaultCanyonTime}, - {"default + nil override (default before superchain_time) = nil", defaultSuperchainConfig, nilOverride5, nil}, - {"default + nil override (default after zero superchain_time but before genesis) = 0", defaultSuperchainConfig, nilOverride6, uint64Ptr(0)}, + {"default + nil override (default after superchain_time) = default", defaultSuperchainConfig, nilOverride1, &defaultCanyonTime}, + {"default + nil override (default after zero superchain_time) = default", defaultSuperchainConfig, nilOverride2, &defaultCanyonTime}, + {"default + nil override (default before superchain_time) = nil", defaultSuperchainConfig, nilOverride3, nil}, + {"default + nil override (default after zero superchain_time but before genesis) = 0", defaultSuperchainConfig, nilOverride4, uint64Ptr(0)}, } executeTestCase := func(t *testing.T, tt testCase) { c := ChainConfig{} - err := yaml.Unmarshal([]byte(tt.rawYAML), &c) + err := toml.Unmarshal([]byte(tt.rawTOML), &c) require.NoError(t, err) c.setNilHardforkTimestampsToDefaultOrZero(&tt.scConfig) @@ -295,12 +289,12 @@ func TestHardForkOverridesAndDefaults2(t *testing.T) { c := ChainConfig{} - rawYAML := ` -ecotone_time: 2 -fjord_time: 3 + rawTOML := ` +ecotone_time = 2 +fjord_time = 3 ` - err := yaml.Unmarshal([]byte(rawYAML), &c) + err := toml.Unmarshal([]byte(rawTOML), &c) require.NoError(t, err) c.setNilHardforkTimestampsToDefaultOrZero(&defaultSuperchainConfig)