Skip to content

Commit 63b952a

Browse files
authored
op-chain-ops: Organize deploy-config, improve check-logging (ethereum-optimism#11189)
* op-chain-ops: Organize deploy-config, improve check-logging * op-chain-ops: fix DAChallengeProxy check * op-chain-ops: add godocs
1 parent 8198bfc commit 63b952a

File tree

9 files changed

+701
-442
lines changed

9 files changed

+701
-442
lines changed

op-chain-ops/cmd/check-deploy-config/main.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,11 @@ func entrypoint(ctx *cli.Context) error {
4646
return err
4747
}
4848

49+
cfg := oplog.DefaultCLIConfig()
50+
logger := oplog.NewLogger(ctx.App.Writer, cfg)
51+
4952
// Check the config, no need to call `CheckAddresses()`
50-
if err := config.Check(); err != nil {
53+
if err := config.Check(logger); err != nil {
5154
return err
5255
}
5356

op-chain-ops/genesis/config.go

+631-411
Large diffs are not rendered by default.

op-chain-ops/genesis/config_test.go

+21-4
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@ import (
99

1010
"github.com/ethereum/go-ethereum/common"
1111
"github.com/ethereum/go-ethereum/common/hexutil"
12+
"github.com/ethereum/go-ethereum/log"
1213
"github.com/ethereum/go-ethereum/rpc"
1314

1415
"github.com/stretchr/testify/require"
16+
17+
"github.com/ethereum-optimism/optimism/op-service/testlog"
1518
)
1619

1720
func TestConfigDataMarshalUnmarshal(t *testing.T) {
@@ -23,6 +26,8 @@ func TestConfigDataMarshalUnmarshal(t *testing.T) {
2326
require.NoError(t, dec.Decode(decoded))
2427
require.EqualValues(t, "non-default value", string(decoded.L2GenesisBlockExtraData))
2528

29+
require.NoError(t, decoded.Check(testlog.Logger(t, log.LevelDebug)))
30+
2631
encoded, err := json.MarshalIndent(decoded, "", " ")
2732
require.NoError(t, err)
2833
require.JSONEq(t, string(b), string(encoded))
@@ -39,25 +44,37 @@ func TestUnmarshalL1StartingBlockTag(t *testing.T) {
3944

4045
func TestRegolithTimeZero(t *testing.T) {
4146
regolithOffset := hexutil.Uint64(0)
42-
config := &DeployConfig{L2GenesisRegolithTimeOffset: &regolithOffset}
47+
config := &DeployConfig{
48+
L2InitializationConfig: L2InitializationConfig{
49+
UpgradeScheduleDeployConfig: UpgradeScheduleDeployConfig{
50+
L2GenesisRegolithTimeOffset: &regolithOffset}}}
4351
require.Equal(t, uint64(0), *config.RegolithTime(1234))
4452
}
4553

4654
func TestRegolithTimeAsOffset(t *testing.T) {
4755
regolithOffset := hexutil.Uint64(1500)
48-
config := &DeployConfig{L2GenesisRegolithTimeOffset: &regolithOffset}
56+
config := &DeployConfig{
57+
L2InitializationConfig: L2InitializationConfig{
58+
UpgradeScheduleDeployConfig: UpgradeScheduleDeployConfig{
59+
L2GenesisRegolithTimeOffset: &regolithOffset}}}
4960
require.Equal(t, uint64(1500+5000), *config.RegolithTime(5000))
5061
}
5162

5263
func TestCanyonTimeZero(t *testing.T) {
5364
canyonOffset := hexutil.Uint64(0)
54-
config := &DeployConfig{L2GenesisCanyonTimeOffset: &canyonOffset}
65+
config := &DeployConfig{
66+
L2InitializationConfig: L2InitializationConfig{
67+
UpgradeScheduleDeployConfig: UpgradeScheduleDeployConfig{
68+
L2GenesisCanyonTimeOffset: &canyonOffset}}}
5569
require.Equal(t, uint64(0), *config.CanyonTime(1234))
5670
}
5771

5872
func TestCanyonTimeOffset(t *testing.T) {
5973
canyonOffset := hexutil.Uint64(1500)
60-
config := &DeployConfig{L2GenesisCanyonTimeOffset: &canyonOffset}
74+
config := &DeployConfig{
75+
L2InitializationConfig: L2InitializationConfig{
76+
UpgradeScheduleDeployConfig: UpgradeScheduleDeployConfig{
77+
L2GenesisCanyonTimeOffset: &canyonOffset}}}
6178
require.Equal(t, uint64(1234+1500), *config.CanyonTime(1234))
6279
}
6380

op-e2e/actions/ecotone_fork_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,18 @@ func TestEcotoneNetworkUpgradeTransactions(gt *testing.T) {
4545
genesisBlock := hexutil.Uint64(0)
4646
ecotoneOffset := hexutil.Uint64(4)
4747

48+
log := testlog.Logger(t, log.LevelDebug)
49+
4850
dp.DeployConfig.L1CancunTimeOffset = &genesisBlock // can be removed once Cancun on L1 is the default
4951

5052
// Activate all forks at genesis, and schedule Ecotone the block after
5153
dp.DeployConfig.L2GenesisRegolithTimeOffset = &genesisBlock
5254
dp.DeployConfig.L2GenesisCanyonTimeOffset = &genesisBlock
5355
dp.DeployConfig.L2GenesisDeltaTimeOffset = &genesisBlock
5456
dp.DeployConfig.L2GenesisEcotoneTimeOffset = &ecotoneOffset
55-
require.NoError(t, dp.DeployConfig.Check(), "must have valid config")
57+
require.NoError(t, dp.DeployConfig.Check(log), "must have valid config")
5658

5759
sd := e2eutils.Setup(t, dp, defaultAlloc)
58-
log := testlog.Logger(t, log.LevelDebug)
5960
_, _, miner, sequencer, engine, verifier, _, _ := setupReorgTestActors(t, dp, sd, log)
6061
ethCl := engine.EthClient()
6162

op-e2e/actions/fjord_fork_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ func TestFjordNetworkUpgradeTransactions(gt *testing.T) {
3434
genesisBlock := hexutil.Uint64(0)
3535
fjordOffset := hexutil.Uint64(2)
3636

37+
log := testlog.Logger(t, log.LvlDebug)
38+
3739
dp.DeployConfig.L1CancunTimeOffset = &genesisBlock // can be removed once Cancun on L1 is the default
3840

3941
// Activate all forks at genesis, and schedule Fjord the block after
@@ -42,10 +44,9 @@ func TestFjordNetworkUpgradeTransactions(gt *testing.T) {
4244
dp.DeployConfig.L2GenesisDeltaTimeOffset = &genesisBlock
4345
dp.DeployConfig.L2GenesisEcotoneTimeOffset = &genesisBlock
4446
dp.DeployConfig.L2GenesisFjordTimeOffset = &fjordOffset
45-
require.NoError(t, dp.DeployConfig.Check(), "must have valid config")
47+
require.NoError(t, dp.DeployConfig.Check(log), "must have valid config")
4648

4749
sd := e2eutils.Setup(t, dp, defaultAlloc)
48-
log := testlog.Logger(t, log.LvlDebug)
4950
_, _, _, sequencer, engine, verifier, _, _ := setupReorgTestActors(t, dp, sd, log)
5051
ethCl := engine.EthClient()
5152

op-e2e/e2eutils/setup.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/ethereum/go-ethereum/common/hexutil"
1111
"github.com/ethereum/go-ethereum/core"
1212
"github.com/ethereum/go-ethereum/core/types"
13+
"github.com/ethereum/go-ethereum/log"
1314

1415
"github.com/stretchr/testify/require"
1516

@@ -63,7 +64,8 @@ func MakeDeployParams(t require.TestingT, tp *TestParams) *DeployParams {
6364
deployConfig.UsePlasma = tp.UsePlasma
6465
ApplyDeployConfigForks(deployConfig)
6566

66-
require.NoError(t, deployConfig.Check())
67+
logger := log.NewLogger(log.DiscardHandler())
68+
require.NoError(t, deployConfig.Check(logger))
6769
require.Equal(t, addresses.Batcher, deployConfig.BatchSenderAddress)
6870
require.Equal(t, addresses.Proposer, deployConfig.L2OutputOracleProposer)
6971
require.Equal(t, addresses.SequencerP2P, deployConfig.P2PSequencerAddress)
@@ -105,7 +107,8 @@ func Ether(v uint64) *big.Int {
105107
func Setup(t require.TestingT, deployParams *DeployParams, alloc *AllocParams) *SetupData {
106108
deployConf := deployParams.DeployConfig.Copy()
107109
deployConf.L1GenesisBlockTimestamp = hexutil.Uint64(time.Now().Unix())
108-
require.NoError(t, deployConf.Check())
110+
logger := log.NewLogger(log.DiscardHandler())
111+
require.NoError(t, deployConf.Check(logger))
109112

110113
l1Deployments := config.L1Deployments.Copy()
111114
require.NoError(t, l1Deployments.Check(deployConf))

op-e2e/setup.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ func DefaultSystemConfig(t testing.TB) SystemConfig {
101101
deployConfig := config.DeployConfig.Copy()
102102
deployConfig.L1GenesisBlockTimestamp = hexutil.Uint64(time.Now().Unix())
103103
e2eutils.ApplyDeployConfigForks(deployConfig)
104-
require.NoError(t, deployConfig.Check(), "Deploy config is invalid, do you need to run make devnet-allocs?")
104+
require.NoError(t, deployConfig.Check(testlog.Logger(t, log.LevelInfo)),
105+
"Deploy config is invalid, do you need to run make devnet-allocs?")
105106
l1Deployments := config.L1Deployments.Copy()
106107
require.NoError(t, l1Deployments.Check(deployConfig))
107108

@@ -507,7 +508,7 @@ func (cfg SystemConfig) Start(t *testing.T, _opts ...SystemConfigOption) (*Syste
507508
c = sys.TimeTravelClock
508509
}
509510

510-
if err := cfg.DeployConfig.Check(); err != nil {
511+
if err := cfg.DeployConfig.Check(testlog.Logger(t, log.LevelInfo)); err != nil {
511512
return nil, err
512513
}
513514

op-node/cmd/genesis/cmd.go

+15-10
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@ import (
99
"github.com/ethereum-optimism/optimism/op-service/sources/batching"
1010
"github.com/urfave/cli/v2"
1111

12-
"github.com/ethereum/go-ethereum/core/types"
13-
"github.com/ethereum/go-ethereum/ethclient"
14-
"github.com/ethereum/go-ethereum/log"
15-
1612
"github.com/ethereum-optimism/optimism/op-chain-ops/foundry"
1713
"github.com/ethereum-optimism/optimism/op-chain-ops/genesis"
1814
"github.com/ethereum-optimism/optimism/op-service/jsonutil"
15+
oplog "github.com/ethereum-optimism/optimism/op-service/log"
16+
"github.com/ethereum/go-ethereum/core/types"
17+
"github.com/ethereum/go-ethereum/ethclient"
1918
)
2019

2120
var (
@@ -97,7 +96,9 @@ var Subcommands = cli.Commands{
9796
config.SetDeployments(deployments)
9897
}
9998

100-
if err := config.Check(); err != nil {
99+
cfg := oplog.DefaultCLIConfig()
100+
logger := oplog.NewLogger(ctx.App.Writer, cfg)
101+
if err := config.Check(logger); err != nil {
101102
return fmt.Errorf("deploy config at %s invalid: %w", deployConfig, err)
102103
}
103104

@@ -132,8 +133,11 @@ var Subcommands = cli.Commands{
132133
"or it can be provided as a JSON file.",
133134
Flags: l2Flags,
134135
Action: func(ctx *cli.Context) error {
136+
cfg := oplog.DefaultCLIConfig()
137+
logger := oplog.NewLogger(ctx.App.Writer, cfg)
138+
135139
deployConfig := ctx.Path(deployConfigFlag.Name)
136-
log.Info("Deploy config", "path", deployConfig)
140+
logger.Info("Deploy config", "path", deployConfig)
137141
config, err := genesis.NewDeployConfig(deployConfig)
138142
if err != nil {
139143
return err
@@ -171,16 +175,17 @@ var Subcommands = cli.Commands{
171175
return fmt.Errorf("failed to fetch startBlock from SystemConfig: %w", err)
172176
}
173177

174-
log.Info("Using L1 Start Block", "number", startBlock)
178+
logger.Info("Using L1 Start Block", "number", startBlock)
175179
// retry because local devnet can experience a race condition where L1 geth isn't ready yet
176180
l1StartBlock, err := retry.Do(ctx.Context, 24, retry.Fixed(1*time.Second), func() (*types.Block, error) { return client.BlockByNumber(ctx.Context, startBlock) })
177181
if err != nil {
178182
return fmt.Errorf("fetching start block by number: %w", err)
179183
}
180-
log.Info("Fetched L1 Start Block", "hash", l1StartBlock.Hash().Hex())
184+
logger.Info("Fetched L1 Start Block", "hash", l1StartBlock.Hash().Hex())
181185

182-
// Sanity check the config
183-
if err := config.Check(); err != nil {
186+
// Sanity check the config. Do this after filling in the L1StartingBlockTag
187+
// if it is not defined.
188+
if err := config.Check(logger); err != nil {
184189
return err
185190
}
186191

op-program/client/l2/engine_backend_test.go

+16-8
Original file line numberDiff line numberDiff line change
@@ -273,14 +273,22 @@ func setupOracleBackedChainWithLowerHead(t *testing.T, blockCount int, headBlock
273273

274274
func setupOracle(t *testing.T, blockCount int, headBlockNumber int, enableEcotone bool) (*params.ChainConfig, []*types.Block, *l2test.StubBlockOracle) {
275275
deployConfig := &genesis.DeployConfig{
276-
L1ChainID: 900,
277-
L2ChainID: 901,
278-
L2BlockTime: 2,
279-
FundDevAccounts: true,
280-
L2GenesisBlockGasLimit: 30_000_000,
281-
// Arbitrary non-zero difficulty in genesis.
282-
// This is slightly weird for a chain starting post-merge but it happens so need to make sure it works
283-
L2GenesisBlockDifficulty: (*hexutil.Big)(big.NewInt(100)),
276+
L2InitializationConfig: genesis.L2InitializationConfig{
277+
DevDeployConfig: genesis.DevDeployConfig{
278+
FundDevAccounts: true,
279+
},
280+
L2GenesisBlockDeployConfig: genesis.L2GenesisBlockDeployConfig{
281+
L2GenesisBlockGasLimit: 30_000_000,
282+
// Arbitrary non-zero difficulty in genesis.
283+
// This is slightly weird for a chain starting post-merge but it happens so need to make sure it works
284+
L2GenesisBlockDifficulty: (*hexutil.Big)(big.NewInt(100)),
285+
},
286+
L2CoreDeployConfig: genesis.L2CoreDeployConfig{
287+
L1ChainID: 900,
288+
L2ChainID: 901,
289+
L2BlockTime: 2,
290+
},
291+
},
284292
}
285293
if enableEcotone {
286294
ts := hexutil.Uint64(0)

0 commit comments

Comments
 (0)