github.com/ethereum-optimism/optimism@v1.7.2/op-node/chaincfg/chains_test.go (about) 1 package chaincfg 2 3 import ( 4 "math/big" 5 "testing" 6 7 "github.com/ethereum-optimism/optimism/op-node/rollup" 8 "github.com/ethereum-optimism/optimism/op-service/eth" 9 "github.com/ethereum/go-ethereum/common" 10 "github.com/stretchr/testify/require" 11 ) 12 13 // TestGetRollupConfig tests that the configs sourced from the superchain-registry match 14 // the configs that were embedded in the op-node manually before the superchain-registry was utilized. 15 // 16 // The superchain-registry repository is a work in progress. 17 // At a later date, it will be proposed to, and must be approved by, Optimism Governance. 18 // Until that time, the configuration described in the superchain-registry is subject to change. 19 // 20 // This test ensures no op-node config-loading behavior changes before 21 // the superchain-registry is no longer deemed experimental. 22 func TestGetRollupConfig(t *testing.T) { 23 configsByName := map[string]rollup.Config{ 24 "goerli": goerliCfg, 25 "mainnet": mainnetCfg, 26 "sepolia": sepoliaCfg, 27 "oplabs-devnet-0-sepolia-dev-0": sepoliaDev0Cfg, 28 } 29 30 for name, expectedCfg := range configsByName { 31 gotCfg, err := GetRollupConfig(name) 32 require.NoError(t, err) 33 34 require.Equalf(t, expectedCfg, *gotCfg, "rollup-configs from superchain-registry must match for %v", name) 35 } 36 } 37 38 var mainnetCfg = rollup.Config{ 39 Genesis: rollup.Genesis{ 40 L1: eth.BlockID{ 41 Hash: common.HexToHash("0x438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec04108"), 42 Number: 17422590, 43 }, 44 L2: eth.BlockID{ 45 Hash: common.HexToHash("0xdbf6a80fef073de06add9b0d14026d6e5a86c85f6d102c36d3d8e9cf89c2afd3"), 46 Number: 105235063, 47 }, 48 L2Time: 1686068903, 49 SystemConfig: eth.SystemConfig{ 50 BatcherAddr: common.HexToAddress("0x6887246668a3b87f54deb3b94ba47a6f63f32985"), 51 Overhead: eth.Bytes32(common.HexToHash("0x00000000000000000000000000000000000000000000000000000000000000bc")), 52 Scalar: eth.Bytes32(common.HexToHash("0x00000000000000000000000000000000000000000000000000000000000a6fe0")), 53 GasLimit: 30_000_000, 54 }, 55 }, 56 BlockTime: 2, 57 MaxSequencerDrift: 600, 58 SeqWindowSize: 3600, 59 ChannelTimeout: 300, 60 L1ChainID: big.NewInt(1), 61 L2ChainID: big.NewInt(10), 62 BatchInboxAddress: common.HexToAddress("0xff00000000000000000000000000000000000010"), 63 DepositContractAddress: common.HexToAddress("0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"), 64 L1SystemConfigAddress: common.HexToAddress("0x229047fed2591dbec1eF1118d64F7aF3dB9EB290"), 65 RegolithTime: u64Ptr(0), 66 CanyonTime: u64Ptr(1704992401), 67 DeltaTime: u64Ptr(1708560000), 68 EcotoneTime: u64Ptr(1710374401), 69 ProtocolVersionsAddress: common.HexToAddress("0x8062AbC286f5e7D9428a0Ccb9AbD71e50d93b935"), 70 } 71 72 var goerliCfg = rollup.Config{ 73 Genesis: rollup.Genesis{ 74 L1: eth.BlockID{ 75 Hash: common.HexToHash("0x6ffc1bf3754c01f6bb9fe057c1578b87a8571ce2e9be5ca14bace6eccfd336c7"), 76 Number: 8300214, 77 }, 78 L2: eth.BlockID{ 79 Hash: common.HexToHash("0x0f783549ea4313b784eadd9b8e8a69913b368b7366363ea814d7707ac505175f"), 80 Number: 4061224, 81 }, 82 L2Time: 1673550516, 83 SystemConfig: eth.SystemConfig{ 84 BatcherAddr: common.HexToAddress("0x7431310e026B69BFC676C0013E12A1A11411EEc9"), 85 Overhead: eth.Bytes32(common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000834")), 86 Scalar: eth.Bytes32(common.HexToHash("0x00000000000000000000000000000000000000000000000000000000000f4240")), 87 GasLimit: 25_000_000, 88 }, 89 }, 90 BlockTime: 2, 91 MaxSequencerDrift: 600, 92 SeqWindowSize: 3600, 93 ChannelTimeout: 300, 94 L1ChainID: big.NewInt(5), 95 L2ChainID: big.NewInt(420), 96 BatchInboxAddress: common.HexToAddress("0xff00000000000000000000000000000000000420"), 97 DepositContractAddress: common.HexToAddress("0x5b47E1A08Ea6d985D6649300584e6722Ec4B1383"), 98 L1SystemConfigAddress: common.HexToAddress("0xAe851f927Ee40dE99aaBb7461C00f9622ab91d60"), 99 RegolithTime: u64Ptr(1679079600), 100 CanyonTime: u64Ptr(1699981200), 101 DeltaTime: u64Ptr(1703116800), 102 EcotoneTime: u64Ptr(1707238800), 103 ProtocolVersionsAddress: common.HexToAddress("0x0C24F5098774aA366827D667494e9F889f7cFc08"), 104 } 105 106 var sepoliaCfg = rollup.Config{ 107 Genesis: rollup.Genesis{ 108 L1: eth.BlockID{ 109 Hash: common.HexToHash("0x48f520cf4ddaf34c8336e6e490632ea3cf1e5e93b0b2bc6e917557e31845371b"), 110 Number: 4071408, 111 }, 112 L2: eth.BlockID{ 113 Hash: common.HexToHash("0x102de6ffb001480cc9b8b548fd05c34cd4f46ae4aa91759393db90ea0409887d"), 114 Number: 0, 115 }, 116 L2Time: 1691802540, 117 SystemConfig: eth.SystemConfig{ 118 BatcherAddr: common.HexToAddress("0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c"), 119 Overhead: eth.Bytes32(common.HexToHash("0x00000000000000000000000000000000000000000000000000000000000000bc")), 120 Scalar: eth.Bytes32(common.HexToHash("0x00000000000000000000000000000000000000000000000000000000000a6fe0")), 121 GasLimit: 30000000, 122 }, 123 }, 124 BlockTime: 2, 125 MaxSequencerDrift: 600, 126 SeqWindowSize: 3600, 127 ChannelTimeout: 300, 128 L1ChainID: big.NewInt(11155111), 129 L2ChainID: big.NewInt(11155420), 130 BatchInboxAddress: common.HexToAddress("0xff00000000000000000000000000000011155420"), 131 DepositContractAddress: common.HexToAddress("0x16fc5058f25648194471939df75cf27a2fdc48bc"), 132 L1SystemConfigAddress: common.HexToAddress("0x034edd2a225f7f429a63e0f1d2084b9e0a93b538"), 133 RegolithTime: u64Ptr(0), 134 CanyonTime: u64Ptr(1699981200), 135 DeltaTime: u64Ptr(1703203200), 136 EcotoneTime: u64Ptr(1708534800), 137 ProtocolVersionsAddress: common.HexToAddress("0x79ADD5713B383DAa0a138d3C4780C7A1804a8090"), 138 } 139 140 var sepoliaDev0Cfg = rollup.Config{ 141 Genesis: rollup.Genesis{ 142 L1: eth.BlockID{ 143 Hash: common.HexToHash("0x5639be97000fec7131a880b19b664cae43f975c773f628a08a9bb658c2a68df0"), 144 Number: 5173577, 145 }, 146 L2: eth.BlockID{ 147 Hash: common.HexToHash("0x027ae1f4f9a441f9c8a01828f3b6d05803a0f524c07e09263264a38b755f804b"), 148 Number: 0, 149 }, 150 L2Time: 1706484048, 151 SystemConfig: eth.SystemConfig{ 152 BatcherAddr: common.HexToAddress("0x19cc7073150d9f5888f09e0e9016d2a39667df14"), 153 Overhead: eth.Bytes32(common.HexToHash("0x00000000000000000000000000000000000000000000000000000000000000bc")), 154 Scalar: eth.Bytes32(common.HexToHash("0x00000000000000000000000000000000000000000000000000000000000a6fe0")), 155 GasLimit: 30000000, 156 }, 157 }, 158 BlockTime: 2, 159 MaxSequencerDrift: 600, 160 SeqWindowSize: 3600, 161 ChannelTimeout: 300, 162 L1ChainID: big.NewInt(11155111), 163 L2ChainID: big.NewInt(11155421), 164 BatchInboxAddress: common.HexToAddress("0xff00000000000000000000000000000011155421"), 165 DepositContractAddress: common.HexToAddress("0x76114bd29dFcC7a9892240D317E6c7C2A281Ffc6"), 166 L1SystemConfigAddress: common.HexToAddress("0xa6b72407e2dc9EBF84b839B69A24C88929cf20F7"), 167 RegolithTime: u64Ptr(0), 168 CanyonTime: u64Ptr(0), 169 DeltaTime: u64Ptr(0), 170 EcotoneTime: u64Ptr(1706634000), 171 ProtocolVersionsAddress: common.HexToAddress("0x252CbE9517F731C618961D890D534183822dcC8d"), 172 } 173 174 func u64Ptr(v uint64) *uint64 { 175 return &v 176 }