diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 48c41477f63a2fe8039b69e21605dc0384f29f7b..dc7a209850436e2c49961485934d018fbd6ebdd1 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -20,7 +20,6 @@ import ( "bufio" "errors" "fmt" - "math/big" "os" "reflect" "unicode" @@ -134,12 +133,6 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) { func makeFullNode(ctx *cli.Context) *node.Node { stack, cfg := makeConfigNode(ctx) - if ctx.GlobalIsSet(utils.OverrideIstanbulFlag.Name) { - cfg.Eth.OverrideIstanbul = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideIstanbulFlag.Name)) - } - if ctx.GlobalIsSet(utils.OverrideMuirGlacierFlag.Name) { - cfg.Eth.OverrideMuirGlacier = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideMuirGlacierFlag.Name)) - } utils.RegisterEthService(stack, &cfg.Eth) // Configure GraphQL if required diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 3f298ee645d58c1240e91aa9d652e00885df32fc..55b326d6813f0af72dc3ba794d1ddc7333b44ccb 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -69,8 +69,6 @@ var ( utils.ExternalSignerFlag, utils.NoUSBFlag, utils.SmartCardDaemonPathFlag, - utils.OverrideIstanbulFlag, - utils.OverrideMuirGlacierFlag, utils.EthashCacheDirFlag, utils.EthashCachesInMemoryFlag, utils.EthashCachesOnDiskFlag, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index cded7ea6677713bc222ecbad317e7b49f738bca9..dfde2fce074dd01e4306d2be5bb7914f1f77bb17 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -265,14 +265,6 @@ var ( Name: "whitelist", Usage: "Comma separated block number-to-hash mappings to enforce (<number>=<hash>)", } - OverrideIstanbulFlag = cli.Uint64Flag{ - Name: "override.istanbul", - Usage: "Manually specify Istanbul fork-block, overriding the bundled setting", - } - OverrideMuirGlacierFlag = cli.Uint64Flag{ - Name: "override.muirglacier", - Usage: "Manually specify Muir Glacier fork-block, overriding the bundled setting", - } // Light server and client settings LightLegacyServFlag = cli.IntFlag{ // Deprecated in favor of light.serve, remove in 2021 Name: "lightserv", diff --git a/core/genesis.go b/core/genesis.go index 749e09d4c222f9d47b60f21fa65e9ed931de6125..ffb2d0ecaf3eea16b798b1fe78df791f5e9dafe4 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -153,16 +153,6 @@ func (e *GenesisMismatchError) Error() string { // // The returned chain configuration is never nil. func SetupGenesisBlock(db ethdb.Database, genesis *Genesis, history bool) (*params.ChainConfig, common.Hash, *state.IntraBlockState, error) { - return SetupGenesisBlockWithOverride(db, genesis, nil, nil, history) -} -func SetupGenesisBlockWithOverride(db ethdb.Database, - genesis *Genesis, - overrideIstanbul *big.Int, - overrideMuirGlacier *big.Int, - history bool, -) (*params.ChainConfig, common.Hash, *state.IntraBlockState, error) { - var stateDB *state.IntraBlockState - if genesis != nil && genesis.Config == nil { return params.AllEthashProtocolChanges, common.Hash{}, stateDB, errGenesisNoConfig } @@ -176,6 +166,25 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, log.Info("Writing custom genesis block") } block, stateDB1, err := genesis.Commit(db, history) + if err != nil { + return genesis.Config, common.Hash{}, err + } + return genesis.Config, block.Hash(), nil + } + + // We have the genesis block in database(perhaps in ancient database) + // but the corresponding state is missing. + header := rawdb.ReadHeader(db, stored, 0) + if _, err := state.New(header.Root, state.NewDatabaseWithCache(db, 0), nil); err != nil { + if genesis == nil { + genesis = DefaultGenesisBlock() + } + // Ensure the stored genesis matches with the given one. + hash := genesis.ToBlock(nil).Hash() + if hash != stored { + return genesis.Config, hash, &GenesisMismatchError{stored, hash} + } + block, err := genesis.Commit(db) if err != nil { return nil, common.Hash{}, nil, err } @@ -196,12 +205,6 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, // Get the existing chain configuration. newcfg := genesis.configOrDefault(stored) - if overrideIstanbul != nil { - newcfg.IstanbulBlock = overrideIstanbul - } - if overrideMuirGlacier != nil { - newcfg.MuirGlacierBlock = overrideMuirGlacier - } if err := newcfg.CheckConfigForkOrder(); err != nil { return newcfg, common.Hash{}, nil, err } diff --git a/eth/backend.go b/eth/backend.go index 2239d0f337b5646bc20274fb5c9f3d33c2284632..e29c30d7bb4ac0be1f92fe3217c9ad86a13592b1 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -146,7 +146,7 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { } } - chainConfig, genesisHash, _, genesisErr := core.SetupGenesisBlockWithOverride( + chainConfig, genesisHash, _, genesisErr := core.SetupGenesisBlock(chainDb, config.Genesis) chainDb, config.Genesis, config.OverrideIstanbul, @@ -226,8 +226,9 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { BlocksToPrune: config.BlocksToPrune, PruneTimeout: config.PruningTimeout, TrieCleanLimit: config.TrieCleanCache, - TrieDirtyLimit: config.TrieDirtyCache, TrieCleanNoPrefetch: config.NoPrefetch, + TrieDirtyLimit: config.TrieDirtyCache, + TrieDirtyDisabled: config.NoPruning, TrieTimeLimit: config.TrieTimeout, DownloadOnly: config.DownloadOnly, NoHistory: !config.StorageMode.History, diff --git a/eth/config.go b/eth/config.go index 1396579054f0d56eb034f6a2b3ce0fd87806a9cf..595a374415fa60a2598a38420182c2b17c4b2577 100644 --- a/eth/config.go +++ b/eth/config.go @@ -219,10 +219,4 @@ type Config struct { // CheckpointOracle is the configuration for checkpoint oracle. CheckpointOracle *params.CheckpointOracleConfig `toml:",omitempty"` - - // Istanbul block override (TODO: remove after the fork) - OverrideIstanbul *big.Int `toml:",omitempty"` - - // MuirGlacier block override (TODO: remove after the fork) - OverrideMuirGlacier *big.Int `toml:",omitempty"` } diff --git a/eth/gen_config.go b/eth/gen_config.go index 3b1c615c879c14619606abce96ef8ca68767d8cd..c771dda15edaab46567a83d0b7fce0885842e639 100644 --- a/eth/gen_config.go +++ b/eth/gen_config.go @@ -85,8 +85,6 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.RPCGasCap = c.RPCGasCap enc.Checkpoint = c.Checkpoint enc.CheckpointOracle = c.CheckpointOracle - enc.OverrideIstanbul = c.OverrideIstanbul - enc.OverrideMuirGlacier = c.OverrideMuirGlacier return &enc, nil } @@ -229,11 +227,5 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.CheckpointOracle != nil { c.CheckpointOracle = dec.CheckpointOracle } - if dec.OverrideIstanbul != nil { - c.OverrideIstanbul = dec.OverrideIstanbul - } - if dec.OverrideMuirGlacier != nil { - c.OverrideMuirGlacier = dec.OverrideMuirGlacier - } return nil }