From ac962872c10952c30b6c8dc5b983289a67ff3c31 Mon Sep 17 00:00:00 2001 From: pcw109550 Date: Fri, 24 May 2024 13:43:43 +0900 Subject: [PATCH 1/2] Add Fjord override flags and time --- cmd/utils/flags.go | 7 +++++++ core/genesis_write.go | 11 +++++++---- erigon-lib/chain/chain_config.go | 1 + eth/backend.go | 5 ++++- eth/ethconfig/config.go | 1 + turbo/cli/default_flags.go | 1 + 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 08f03bdffff..7c46dd795aa 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -138,6 +138,10 @@ var ( Name: "override.ecotone", Usage: "Manually specify the Optimism Ecotone fork time, overriding the bundled setting", } + OverrideOptimismFjordFlag = flags.BigFlag{ + Name: "override.fjord", + Usage: "Manually specify the Optimism Ecotone fork time, overriding the bundled setting", + } // Ethash settings EthashCachesInMemoryFlag = cli.IntFlag{ Name: "ethash.cachesinmem", @@ -2006,6 +2010,9 @@ func SetEthConfig(ctx *cli.Context, nodeConfig *nodecfg.Config, cfg *ethconfig.C "cancun", overrideCancunTime.String(), "ecotone", overrideOptimismEcotoneTime.String()) } } + if ctx.IsSet(OverrideOptimismFjordFlag.Name) { + cfg.OverrideOptimismFjordTime = flags.GlobalBig(ctx, OverrideOptimismFjordFlag.Name) + } if ctx.IsSet(InternalConsensusFlag.Name) && clparams.EmbeddedSupported(cfg.NetworkID) { cfg.InternalCL = ctx.Bool(InternalConsensusFlag.Name) } diff --git a/core/genesis_write.go b/core/genesis_write.go index 6619799bca3..a03ad295abb 100644 --- a/core/genesis_write.go +++ b/core/genesis_write.go @@ -68,16 +68,16 @@ import ( // // The returned chain configuration is never nil. func CommitGenesisBlock(db kv.RwDB, genesis *types.Genesis, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) { - return CommitGenesisBlockWithOverride(db, genesis, nil, nil, nil, nil, nil, tmpDir, logger) + return CommitGenesisBlockWithOverride(db, genesis, nil, nil, nil, nil, nil, nil, tmpDir, logger) } -func CommitGenesisBlockWithOverride(db kv.RwDB, genesis *types.Genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overridePragueTime *big.Int, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) { +func CommitGenesisBlockWithOverride(db kv.RwDB, genesis *types.Genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overridePragueTime *big.Int, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) { tx, err := db.BeginRw(context.Background()) if err != nil { return nil, nil, err } defer tx.Rollback() - c, b, err := WriteGenesisBlock(tx, genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overridePragueTime, tmpDir, logger) + c, b, err := WriteGenesisBlock(tx, genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overridePragueTime, tmpDir, logger) if err != nil { return c, b, err } @@ -88,7 +88,7 @@ func CommitGenesisBlockWithOverride(db kv.RwDB, genesis *types.Genesis, override return c, b, nil } -func WriteGenesisBlock(tx kv.RwTx, genesis *types.Genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overridePragueTime *big.Int, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) { +func WriteGenesisBlock(tx kv.RwTx, genesis *types.Genesis, overrideCancunTime, overrideShanghaiTime, overrideOptimismCanyonTime, overrideOptimismEcotoneTime, overrideOptimismFjordTime, overridePragueTime *big.Int, tmpDir string, logger log.Logger) (*chain.Config, *types.Block, error) { var storedBlock *types.Block if genesis != nil && genesis.Config == nil { return params.AllProtocolChanges, nil, types.ErrGenesisNoConfig @@ -135,6 +135,9 @@ func WriteGenesisBlock(tx kv.RwTx, genesis *types.Genesis, overrideCancunTime, o "cancun", overrideCancunTime.String(), "ecotone", overrideOptimismEcotoneTime.String()) } } + if config.IsOptimism() && overrideOptimismFjordTime != nil { + config.FjordTime = overrideOptimismFjordTime + } } if (storedHash == libcommon.Hash{}) { diff --git a/erigon-lib/chain/chain_config.go b/erigon-lib/chain/chain_config.go index 8382fb59690..fa16e9762e9 100644 --- a/erigon-lib/chain/chain_config.go +++ b/erigon-lib/chain/chain_config.go @@ -74,6 +74,7 @@ type Config struct { CanyonTime *big.Int `json:"canyonTime,omitempty"` // Canyon switch time (nil = no fork, 0 = already on optimism canyon) // Delta: the Delta upgrade does not affect the execution-layer, and is thus not configurable in the chain config. EcotoneTime *big.Int `json:"ecotoneTime,omitempty"` // Ecotone switch time (nil = no fork, 0 = already on optimism ecotone) + FjordTime *big.Int `json:"fjordTime,omitempty"` // Fjord switch time (nil = no fork, 0 = already on optimism fjord) // Optional EIP-4844 parameters MinBlobGasPrice *uint64 `json:"minBlobGasPrice,omitempty"` diff --git a/eth/backend.go b/eth/backend.go index faa003ac746..e017b510a8d 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -303,7 +303,7 @@ func New(ctx context.Context, stack *node.Node, config *ethconfig.Config, logger genesisSpec = nil } var genesisErr error - chainConfig, genesis, genesisErr = core.WriteGenesisBlock(tx, genesisSpec, config.OverrideCancunTime, config.OverrideShanghaiTime, config.OverrideOptimismCanyonTime, config.OverrideOptimismEcotoneTime, config.OverridePragueTime, tmpdir, logger) + chainConfig, genesis, genesisErr = core.WriteGenesisBlock(tx, genesisSpec, config.OverrideCancunTime, config.OverrideShanghaiTime, config.OverrideOptimismCanyonTime, config.OverrideOptimismEcotoneTime, config.OverrideOptimismFjordTime, config.OverridePragueTime, tmpdir, logger) if _, ok := genesisErr.(*chain.ConfigCompatError); genesisErr != nil && !ok { return genesisErr } @@ -326,6 +326,9 @@ func New(ctx context.Context, stack *node.Node, config *ethconfig.Config, logger if chainConfig.EcotoneTime == nil { log.Warn("Optimism EcotoneTime has not been set") } + if chainConfig.FjordTime == nil { + log.Warn("Optimism FjordTime has not been set") + } } setBorDefaultMinerGasPrice(chainConfig, config, logger) diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index bead6d46f08..f9ad2c7af07 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -256,6 +256,7 @@ type Config struct { OverrideOptimismCanyonTime *big.Int `toml:",omitempty"` OverrideOptimismEcotoneTime *big.Int `toml:",omitempty"` + OverrideOptimismFjordTime *big.Int `toml:",omitempty"` OverridePragueTime *big.Int `toml:",omitempty"` diff --git a/turbo/cli/default_flags.go b/turbo/cli/default_flags.go index 19c74dbfe03..20e5a5ff306 100644 --- a/turbo/cli/default_flags.go +++ b/turbo/cli/default_flags.go @@ -164,6 +164,7 @@ var DefaultFlags = []cli.Flag{ &utils.OverrideShanghaiTime, &utils.OverrideOptimismCanyonFlag, &utils.OverrideOptimismEcotoneFlag, + &utils.OverrideOptimismFjordFlag, &utils.RollupSequencerHTTPFlag, &utils.RollupHistoricalRPCFlag, &utils.RollupHistoricalRPCTimeoutFlag, From 14d1d1fff949a6c9ba0c3d08c0b408666e33adf1 Mon Sep 17 00:00:00 2001 From: pcw109550 Date: Fri, 24 May 2024 14:05:24 +0900 Subject: [PATCH 2/2] Fix genesis tests for adding new args --- core/genesis_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/genesis_test.go b/core/genesis_test.go index 7c45f66f915..5ca96d24d9d 100644 --- a/core/genesis_test.go +++ b/core/genesis_test.go @@ -34,7 +34,7 @@ func TestGenesisBlockHashes(t *testing.T) { t.Fatal(err) } defer tx.Rollback() - _, block, err := core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, "", logger) + _, block, err := core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, "", logger) require.NoError(t, err) expect := params.GenesisHashByChainName(network) require.NotNil(t, expect, network) @@ -83,13 +83,13 @@ func TestCommitGenesisIdempotency(t *testing.T) { defer tx.Rollback() genesis := core.GenesisBlockByChainName(networkname.MainnetChainName) - _, _, err = core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, "", logger) + _, _, err = core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, "", logger) require.NoError(t, err) seq, err := tx.ReadSequence(kv.EthTx) require.NoError(t, err) require.Equal(t, uint64(2), seq) - _, _, err = core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, "", logger) + _, _, err = core.WriteGenesisBlock(tx, genesis, nil, nil, nil, nil, nil, nil, "", logger) require.NoError(t, err) seq, err = tx.ReadSequence(kv.EthTx) require.NoError(t, err)