|
|
@ -209,25 +209,35 @@ var ( |
|
|
|
Name: "whitelist", |
|
|
|
Name: "whitelist", |
|
|
|
Usage: "Comma separated block number-to-hash mappings to enforce (<number>=<hash>)", |
|
|
|
Usage: "Comma separated block number-to-hash mappings to enforce (<number>=<hash>)", |
|
|
|
} |
|
|
|
} |
|
|
|
// LES settings
|
|
|
|
// Light server and client settings
|
|
|
|
LightServFlag = cli.IntFlag{ |
|
|
|
LightLegacyServFlag = cli.IntFlag{ // Deprecated in favor of light.serve, remove in 2021
|
|
|
|
Name: "lightserv", |
|
|
|
Name: "lightserv", |
|
|
|
|
|
|
|
Usage: "Maximum percentage of time allowed for serving LES requests (deprecated, use --light.serve)", |
|
|
|
|
|
|
|
Value: eth.DefaultConfig.LightServ, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
LightServeFlag = cli.IntFlag{ |
|
|
|
|
|
|
|
Name: "light.serve", |
|
|
|
Usage: "Maximum percentage of time allowed for serving LES requests (multi-threaded processing allows values over 100)", |
|
|
|
Usage: "Maximum percentage of time allowed for serving LES requests (multi-threaded processing allows values over 100)", |
|
|
|
Value: 0, |
|
|
|
Value: eth.DefaultConfig.LightServ, |
|
|
|
} |
|
|
|
} |
|
|
|
LightBandwidthInFlag = cli.IntFlag{ |
|
|
|
LightIngressFlag = cli.IntFlag{ |
|
|
|
Name: "lightbwin", |
|
|
|
Name: "light.ingress", |
|
|
|
Usage: "Incoming bandwidth limit for light server (kilobytes/sec, 0 = unlimited)", |
|
|
|
Usage: "Incoming bandwidth limit for serving light clients (kilobytes/sec, 0 = unlimited)", |
|
|
|
Value: 0, |
|
|
|
Value: eth.DefaultConfig.LightIngress, |
|
|
|
} |
|
|
|
} |
|
|
|
LightBandwidthOutFlag = cli.IntFlag{ |
|
|
|
LightEgressFlag = cli.IntFlag{ |
|
|
|
Name: "lightbwout", |
|
|
|
Name: "light.egress", |
|
|
|
Usage: "Outgoing bandwidth limit for light server (kilobytes/sec, 0 = unlimited)", |
|
|
|
Usage: "Outgoing bandwidth limit for serving light clients (kilobytes/sec, 0 = unlimited)", |
|
|
|
Value: 0, |
|
|
|
Value: eth.DefaultConfig.LightEgress, |
|
|
|
} |
|
|
|
} |
|
|
|
LightPeersFlag = cli.IntFlag{ |
|
|
|
LightLegacyPeersFlag = cli.IntFlag{ // Deprecated in favor of light.maxpeers, remove in 2021
|
|
|
|
Name: "lightpeers", |
|
|
|
Name: "lightpeers", |
|
|
|
Usage: "Maximum number of LES client peers", |
|
|
|
Usage: "Maximum number of light clients to serve, or light servers to attach to (deprecated, use --light.maxpeers)", |
|
|
|
|
|
|
|
Value: eth.DefaultConfig.LightPeers, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
LightMaxPeersFlag = cli.IntFlag{ |
|
|
|
|
|
|
|
Name: "light.maxpeers", |
|
|
|
|
|
|
|
Usage: "Maximum number of light clients to serve, or light servers to attach to", |
|
|
|
Value: eth.DefaultConfig.LightPeers, |
|
|
|
Value: eth.DefaultConfig.LightPeers, |
|
|
|
} |
|
|
|
} |
|
|
|
UltraLightServersFlag = cli.StringFlag{ |
|
|
|
UltraLightServersFlag = cli.StringFlag{ |
|
|
@ -952,17 +962,23 @@ func setIPC(ctx *cli.Context, cfg *node.Config) { |
|
|
|
|
|
|
|
|
|
|
|
// setLes configures the les server and ultra light client settings from the command line flags.
|
|
|
|
// setLes configures the les server and ultra light client settings from the command line flags.
|
|
|
|
func setLes(ctx *cli.Context, cfg *eth.Config) { |
|
|
|
func setLes(ctx *cli.Context, cfg *eth.Config) { |
|
|
|
if ctx.GlobalIsSet(LightServFlag.Name) { |
|
|
|
if ctx.GlobalIsSet(LightLegacyServFlag.Name) { |
|
|
|
cfg.LightServ = ctx.GlobalInt(LightServFlag.Name) |
|
|
|
cfg.LightServ = ctx.GlobalInt(LightLegacyServFlag.Name) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if ctx.GlobalIsSet(LightServeFlag.Name) { |
|
|
|
|
|
|
|
cfg.LightServ = ctx.GlobalInt(LightServeFlag.Name) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if ctx.GlobalIsSet(LightIngressFlag.Name) { |
|
|
|
|
|
|
|
cfg.LightIngress = ctx.GlobalInt(LightIngressFlag.Name) |
|
|
|
} |
|
|
|
} |
|
|
|
if ctx.GlobalIsSet(LightBandwidthInFlag.Name) { |
|
|
|
if ctx.GlobalIsSet(LightEgressFlag.Name) { |
|
|
|
cfg.LightBandwidthIn = ctx.GlobalInt(LightBandwidthInFlag.Name) |
|
|
|
cfg.LightEgress = ctx.GlobalInt(LightEgressFlag.Name) |
|
|
|
} |
|
|
|
} |
|
|
|
if ctx.GlobalIsSet(LightBandwidthOutFlag.Name) { |
|
|
|
if ctx.GlobalIsSet(LightLegacyPeersFlag.Name) { |
|
|
|
cfg.LightBandwidthOut = ctx.GlobalInt(LightBandwidthOutFlag.Name) |
|
|
|
cfg.LightPeers = ctx.GlobalInt(LightLegacyPeersFlag.Name) |
|
|
|
} |
|
|
|
} |
|
|
|
if ctx.GlobalIsSet(LightPeersFlag.Name) { |
|
|
|
if ctx.GlobalIsSet(LightMaxPeersFlag.Name) { |
|
|
|
cfg.LightPeers = ctx.GlobalInt(LightPeersFlag.Name) |
|
|
|
cfg.LightPeers = ctx.GlobalInt(LightMaxPeersFlag.Name) |
|
|
|
} |
|
|
|
} |
|
|
|
if ctx.GlobalIsSet(UltraLightServersFlag.Name) { |
|
|
|
if ctx.GlobalIsSet(UltraLightServersFlag.Name) { |
|
|
|
cfg.UltraLightServers = strings.Split(ctx.GlobalString(UltraLightServersFlag.Name), ",") |
|
|
|
cfg.UltraLightServers = strings.Split(ctx.GlobalString(UltraLightServersFlag.Name), ",") |
|
|
@ -1069,19 +1085,22 @@ func SetP2PConfig(ctx *cli.Context, cfg *p2p.Config) { |
|
|
|
setBootstrapNodesV5(ctx, cfg) |
|
|
|
setBootstrapNodesV5(ctx, cfg) |
|
|
|
|
|
|
|
|
|
|
|
lightClient := ctx.GlobalString(SyncModeFlag.Name) == "light" |
|
|
|
lightClient := ctx.GlobalString(SyncModeFlag.Name) == "light" |
|
|
|
lightServer := ctx.GlobalInt(LightServFlag.Name) != 0 |
|
|
|
lightServer := (ctx.GlobalInt(LightLegacyServFlag.Name) != 0 || ctx.GlobalInt(LightServeFlag.Name) != 0) |
|
|
|
lightPeers := ctx.GlobalInt(LightPeersFlag.Name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lightPeers := ctx.GlobalInt(LightLegacyPeersFlag.Name) |
|
|
|
|
|
|
|
if ctx.GlobalIsSet(LightMaxPeersFlag.Name) { |
|
|
|
|
|
|
|
lightPeers = ctx.GlobalInt(LightMaxPeersFlag.Name) |
|
|
|
|
|
|
|
} |
|
|
|
if ctx.GlobalIsSet(MaxPeersFlag.Name) { |
|
|
|
if ctx.GlobalIsSet(MaxPeersFlag.Name) { |
|
|
|
cfg.MaxPeers = ctx.GlobalInt(MaxPeersFlag.Name) |
|
|
|
cfg.MaxPeers = ctx.GlobalInt(MaxPeersFlag.Name) |
|
|
|
if lightServer && !ctx.GlobalIsSet(LightPeersFlag.Name) { |
|
|
|
if lightServer && !ctx.GlobalIsSet(LightLegacyPeersFlag.Name) && !ctx.GlobalIsSet(LightMaxPeersFlag.Name) { |
|
|
|
cfg.MaxPeers += lightPeers |
|
|
|
cfg.MaxPeers += lightPeers |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if lightServer { |
|
|
|
if lightServer { |
|
|
|
cfg.MaxPeers += lightPeers |
|
|
|
cfg.MaxPeers += lightPeers |
|
|
|
} |
|
|
|
} |
|
|
|
if lightClient && ctx.GlobalIsSet(LightPeersFlag.Name) && cfg.MaxPeers < lightPeers { |
|
|
|
if lightClient && (ctx.GlobalIsSet(LightLegacyPeersFlag.Name) || ctx.GlobalIsSet(LightMaxPeersFlag.Name)) && cfg.MaxPeers < lightPeers { |
|
|
|
cfg.MaxPeers = lightPeers |
|
|
|
cfg.MaxPeers = lightPeers |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -1379,9 +1398,9 @@ func SetShhConfig(ctx *cli.Context, stack *node.Node, cfg *whisper.Config) { |
|
|
|
func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) { |
|
|
|
func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) { |
|
|
|
// Avoid conflicting network flags
|
|
|
|
// Avoid conflicting network flags
|
|
|
|
CheckExclusive(ctx, DeveloperFlag, TestnetFlag, RinkebyFlag, GoerliFlag) |
|
|
|
CheckExclusive(ctx, DeveloperFlag, TestnetFlag, RinkebyFlag, GoerliFlag) |
|
|
|
CheckExclusive(ctx, LightServFlag, SyncModeFlag, "light") |
|
|
|
CheckExclusive(ctx, LightLegacyServFlag, LightServeFlag, SyncModeFlag, "light") |
|
|
|
// Can't use both ephemeral unlocked and external signer
|
|
|
|
CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) // Can't use both ephemeral unlocked and external signer
|
|
|
|
CheckExclusive(ctx, DeveloperFlag, ExternalSignerFlag) |
|
|
|
|
|
|
|
var ks *keystore.KeyStore |
|
|
|
var ks *keystore.KeyStore |
|
|
|
if keystores := stack.AccountManager().Backends(keystore.KeyStoreType); len(keystores) > 0 { |
|
|
|
if keystores := stack.AccountManager().Backends(keystore.KeyStoreType); len(keystores) > 0 { |
|
|
|
ks = keystores[0].(*keystore.KeyStore) |
|
|
|
ks = keystores[0].(*keystore.KeyStore) |
|
|
|