github.com/prysmaticlabs/prysm@v1.4.4/cmd/beacon-chain/flags/config.go (about) 1 package flags 2 3 import ( 4 "github.com/prysmaticlabs/prysm/shared/cmd" 5 "github.com/urfave/cli/v2" 6 ) 7 8 // GlobalFlags specifies all the global flags for the 9 // beacon node. 10 type GlobalFlags struct { 11 HeadSync bool 12 DisableSync bool 13 DisableDiscv5 bool 14 SubscribeToAllSubnets bool 15 MinimumSyncPeers int 16 BlockBatchLimit int 17 BlockBatchLimitBurstFactor int 18 } 19 20 var globalConfig *GlobalFlags 21 22 // Get retrieves the global config. 23 func Get() *GlobalFlags { 24 if globalConfig == nil { 25 return &GlobalFlags{} 26 } 27 return globalConfig 28 } 29 30 // Init sets the global config equal to the config that is passed in. 31 func Init(c *GlobalFlags) { 32 globalConfig = c 33 } 34 35 // ConfigureGlobalFlags initializes the global config. 36 // based on the provided cli context. 37 func ConfigureGlobalFlags(ctx *cli.Context) { 38 cfg := &GlobalFlags{} 39 if ctx.Bool(HeadSync.Name) { 40 log.Warn("Using Head Sync flag, it starts syncing from last saved head.") 41 cfg.HeadSync = true 42 } 43 if ctx.Bool(DisableSync.Name) { 44 log.Warn("Using Disable Sync flag, using this flag on a live network might lead to adverse consequences.") 45 cfg.DisableSync = true 46 } 47 if ctx.Bool(SubscribeToAllSubnets.Name) { 48 log.Warn("Subscribing to All Attestation Subnets") 49 cfg.SubscribeToAllSubnets = true 50 } 51 cfg.DisableDiscv5 = ctx.Bool(DisableDiscv5.Name) 52 cfg.BlockBatchLimit = ctx.Int(BlockBatchLimit.Name) 53 cfg.BlockBatchLimitBurstFactor = ctx.Int(BlockBatchLimitBurstFactor.Name) 54 configureMinimumPeers(ctx, cfg) 55 56 Init(cfg) 57 } 58 59 func configureMinimumPeers(ctx *cli.Context, cfg *GlobalFlags) { 60 cfg.MinimumSyncPeers = ctx.Int(MinSyncPeers.Name) 61 maxPeers := ctx.Int(cmd.P2PMaxPeers.Name) 62 if cfg.MinimumSyncPeers > maxPeers { 63 log.Warnf("Changing Minimum Sync Peers to %d", maxPeers) 64 cfg.MinimumSyncPeers = maxPeers 65 } 66 }