Skip to content

Commit cc9eb91

Browse files
authored
Merge pull request #20004 from karalabe/istanbul-override
cmd, core, eth, les: support --override.istanbul
2 parents c8a1c0a + e39b2a2 commit cc9eb91

File tree

7 files changed

+21
-2
lines changed

7 files changed

+21
-2
lines changed

cmd/geth/config.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"bufio"
2121
"errors"
2222
"fmt"
23+
"math/big"
2324
"os"
2425
"reflect"
2526
"unicode"
@@ -150,6 +151,9 @@ func enableWhisper(ctx *cli.Context) bool {
150151

151152
func makeFullNode(ctx *cli.Context) *node.Node {
152153
stack, cfg := makeConfigNode(ctx)
154+
if ctx.GlobalIsSet(utils.OverrideIstanbulFlag.Name) {
155+
cfg.Eth.OverrideIstanbul = new(big.Int).SetUint64(ctx.GlobalUint64(utils.OverrideIstanbulFlag.Name))
156+
}
153157
utils.RegisterEthService(stack, &cfg.Eth)
154158

155159
if ctx.GlobalBool(utils.DashboardEnabledFlag.Name) {

cmd/geth/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ var (
6969
utils.ExternalSignerFlag,
7070
utils.NoUSBFlag,
7171
utils.SmartCardDaemonPathFlag,
72+
utils.OverrideIstanbulFlag,
7273
utils.DashboardEnabledFlag,
7374
utils.DashboardAddrFlag,
7475
utils.DashboardPortFlag,

cmd/utils/flags.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,10 @@ var (
223223
Name: "whitelist",
224224
Usage: "Comma separated block number-to-hash mappings to enforce (<number>=<hash>)",
225225
}
226+
OverrideIstanbulFlag = cli.Uint64Flag{
227+
Name: "override.istanbul",
228+
Usage: "Manually specify Istanbul fork-block, overriding the bundled setting",
229+
}
226230
// Light server and client settings
227231
LightLegacyServFlag = cli.IntFlag{ // Deprecated in favor of light.serve, remove in 2021
228232
Name: "lightserv",

core/genesis.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ func (e *GenesisMismatchError) Error() string {
152152
//
153153
// The returned chain configuration is never nil.
154154
func SetupGenesisBlock(db ethdb.Database, genesis *Genesis) (*params.ChainConfig, common.Hash, error) {
155+
return SetupGenesisBlockWithOverride(db, genesis, nil)
156+
}
157+
158+
func SetupGenesisBlockWithOverride(db ethdb.Database, genesis *Genesis, overrideIstanbul *big.Int) (*params.ChainConfig, common.Hash, error) {
155159
if genesis != nil && genesis.Config == nil {
156160
return params.AllEthashProtocolChanges, common.Hash{}, errGenesisNoConfig
157161
}
@@ -200,6 +204,9 @@ func SetupGenesisBlock(db ethdb.Database, genesis *Genesis) (*params.ChainConfig
200204

201205
// Get the existing chain configuration.
202206
newcfg := genesis.configOrDefault(stored)
207+
if overrideIstanbul != nil {
208+
newcfg.IstanbulBlock = overrideIstanbul
209+
}
203210
storedcfg := rawdb.ReadChainConfig(db, stored)
204211
if storedcfg == nil {
205212
log.Warn("Found genesis block without chain config")

eth/backend.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
137137
if err != nil {
138138
return nil, err
139139
}
140-
chainConfig, genesisHash, genesisErr := core.SetupGenesisBlock(chainDb, config.Genesis)
140+
chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideIstanbul)
141141
if _, ok := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !ok {
142142
return nil, genesisErr
143143
}

eth/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,7 @@ type Config struct {
154154

155155
// CheckpointOracle is the configuration for checkpoint oracle.
156156
CheckpointOracle *params.CheckpointOracleConfig `toml:",omitempty"`
157+
158+
// Istanbul block override (TODO: remove after the fork)
159+
OverrideIstanbul *big.Int
157160
}

les/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func New(ctx *node.ServiceContext, config *eth.Config) (*LightEthereum, error) {
7272
if err != nil {
7373
return nil, err
7474
}
75-
chainConfig, genesisHash, genesisErr := core.SetupGenesisBlock(chainDb, config.Genesis)
75+
chainConfig, genesisHash, genesisErr := core.SetupGenesisBlockWithOverride(chainDb, config.Genesis, config.OverrideIstanbul)
7676
if _, isCompat := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !isCompat {
7777
return nil, genesisErr
7878
}

0 commit comments

Comments
 (0)