Skip to content

cmd/utils/flags.go — Version Comparison

v1.16.8 v1.17.3
Branch etc/v1.16.8-full-node etc/v1.17.3-full-node
Delta +39 -3 +41 -7
ETC delta on v1.16.8 (+39 -3)
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 5a7e40767..e37d0ff82 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -1021,9 +1021,10 @@ var (
        SepoliaFlag,
        HoleskyFlag,
        HoodiFlag,
+       MordorFlag,
    }
    // NetworkFlags is the flag group of all built-in supported networks.
-   NetworkFlags = append([]cli.Flag{MainnetFlag}, TestnetFlags...)
+   NetworkFlags = append(append([]cli.Flag{MainnetFlag}, TestnetFlags...), ClassicFlag)

    // DatabaseFlags is the flag group of all database flags.
    DatabaseFlags = []cli.Flag{
@@ -1057,6 +1058,12 @@ func MakeDataDir(ctx *cli.Context) string {
        if ctx.Bool(HoodiFlag.Name) {
            return filepath.Join(path, "hoodi")
        }
+       if ctx.Bool(ClassicFlag.Name) {
+           return filepath.Join(path, "classic")
+       }
+       if ctx.Bool(MordorFlag.Name) {
+           return filepath.Join(path, "mordor")
+       }
        return path
    }
    Fatalf("Cannot determine default data directory, please set manually (--datadir)")
@@ -1604,7 +1611,7 @@ func setRequiredBlocks(ctx *cli.Context, cfg *ethconfig.Config) {
 // SetEthConfig applies eth-related command line flags to the config.
 func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
    // Avoid conflicting network flags, don't allow network id override on preset networks
-   flags.CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, HoleskyFlag, HoodiFlag, NetworkIdFlag, OverrideGenesisFlag)
+   flags.CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, HoleskyFlag, HoodiFlag, ClassicFlag, MordorFlag, NetworkIdFlag, OverrideGenesisFlag)
    flags.CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer

    // Set configurations from CLI flags
@@ -1612,7 +1619,9 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
    setGPO(ctx, &cfg.GPO)
    setTxPool(ctx, &cfg.TxPool)
    setBlobPool(ctx, &cfg.BlobPool)
+   setEthash(ctx, cfg)
    setMiner(ctx, &cfg.Miner)
+   setMinerETC(ctx, &cfg.Miner)
    setRequiredBlocks(ctx, cfg)

    // Cap the cache allowance and tune the garbage collector
@@ -1790,6 +1799,12 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
    if ctx.Bool(StateSizeTrackingFlag.Name) {
        cfg.EnableStateSizeTracking = true
    }
+   if ctx.IsSet(MESSForceEnableFlag.Name) {
+       cfg.MESSForceEnable = ctx.Bool(MESSForceEnableFlag.Name)
+   }
+   if ctx.IsSet(MESSForceDisableFlag.Name) {
+       cfg.MESSForceDisable = ctx.Bool(MESSForceDisableFlag.Name)
+   }
    // Override any default configs for hard coded networks.
    switch {
    case ctx.Bool(MainnetFlag.Name):
@@ -1808,6 +1823,22 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
        cfg.NetworkId = 560048
        cfg.Genesis = core.DefaultHoodiGenesisBlock()
        SetDNSDiscoveryDefaults(cfg, params.HoodiGenesisHash)
+   case ctx.Bool(ClassicFlag.Name):
+       cfg.NetworkId = 1 // ETC uses NetworkID=1 (same as ETH), ChainID=61 is for tx signing
+       cfg.Genesis = core.DefaultClassicGenesisBlock()
+       // ETC shares genesis hash with ETH mainnet, so we set DNS directly
+       if cfg.EthDiscoveryURLs == nil {
+           cfg.EthDiscoveryURLs = []string{"enrtree://AJE62Q4DUX4QMMXEHCSSCSC65TDHZYSMONSD64P3WULVLSF6MRQ3K@all.classic.blockd.info"}
+           cfg.SnapDiscoveryURLs = cfg.EthDiscoveryURLs
+       }
+   case ctx.Bool(MordorFlag.Name):
+       cfg.NetworkId = 7 // Mordor uses NetworkID=7, ChainID=63
+       cfg.Genesis = core.DefaultMordorGenesisBlock()
+       // Mordor DNS discovery
+       if cfg.EthDiscoveryURLs == nil {
+           cfg.EthDiscoveryURLs = []string{"enrtree://AJE62Q4DUX4QMMXEHCSSCSC65TDHZYSMONSD64P3WULVLSF6MRQ3K@all.mordor.blockd.info"}
+           cfg.SnapDiscoveryURLs = cfg.EthDiscoveryURLs
+       }
    case ctx.Bool(DeveloperFlag.Name):
        cfg.NetworkId = 1337
        cfg.SyncMode = ethconfig.FullSync
@@ -1903,7 +1934,8 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
        }
        cfg.Genesis = genesis
    default:
-       if cfg.NetworkId == 1 {
+       // Only set mainnet DNS defaults if NetworkId==1 AND not using ETC (which also uses NetworkId=1)
+       if cfg.NetworkId == 1 && !ctx.Bool(ClassicFlag.Name) {
            SetDNSDiscoveryDefaults(cfg, params.MainnetGenesisHash)
        }
    }
@@ -2244,6 +2276,10 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis {
        genesis = core.DefaultSepoliaGenesisBlock()
    case ctx.Bool(HoodiFlag.Name):
        genesis = core.DefaultHoodiGenesisBlock()
+   case ctx.Bool(ClassicFlag.Name):
+       genesis = core.DefaultClassicGenesisBlock()
+   case ctx.Bool(MordorFlag.Name):
+       genesis = core.DefaultMordorGenesisBlock()
    case ctx.Bool(DeveloperFlag.Name):
        Fatalf("Developer chains are ephemeral")
    }
ETC delta on v1.17.3 (+41 -7)
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index ea0f6f5ee..29385a2b2 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -1120,9 +1120,10 @@ var (
        SepoliaFlag,
        HoleskyFlag,
        HoodiFlag,
+       MordorFlag,
    }
    // NetworkFlags is the flag group of all built-in supported networks.
-   NetworkFlags = append([]cli.Flag{MainnetFlag}, TestnetFlags...)
+   NetworkFlags = append(append([]cli.Flag{MainnetFlag}, TestnetFlags...), ClassicFlag)

    // DatabaseFlags is the flag group of all database flags.
    DatabaseFlags = []cli.Flag{
@@ -1156,6 +1157,12 @@ func MakeDataDir(ctx *cli.Context) string {
        if ctx.Bool(HoodiFlag.Name) {
            return filepath.Join(path, "hoodi")
        }
+       if ctx.Bool(ClassicFlag.Name) {
+           return filepath.Join(path, "classic")
+       }
+       if ctx.Bool(MordorFlag.Name) {
+           return filepath.Join(path, "mordor")
+       }
        return path
    }
    Fatalf("Cannot determine default data directory, please set manually (--datadir)")
@@ -1685,9 +1692,6 @@ func setBlobPool(ctx *cli.Context, cfg *blobpool.Config) {
 }

 func setMiner(ctx *cli.Context, cfg *miner.Config) {
-   if ctx.Bool(MiningEnabledFlag.Name) {
-       log.Warn("The flag --mine is deprecated and will be removed")
-   }
    if ctx.IsSet(MinerExtraDataFlag.Name) {
        cfg.ExtraData = []byte(ctx.String(MinerExtraDataFlag.Name))
    }
@@ -1739,8 +1743,8 @@ func setRequiredBlocks(ctx *cli.Context, cfg *ethconfig.Config) {

 // SetEthConfig applies eth-related command line flags to the config.
 func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
-   // Avoid conflicting network flags
-   flags.CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, HoleskyFlag, HoodiFlag, OverrideGenesisFlag)
+   // Avoid conflicting network flags, don't allow network id override on preset networks
+   flags.CheckExclusive(ctx, MainnetFlag, DeveloperFlag, SepoliaFlag, HoleskyFlag, HoodiFlag, ClassicFlag, MordorFlag, OverrideGenesisFlag)
    flags.CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer

    // Set configurations from CLI flags
@@ -1748,7 +1752,9 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
    setGPO(ctx, &cfg.GPO)
    setTxPool(ctx, &cfg.TxPool)
    setBlobPool(ctx, &cfg.BlobPool)
+   setEthash(ctx, cfg)
    setMiner(ctx, &cfg.Miner)
+   setMinerETC(ctx, &cfg.Miner)
    setRequiredBlocks(ctx, cfg)

    // Cap the cache allowance and tune the garbage collector
@@ -1939,6 +1945,12 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
    if ctx.Bool(StateSizeTrackingFlag.Name) {
        cfg.EnableStateSizeTracking = true
    }
+   if ctx.IsSet(MESSForceEnableFlag.Name) {
+       cfg.MESSForceEnable = ctx.Bool(MESSForceEnableFlag.Name)
+   }
+   if ctx.IsSet(MESSForceDisableFlag.Name) {
+       cfg.MESSForceDisable = ctx.Bool(MESSForceDisableFlag.Name)
+   }
    // Override any default configs for hard coded networks.
    switch {
    case ctx.Bool(MainnetFlag.Name):
@@ -1957,6 +1969,23 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
        cfg.NetworkId = 560048
        cfg.Genesis = core.DefaultHoodiGenesisBlock()
        SetDNSDiscoveryDefaults(cfg, params.HoodiGenesisHash)
+   case ctx.Bool(ClassicFlag.Name):
+       cfg.NetworkId = 1 // ETC uses NetworkID=1 (same as ETH), ChainID=61 is for tx signing
+       cfg.Genesis = core.DefaultClassicGenesisBlock()
+       // ETC shares genesis hash with ETH mainnet; KnownDNSNetwork can't
+       // disambiguate by hash, so use the ETC-specific helper keyed off
+       // the ETC chain ID instead.
+       if cfg.EthDiscoveryURLs == nil {
+           cfg.EthDiscoveryURLs = []string{params.ETCDNSNetwork(61, "all")}
+           cfg.SnapDiscoveryURLs = cfg.EthDiscoveryURLs
+       }
+   case ctx.Bool(MordorFlag.Name):
+       cfg.NetworkId = 7 // Mordor uses NetworkID=7, ChainID=63
+       cfg.Genesis = core.DefaultMordorGenesisBlock()
+       if cfg.EthDiscoveryURLs == nil {
+           cfg.EthDiscoveryURLs = []string{params.ETCDNSNetwork(63, "all")}
+           cfg.SnapDiscoveryURLs = cfg.EthDiscoveryURLs
+       }
    case ctx.Bool(DeveloperFlag.Name):
        cfg.NetworkId = 1337
        cfg.SyncMode = ethconfig.FullSync
@@ -2052,7 +2081,8 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
        }
        cfg.Genesis = genesis
    default:
-       if ctx.Uint64(NetworkIdFlag.Name) == 1 {
+       // Only set mainnet DNS defaults if NetworkId==1 AND not using ETC (which also uses NetworkId=1)
+       if cfg.NetworkId == 1 && !ctx.Bool(ClassicFlag.Name) {
            SetDNSDiscoveryDefaults(cfg, params.MainnetGenesisHash)
        }
    }
@@ -2403,6 +2433,10 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis {
        genesis = core.DefaultSepoliaGenesisBlock()
    case ctx.Bool(HoodiFlag.Name):
        genesis = core.DefaultHoodiGenesisBlock()
+   case ctx.Bool(ClassicFlag.Name):
+       genesis = core.DefaultClassicGenesisBlock()
+   case ctx.Bool(MordorFlag.Name):
+       genesis = core.DefaultMordorGenesisBlock()
    case ctx.Bool(DeveloperFlag.Name):
        Fatalf("Developer chains are ephemeral")
    }

← Back to Version Comparison