github.com/ethereum-optimism/optimism@v1.7.2/op-node/chaincfg/chains.go (about) 1 package chaincfg 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/ethereum-optimism/superchain-registry/superchain" 8 9 "github.com/ethereum-optimism/optimism/op-node/rollup" 10 ) 11 12 var Mainnet, Goerli, Sepolia *rollup.Config 13 14 func init() { 15 mustCfg := func(name string) *rollup.Config { 16 cfg, err := GetRollupConfig(name) 17 if err != nil { 18 panic(fmt.Errorf("failed to load rollup config %q: %w", name, err)) 19 } 20 return cfg 21 } 22 Mainnet = mustCfg("op-mainnet") 23 Goerli = mustCfg("op-goerli") 24 Sepolia = mustCfg("op-sepolia") 25 } 26 27 var L2ChainIDToNetworkDisplayName = func() map[string]string { 28 out := make(map[string]string) 29 for _, netCfg := range superchain.OPChains { 30 out[fmt.Sprintf("%d", netCfg.ChainID)] = netCfg.Name 31 } 32 return out 33 }() 34 35 // AvailableNetworks returns the selection of network configurations that is available by default. 36 func AvailableNetworks() []string { 37 var networks []string 38 for _, cfg := range superchain.OPChains { 39 networks = append(networks, cfg.Chain+"-"+cfg.Superchain) 40 } 41 return networks 42 } 43 44 func handleLegacyName(name string) string { 45 switch name { 46 case "goerli": 47 return "op-goerli" 48 case "mainnet": 49 return "op-mainnet" 50 case "sepolia": 51 return "op-sepolia" 52 default: 53 return name 54 } 55 } 56 57 // ChainByName returns a chain, from known available configurations, by name. 58 // ChainByName returns nil when the chain name is unknown. 59 func ChainByName(name string) *superchain.ChainConfig { 60 // Handle legacy name aliases 61 name = handleLegacyName(name) 62 for _, chainCfg := range superchain.OPChains { 63 if strings.EqualFold(chainCfg.Chain+"-"+chainCfg.Superchain, name) { 64 return chainCfg 65 } 66 } 67 return nil 68 } 69 70 func GetRollupConfig(name string) (*rollup.Config, error) { 71 chainCfg := ChainByName(name) 72 if chainCfg == nil { 73 return nil, fmt.Errorf("invalid network: %q", name) 74 } 75 rollupCfg, err := rollup.LoadOPStackRollupConfig(chainCfg.ChainID) 76 if err != nil { 77 return nil, fmt.Errorf("failed to load rollup config: %w", err) 78 } 79 return rollupCfg, nil 80 }