diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index 79767e740..2359f1aa0 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -52,6 +52,7 @@ var ( utils.DataDirFlag, utils.OverrideMorph203TimeFlag, utils.OverrideViridianTimeFlag, + utils.OverrideEmeraldTimeFlag, }, Category: "BLOCKCHAIN COMMANDS", Description: ` @@ -220,6 +221,10 @@ func initGenesis(ctx *cli.Context) error { v := ctx.Uint64(utils.OverrideViridianTimeFlag.Name) overrides.ViridianTime = &v } + if ctx.IsSet(utils.OverrideEmeraldTimeFlag.Name) { + v := ctx.Uint64(utils.OverrideEmeraldTimeFlag.Name) + overrides.EmeraldTime = &v + } for _, name := range []string{"chaindata", "lightchaindata"} { chaindb, err := stack.OpenDatabase(name, 0, 0, "", false) diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 6b8695ae6..5ce95b445 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -166,6 +166,10 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { v := ctx.Uint64(utils.OverrideViridianTimeFlag.Name) cfg.Eth.OverrideViridianTime = &v } + if ctx.GlobalIsSet(utils.OverrideEmeraldTimeFlag.Name) { + v := ctx.Uint64(utils.OverrideEmeraldTimeFlag.Name) + cfg.Eth.OverrideEmeraldTime = &v + } backend, _ := utils.RegisterEthService(stack, &cfg.Eth) diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 4bf5199fa..c0614d32b 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -73,6 +73,7 @@ var ( utils.OverrideArrowGlacierFlag, utils.OverrideMorph203TimeFlag, utils.OverrideViridianTimeFlag, + utils.OverrideEmeraldTimeFlag, utils.EthashCacheDirFlag, utils.EthashCachesInMemoryFlag, utils.EthashCachesOnDiskFlag, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index ddc42ec7d..20ba93f57 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -279,6 +279,10 @@ var ( Name: "override.viridiantime", Usage: "Manually specify the Viridian fork timestamp, overriding the bundled setting", } + OverrideEmeraldTimeFlag = &cli.Uint64Flag{ + Name: "override.emeraldtime", + Usage: "Manually specify the Emerald fork timestamp, overriding the bundled setting", + } // Light server and client settings LightServeFlag = cli.IntFlag{ Name: "light.serve", diff --git a/eth/backend.go b/eth/backend.go index 8328898c4..8102324e2 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -137,6 +137,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { if config.OverrideViridianTime != nil { overrides.ViridianTime = config.OverrideViridianTime } + if config.OverrideEmeraldTime != nil { + overrides.EmeraldTime = config.OverrideEmeraldTime + } chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, &overrides) if _, ok := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !ok { return nil, genesisErr diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 5069732b0..d758546c0 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -221,6 +221,9 @@ type Config struct { // ViridianTime override OverrideViridianTime *uint64 `toml:",omitempty"` + + // EmeraldTime override + OverrideEmeraldTime *uint64 `toml:",omitempty"` } // CreateConsensusEngine creates a consensus engine for the given chain config. diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index 7f3f7b69f..0c0e04157 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -65,6 +65,7 @@ func (c Config) MarshalTOML() (interface{}, error) { MaxBlockRange int64 OverrideMorph203Time *uint64 `toml:",omitempty"` OverrideMorph300Time *uint64 `toml:",omitempty"` + OverrideEmeraldTime *uint64 `toml:",omitempty"` } var enc Config enc.Genesis = c.Genesis @@ -114,6 +115,7 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.MaxBlockRange = c.MaxBlockRange enc.OverrideMorph203Time = c.OverrideMorph203Time enc.OverrideMorph300Time = c.OverrideViridianTime + enc.OverrideEmeraldTime = c.OverrideEmeraldTime return &enc, nil } @@ -166,6 +168,8 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { CheckCircuitCapacity *bool MaxBlockRange *int64 OverrideMorph203Time *uint64 `toml:",omitempty"` + OverrideViridianTime *uint64 `toml:",omitempty"` + OverrideEmeraldTime *uint64 `toml:",omitempty"` } var dec Config if err := unmarshal(&dec); err != nil { @@ -309,5 +313,11 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.OverrideMorph203Time != nil { c.OverrideMorph203Time = dec.OverrideMorph203Time } + if dec.OverrideViridianTime != nil { + c.OverrideViridianTime = dec.OverrideViridianTime + } + if dec.OverrideEmeraldTime != nil { + c.OverrideEmeraldTime = dec.OverrideEmeraldTime + } return nil } diff --git a/les/client.go b/les/client.go index c5d9a8c77..b12dc58a6 100644 --- a/les/client.go +++ b/les/client.go @@ -96,6 +96,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) { if config.OverrideViridianTime != nil { overrides.ViridianTime = config.OverrideViridianTime } + if config.OverrideEmeraldTime != nil { + overrides.EmeraldTime = config.OverrideEmeraldTime + } chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, &overrides) if _, isCompat := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !isCompat { return nil, genesisErr