Skip to content

Commit 9dcc734

Browse files
committed
cmd/geth: add flag to override genesis
1 parent 891bbad commit 9dcc734

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

cmd/geth/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ var (
8484
utils.SyncModeFlag,
8585
utils.SyncTargetFlag,
8686
utils.ExitWhenSyncedFlag,
87+
utils.GenesisFlag,
8788
utils.GCModeFlag,
8889
utils.SnapshotFlag,
8990
utils.TxLookupLimitFlag, // deprecated

cmd/utils/flags.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,11 @@ var (
190190
Usage: "Exits after block synchronisation completes",
191191
Category: flags.EthCategory,
192192
}
193+
GenesisFlag = &cli.StringFlag{
194+
Name: "genesis",
195+
Usage: "Load genesis block and configuration from file at this path.",
196+
Category: flags.EthCategory,
197+
}
193198

194199
// Dump command options.
195200
IterativeOutputFlag = &cli.BoolFlag{
@@ -1593,7 +1598,7 @@ func setRequiredBlocks(ctx *cli.Context, cfg *ethconfig.Config) {
15931598
// SetEthConfig applies eth-related command line flags to the config.
15941599
func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
15951600
// Avoid conflicting network flags, don't allow network id override on preset networks
1596-
flags.CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, HoleskyFlag, HoodiFlag, NetworkIdFlag)
1601+
flags.CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, HoleskyFlag, HoodiFlag, NetworkIdFlag, GenesisFlag)
15971602
flags.CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer
15981603

15991604
// Set configurations from CLI flags
@@ -1778,8 +1783,6 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
17781783
case ctx.Bool(MainnetFlag.Name):
17791784
cfg.NetworkId = 1
17801785
cfg.Genesis = core.DefaultGenesisBlock()
1781-
SetDNSDiscoveryDefaults(cfg, params.MainnetGenesisHash)
1782-
case ctx.Bool(HoleskyFlag.Name):
17831786
cfg.NetworkId = 17000
17841787
cfg.Genesis = core.DefaultHoleskyGenesisBlock()
17851788
SetDNSDiscoveryDefaults(cfg, params.HoleskyGenesisHash)
@@ -1873,6 +1876,18 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
18731876
if !ctx.IsSet(MinerGasPriceFlag.Name) {
18741877
cfg.Miner.GasPrice = big.NewInt(1)
18751878
}
1879+
case ctx.String(GenesisFlag.Name) != "":
1880+
f, err := os.Open(ctx.String(GenesisFlag.Name))
1881+
if err != nil {
1882+
Fatalf("Failed to read genesis file: %v", err)
1883+
}
1884+
defer f.Close()
1885+
1886+
genesis := new(core.Genesis)
1887+
if err := json.NewDecoder(f).Decode(genesis); err != nil {
1888+
Fatalf("Invalid genesis file: %v", err)
1889+
}
1890+
cfg.Genesis = genesis
18761891
default:
18771892
if cfg.NetworkId == 1 {
18781893
SetDNSDiscoveryDefaults(cfg, params.MainnetGenesisHash)

0 commit comments

Comments
 (0)