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  }