github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/internal/cli/server/flags.go (about)

     1  package server
     2  
     3  import (
     4  	"github.com/ethereum/go-ethereum/internal/cli/flagset"
     5  )
     6  
     7  func (c *Command) Flags() *flagset.Flagset {
     8  	c.cliConfig = DefaultConfig()
     9  
    10  	f := flagset.NewFlagSet("server")
    11  
    12  	f.StringFlag(&flagset.StringFlag{
    13  		Name:    "chain",
    14  		Usage:   "Name of the chain to sync ('mumbai', 'mainnet') or path to a genesis file",
    15  		Value:   &c.cliConfig.Chain,
    16  		Default: c.cliConfig.Chain,
    17  	})
    18  	f.StringFlag(&flagset.StringFlag{
    19  		Name:               "identity",
    20  		Usage:              "Name/Identity of the node",
    21  		Value:              &c.cliConfig.Identity,
    22  		Default:            c.cliConfig.Identity,
    23  		HideDefaultFromDoc: true,
    24  	})
    25  	f.IntFlag(&flagset.IntFlag{
    26  		Name:    "verbosity",
    27  		Usage:   "Logging verbosity for the server (5=trace|4=debug|3=info|2=warn|1=error|0=crit), default = 3",
    28  		Value:   &c.cliConfig.Verbosity,
    29  		Default: c.cliConfig.Verbosity,
    30  	})
    31  	f.StringFlag(&flagset.StringFlag{
    32  		Name:    "log-level",
    33  		Usage:   "Log level for the server (trace|debug|info|warn|error|crit), will be deprecated soon. Use verbosity instead",
    34  		Value:   &c.cliConfig.LogLevel,
    35  		Default: c.cliConfig.LogLevel,
    36  	})
    37  	f.StringFlag(&flagset.StringFlag{
    38  		Name:               "datadir",
    39  		Usage:              "Path of the data directory to store information",
    40  		Value:              &c.cliConfig.DataDir,
    41  		Default:            c.cliConfig.DataDir,
    42  		HideDefaultFromDoc: true,
    43  	})
    44  	f.BoolFlag(&flagset.BoolFlag{
    45  		Name:    "vmdebug",
    46  		Usage:   "Record information useful for VM and contract debugging",
    47  		Value:   &c.cliConfig.EnablePreimageRecording,
    48  		Default: c.cliConfig.EnablePreimageRecording,
    49  	})
    50  	f.StringFlag(&flagset.StringFlag{
    51  		Name:    "datadir.ancient",
    52  		Usage:   "Data directory for ancient chain segments (default = inside chaindata)",
    53  		Value:   &c.cliConfig.Ancient,
    54  		Default: c.cliConfig.Ancient,
    55  	})
    56  	f.StringFlag(&flagset.StringFlag{
    57  		Name:  "keystore",
    58  		Usage: "Path of the directory where keystores are located",
    59  		Value: &c.cliConfig.KeyStoreDir,
    60  	})
    61  	f.Uint64Flag(&flagset.Uint64Flag{
    62  		Name:    "rpc.batchlimit",
    63  		Usage:   "Maximum number of messages in a batch (default=100, use 0 for no limits)",
    64  		Value:   &c.cliConfig.RPCBatchLimit,
    65  		Default: c.cliConfig.RPCBatchLimit,
    66  	})
    67  	f.Uint64Flag(&flagset.Uint64Flag{
    68  		Name:    "rpc.returndatalimit",
    69  		Usage:   "Maximum size (in bytes) a result of an rpc request could have (default=100000, use 0 for no limits)",
    70  		Value:   &c.cliConfig.RPCReturnDataLimit,
    71  		Default: c.cliConfig.RPCReturnDataLimit,
    72  	})
    73  	f.StringFlag(&flagset.StringFlag{
    74  		Name:  "config",
    75  		Usage: "Path to the TOML configuration file",
    76  		Value: &c.configFile,
    77  	})
    78  	f.StringFlag(&flagset.StringFlag{
    79  		Name:    "syncmode",
    80  		Usage:   `Blockchain sync mode (only "full" sync supported)`,
    81  		Value:   &c.cliConfig.SyncMode,
    82  		Default: c.cliConfig.SyncMode,
    83  	})
    84  	f.StringFlag(&flagset.StringFlag{
    85  		Name:    "gcmode",
    86  		Usage:   `Blockchain garbage collection mode ("full", "archive")`,
    87  		Value:   &c.cliConfig.GcMode,
    88  		Default: c.cliConfig.GcMode,
    89  	})
    90  	f.MapStringFlag(&flagset.MapStringFlag{
    91  		Name:    "eth.requiredblocks",
    92  		Usage:   "Comma separated block number-to-hash mappings to require for peering (<number>=<hash>)",
    93  		Value:   &c.cliConfig.RequiredBlocks,
    94  		Default: c.cliConfig.RequiredBlocks,
    95  	})
    96  	f.BoolFlag(&flagset.BoolFlag{
    97  		Name:    "snapshot",
    98  		Usage:   `Enables the snapshot-database mode`,
    99  		Value:   &c.cliConfig.Snapshot,
   100  		Default: c.cliConfig.Snapshot,
   101  	})
   102  	f.BoolFlag(&flagset.BoolFlag{
   103  		Name:    "bor.logs",
   104  		Usage:   `Enables bor log retrieval`,
   105  		Value:   &c.cliConfig.BorLogs,
   106  		Default: c.cliConfig.BorLogs,
   107  	})
   108  
   109  	// logging related flags (log-level and verbosity is present above, it will be removed soon)
   110  	f.StringFlag(&flagset.StringFlag{
   111  		Name:    "vmodule",
   112  		Usage:   "Per-module verbosity: comma-separated list of <pattern>=<level> (e.g. eth/*=5,p2p=4)",
   113  		Value:   &c.cliConfig.Logging.Vmodule,
   114  		Default: c.cliConfig.Logging.Vmodule,
   115  		Group:   "Logging",
   116  	})
   117  	f.BoolFlag(&flagset.BoolFlag{
   118  		Name:    "log.json",
   119  		Usage:   "Format logs with JSON",
   120  		Value:   &c.cliConfig.Logging.Json,
   121  		Default: c.cliConfig.Logging.Json,
   122  		Group:   "Logging",
   123  	})
   124  	f.StringFlag(&flagset.StringFlag{
   125  		Name:    "log.backtrace",
   126  		Usage:   "Request a stack trace at a specific logging statement (e.g. 'block.go:271')",
   127  		Value:   &c.cliConfig.Logging.Backtrace,
   128  		Default: c.cliConfig.Logging.Backtrace,
   129  		Group:   "Logging",
   130  	})
   131  	f.BoolFlag(&flagset.BoolFlag{
   132  		Name:    "log.debug",
   133  		Usage:   "Prepends log messages with call-site location (file and line number)",
   134  		Value:   &c.cliConfig.Logging.Debug,
   135  		Default: c.cliConfig.Logging.Debug,
   136  		Group:   "Logging",
   137  	})
   138  
   139  	// heimdall
   140  	f.StringFlag(&flagset.StringFlag{
   141  		Name:    "bor.heimdall",
   142  		Usage:   "URL of Heimdall service",
   143  		Value:   &c.cliConfig.Heimdall.URL,
   144  		Default: c.cliConfig.Heimdall.URL,
   145  	})
   146  	f.BoolFlag(&flagset.BoolFlag{
   147  		Name:    "bor.withoutheimdall",
   148  		Usage:   "Run without Heimdall service (for testing purpose)",
   149  		Value:   &c.cliConfig.Heimdall.Without,
   150  		Default: c.cliConfig.Heimdall.Without,
   151  	})
   152  	f.BoolFlag(&flagset.BoolFlag{
   153  		Name:    "bor.devfakeauthor",
   154  		Usage:   "Run miner without validator set authorization [dev mode] : Use with '--bor.withoutheimdall'",
   155  		Value:   &c.cliConfig.DevFakeAuthor,
   156  		Default: c.cliConfig.DevFakeAuthor,
   157  	})
   158  	f.StringFlag(&flagset.StringFlag{
   159  		Name:    "bor.heimdallgRPC",
   160  		Usage:   "Address of Heimdall gRPC service",
   161  		Value:   &c.cliConfig.Heimdall.GRPCAddress,
   162  		Default: c.cliConfig.Heimdall.GRPCAddress,
   163  	})
   164  	f.BoolFlag(&flagset.BoolFlag{
   165  		Name:    "bor.runheimdall",
   166  		Usage:   "Run Heimdall service as a child process",
   167  		Value:   &c.cliConfig.Heimdall.RunHeimdall,
   168  		Default: c.cliConfig.Heimdall.RunHeimdall,
   169  	})
   170  	f.StringFlag(&flagset.StringFlag{
   171  		Name:    "bor.runheimdallargs",
   172  		Usage:   "Arguments to pass to Heimdall service",
   173  		Value:   &c.cliConfig.Heimdall.RunHeimdallArgs,
   174  		Default: c.cliConfig.Heimdall.RunHeimdallArgs,
   175  	})
   176  	f.BoolFlag(&flagset.BoolFlag{
   177  		Name:    "bor.useheimdallapp",
   178  		Usage:   "Use child heimdall process to fetch data, Only works when bor.runheimdall is true",
   179  		Value:   &c.cliConfig.Heimdall.UseHeimdallApp,
   180  		Default: c.cliConfig.Heimdall.UseHeimdallApp,
   181  	})
   182  
   183  	// txpool options
   184  	f.SliceStringFlag(&flagset.SliceStringFlag{
   185  		Name:    "txpool.locals",
   186  		Usage:   "Comma separated accounts to treat as locals (no flush, priority inclusion)",
   187  		Value:   &c.cliConfig.TxPool.Locals,
   188  		Default: c.cliConfig.TxPool.Locals,
   189  		Group:   "Transaction Pool",
   190  	})
   191  	f.BoolFlag(&flagset.BoolFlag{
   192  		Name:    "txpool.nolocals",
   193  		Usage:   "Disables price exemptions for locally submitted transactions",
   194  		Value:   &c.cliConfig.TxPool.NoLocals,
   195  		Default: c.cliConfig.TxPool.NoLocals,
   196  		Group:   "Transaction Pool",
   197  	})
   198  	f.StringFlag(&flagset.StringFlag{
   199  		Name:    "txpool.journal",
   200  		Usage:   "Disk journal for local transaction to survive node restarts",
   201  		Value:   &c.cliConfig.TxPool.Journal,
   202  		Default: c.cliConfig.TxPool.Journal,
   203  		Group:   "Transaction Pool",
   204  	})
   205  	f.DurationFlag(&flagset.DurationFlag{
   206  		Name:    "txpool.rejournal",
   207  		Usage:   "Time interval to regenerate the local transaction journal",
   208  		Value:   &c.cliConfig.TxPool.Rejournal,
   209  		Default: c.cliConfig.TxPool.Rejournal,
   210  		Group:   "Transaction Pool",
   211  	})
   212  	f.Uint64Flag(&flagset.Uint64Flag{
   213  		Name:    "txpool.pricelimit",
   214  		Usage:   "Minimum gas price limit to enforce for acceptance into the pool",
   215  		Value:   &c.cliConfig.TxPool.PriceLimit,
   216  		Default: c.cliConfig.TxPool.PriceLimit,
   217  		Group:   "Transaction Pool",
   218  	})
   219  	f.Uint64Flag(&flagset.Uint64Flag{
   220  		Name:    "txpool.pricebump",
   221  		Usage:   "Price bump percentage to replace an already existing transaction",
   222  		Value:   &c.cliConfig.TxPool.PriceBump,
   223  		Default: c.cliConfig.TxPool.PriceBump,
   224  		Group:   "Transaction Pool",
   225  	})
   226  	f.Uint64Flag(&flagset.Uint64Flag{
   227  		Name:    "txpool.accountslots",
   228  		Usage:   "Minimum number of executable transaction slots guaranteed per account",
   229  		Value:   &c.cliConfig.TxPool.AccountSlots,
   230  		Default: c.cliConfig.TxPool.AccountSlots,
   231  		Group:   "Transaction Pool",
   232  	})
   233  	f.Uint64Flag(&flagset.Uint64Flag{
   234  		Name:    "txpool.globalslots",
   235  		Usage:   "Maximum number of executable transaction slots for all accounts",
   236  		Value:   &c.cliConfig.TxPool.GlobalSlots,
   237  		Default: c.cliConfig.TxPool.GlobalSlots,
   238  		Group:   "Transaction Pool",
   239  	})
   240  	f.Uint64Flag(&flagset.Uint64Flag{
   241  		Name:    "txpool.accountqueue",
   242  		Usage:   "Maximum number of non-executable transaction slots permitted per account",
   243  		Value:   &c.cliConfig.TxPool.AccountQueue,
   244  		Default: c.cliConfig.TxPool.AccountQueue,
   245  		Group:   "Transaction Pool",
   246  	})
   247  	f.Uint64Flag(&flagset.Uint64Flag{
   248  		Name:    "txpool.globalqueue",
   249  		Usage:   "Maximum number of non-executable transaction slots for all accounts",
   250  		Value:   &c.cliConfig.TxPool.GlobalQueue,
   251  		Default: c.cliConfig.TxPool.GlobalQueue,
   252  		Group:   "Transaction Pool",
   253  	})
   254  	f.DurationFlag(&flagset.DurationFlag{
   255  		Name:    "txpool.lifetime",
   256  		Usage:   "Maximum amount of time non-executable transaction are queued",
   257  		Value:   &c.cliConfig.TxPool.LifeTime,
   258  		Default: c.cliConfig.TxPool.LifeTime,
   259  		Group:   "Transaction Pool",
   260  	})
   261  
   262  	// sealer options
   263  	f.BoolFlag(&flagset.BoolFlag{
   264  		Name:    "mine",
   265  		Usage:   "Enable mining",
   266  		Value:   &c.cliConfig.Sealer.Enabled,
   267  		Default: c.cliConfig.Sealer.Enabled,
   268  		Group:   "Sealer",
   269  	})
   270  	f.StringFlag(&flagset.StringFlag{
   271  		Name:    "miner.etherbase",
   272  		Usage:   "Public address for block mining rewards",
   273  		Value:   &c.cliConfig.Sealer.Etherbase,
   274  		Default: c.cliConfig.Sealer.Etherbase,
   275  		Group:   "Sealer",
   276  	})
   277  	f.StringFlag(&flagset.StringFlag{
   278  		Name:    "miner.extradata",
   279  		Usage:   "Block extra data set by the miner (default = client version)",
   280  		Value:   &c.cliConfig.Sealer.ExtraData,
   281  		Default: c.cliConfig.Sealer.ExtraData,
   282  		Group:   "Sealer",
   283  	})
   284  	f.Uint64Flag(&flagset.Uint64Flag{
   285  		Name:    "miner.gaslimit",
   286  		Usage:   "Target gas ceiling (gas limit) for mined blocks",
   287  		Value:   &c.cliConfig.Sealer.GasCeil,
   288  		Default: c.cliConfig.Sealer.GasCeil,
   289  		Group:   "Sealer",
   290  	})
   291  	f.BigIntFlag(&flagset.BigIntFlag{
   292  		Name:    "miner.gasprice",
   293  		Usage:   "Minimum gas price for mining a transaction",
   294  		Value:   c.cliConfig.Sealer.GasPrice,
   295  		Group:   "Sealer",
   296  		Default: c.cliConfig.Sealer.GasPrice,
   297  	})
   298  	f.DurationFlag(&flagset.DurationFlag{
   299  		Name:    "miner.recommit",
   300  		Usage:   "The time interval for miner to re-create mining work",
   301  		Value:   &c.cliConfig.Sealer.Recommit,
   302  		Default: c.cliConfig.Sealer.Recommit,
   303  		Group:   "Sealer",
   304  	})
   305  	f.BoolFlag(&flagset.BoolFlag{
   306  		Name:    "miner.interruptcommit",
   307  		Usage:   "Interrupt block commit when block creation time is passed",
   308  		Value:   &c.cliConfig.Sealer.CommitInterruptFlag,
   309  		Default: c.cliConfig.Sealer.CommitInterruptFlag,
   310  		Group:   "Sealer",
   311  	})
   312  
   313  	// ethstats
   314  	f.StringFlag(&flagset.StringFlag{
   315  		Name:    "ethstats",
   316  		Usage:   "Reporting URL of a ethstats service (nodename:secret@host:port)",
   317  		Value:   &c.cliConfig.Ethstats,
   318  		Default: c.cliConfig.Ethstats,
   319  	})
   320  
   321  	// gas price oracle
   322  	f.Uint64Flag(&flagset.Uint64Flag{
   323  		Name:    "gpo.blocks",
   324  		Usage:   "Number of recent blocks to check for gas prices",
   325  		Value:   &c.cliConfig.Gpo.Blocks,
   326  		Default: c.cliConfig.Gpo.Blocks,
   327  	})
   328  	f.Uint64Flag(&flagset.Uint64Flag{
   329  		Name:    "gpo.percentile",
   330  		Usage:   "Suggested gas price is the given percentile of a set of recent transaction gas prices",
   331  		Value:   &c.cliConfig.Gpo.Percentile,
   332  		Default: c.cliConfig.Gpo.Percentile,
   333  	})
   334  	f.IntFlag(&flagset.IntFlag{
   335  		Name:    "gpo.maxheaderhistory",
   336  		Usage:   "Maximum header history of gasprice oracle",
   337  		Value:   &c.cliConfig.Gpo.MaxHeaderHistory,
   338  		Default: c.cliConfig.Gpo.MaxHeaderHistory,
   339  	})
   340  	f.IntFlag(&flagset.IntFlag{
   341  		Name:    "gpo.maxblockhistory",
   342  		Usage:   "Maximum block history of gasprice oracle",
   343  		Value:   &c.cliConfig.Gpo.MaxBlockHistory,
   344  		Default: c.cliConfig.Gpo.MaxBlockHistory,
   345  	})
   346  	f.BigIntFlag(&flagset.BigIntFlag{
   347  		Name:    "gpo.maxprice",
   348  		Usage:   "Maximum gas price will be recommended by gpo",
   349  		Value:   c.cliConfig.Gpo.MaxPrice,
   350  		Default: c.cliConfig.Gpo.MaxPrice,
   351  	})
   352  	f.BigIntFlag(&flagset.BigIntFlag{
   353  		Name:    "gpo.ignoreprice",
   354  		Usage:   "Gas price below which gpo will ignore transactions",
   355  		Value:   c.cliConfig.Gpo.IgnorePrice,
   356  		Default: c.cliConfig.Gpo.IgnorePrice,
   357  	})
   358  
   359  	// cache options
   360  	f.Uint64Flag(&flagset.Uint64Flag{
   361  		Name:    "cache",
   362  		Usage:   "Megabytes of memory allocated to internal caching",
   363  		Value:   &c.cliConfig.Cache.Cache,
   364  		Default: c.cliConfig.Cache.Cache,
   365  		Group:   "Cache",
   366  	})
   367  	f.Uint64Flag(&flagset.Uint64Flag{
   368  		Name:    "cache.database",
   369  		Usage:   "Percentage of cache memory allowance to use for database io",
   370  		Value:   &c.cliConfig.Cache.PercDatabase,
   371  		Default: c.cliConfig.Cache.PercDatabase,
   372  		Group:   "Cache",
   373  	})
   374  	f.Uint64Flag(&flagset.Uint64Flag{
   375  		Name:    "cache.trie",
   376  		Usage:   "Percentage of cache memory allowance to use for trie caching",
   377  		Value:   &c.cliConfig.Cache.PercTrie,
   378  		Default: c.cliConfig.Cache.PercTrie,
   379  		Group:   "Cache",
   380  	})
   381  	f.StringFlag(&flagset.StringFlag{
   382  		Name:    "cache.trie.journal",
   383  		Usage:   "Disk journal directory for trie cache to survive node restarts",
   384  		Value:   &c.cliConfig.Cache.Journal,
   385  		Default: c.cliConfig.Cache.Journal,
   386  		Group:   "Cache",
   387  	})
   388  	f.DurationFlag(&flagset.DurationFlag{
   389  		Name:    "cache.trie.rejournal",
   390  		Usage:   "Time interval to regenerate the trie cache journal",
   391  		Value:   &c.cliConfig.Cache.Rejournal,
   392  		Default: c.cliConfig.Cache.Rejournal,
   393  		Group:   "Cache",
   394  	})
   395  	f.Uint64Flag(&flagset.Uint64Flag{
   396  		Name:    "cache.gc",
   397  		Usage:   "Percentage of cache memory allowance to use for trie pruning",
   398  		Value:   &c.cliConfig.Cache.PercGc,
   399  		Default: c.cliConfig.Cache.PercGc,
   400  		Group:   "Cache",
   401  	})
   402  	f.Uint64Flag(&flagset.Uint64Flag{
   403  		Name:    "cache.snapshot",
   404  		Usage:   "Percentage of cache memory allowance to use for snapshot caching",
   405  		Value:   &c.cliConfig.Cache.PercSnapshot,
   406  		Default: c.cliConfig.Cache.PercSnapshot,
   407  		Group:   "Cache",
   408  	})
   409  	f.BoolFlag(&flagset.BoolFlag{
   410  		Name:    "cache.noprefetch",
   411  		Usage:   "Disable heuristic state prefetch during block import (less CPU and disk IO, more time waiting for data)",
   412  		Value:   &c.cliConfig.Cache.NoPrefetch,
   413  		Default: c.cliConfig.Cache.NoPrefetch,
   414  		Group:   "Cache",
   415  	})
   416  	f.BoolFlag(&flagset.BoolFlag{
   417  		Name:    "cache.preimages",
   418  		Usage:   "Enable recording the SHA3/keccak preimages of trie keys",
   419  		Value:   &c.cliConfig.Cache.Preimages,
   420  		Default: c.cliConfig.Cache.Preimages,
   421  		Group:   "Cache",
   422  	})
   423  	f.Uint64Flag(&flagset.Uint64Flag{
   424  		Name:    "cache.triesinmemory",
   425  		Usage:   "Number of block states (tries) to keep in memory (default = 128)",
   426  		Value:   &c.cliConfig.Cache.TriesInMemory,
   427  		Default: c.cliConfig.Cache.TriesInMemory,
   428  		Group:   "Cache",
   429  	})
   430  	f.Uint64Flag(&flagset.Uint64Flag{
   431  		Name:    "txlookuplimit",
   432  		Usage:   "Number of recent blocks to maintain transactions index for",
   433  		Value:   &c.cliConfig.Cache.TxLookupLimit,
   434  		Default: c.cliConfig.Cache.TxLookupLimit,
   435  		Group:   "Cache",
   436  	})
   437  	f.IntFlag(&flagset.IntFlag{
   438  		Name:    "fdlimit",
   439  		Usage:   "Raise the open file descriptor resource limit (default = system fd limit)",
   440  		Value:   &c.cliConfig.Cache.FDLimit,
   441  		Default: c.cliConfig.Cache.FDLimit,
   442  		Group:   "Cache",
   443  	})
   444  
   445  	// rpc options
   446  	f.Uint64Flag(&flagset.Uint64Flag{
   447  		Name:    "rpc.gascap",
   448  		Usage:   "Sets a cap on gas that can be used in eth_call/estimateGas (0=infinite)",
   449  		Value:   &c.cliConfig.JsonRPC.GasCap,
   450  		Default: c.cliConfig.JsonRPC.GasCap,
   451  		Group:   "JsonRPC",
   452  	})
   453  	f.DurationFlag(&flagset.DurationFlag{
   454  		Name:    "rpc.evmtimeout",
   455  		Usage:   "Sets a timeout used for eth_call (0=infinite)",
   456  		Value:   &c.cliConfig.JsonRPC.RPCEVMTimeout,
   457  		Default: c.cliConfig.JsonRPC.RPCEVMTimeout,
   458  		Group:   "JsonRPC",
   459  	})
   460  	f.Float64Flag(&flagset.Float64Flag{
   461  		Name:    "rpc.txfeecap",
   462  		Usage:   "Sets a cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap)",
   463  		Value:   &c.cliConfig.JsonRPC.TxFeeCap,
   464  		Default: c.cliConfig.JsonRPC.TxFeeCap,
   465  		Group:   "JsonRPC",
   466  	})
   467  	f.BoolFlag(&flagset.BoolFlag{
   468  		Name:    "rpc.allow-unprotected-txs",
   469  		Usage:   "Allow for unprotected (non EIP155 signed) transactions to be submitted via RPC",
   470  		Value:   &c.cliConfig.JsonRPC.AllowUnprotectedTxs,
   471  		Default: c.cliConfig.JsonRPC.AllowUnprotectedTxs,
   472  		Group:   "JsonRPC",
   473  	})
   474  	f.BoolFlag(&flagset.BoolFlag{
   475  		Name:    "ipcdisable",
   476  		Usage:   "Disable the IPC-RPC server",
   477  		Value:   &c.cliConfig.JsonRPC.IPCDisable,
   478  		Default: c.cliConfig.JsonRPC.IPCDisable,
   479  		Group:   "JsonRPC",
   480  	})
   481  	f.StringFlag(&flagset.StringFlag{
   482  		Name:    "ipcpath",
   483  		Usage:   "Filename for IPC socket/pipe within the datadir (explicit paths escape it)",
   484  		Value:   &c.cliConfig.JsonRPC.IPCPath,
   485  		Default: c.cliConfig.JsonRPC.IPCPath,
   486  		Group:   "JsonRPC",
   487  	})
   488  	f.StringFlag(&flagset.StringFlag{
   489  		Name:    "authrpc.jwtsecret",
   490  		Usage:   "Path to a JWT secret to use for authenticated RPC endpoints",
   491  		Value:   &c.cliConfig.JsonRPC.Auth.JWTSecret,
   492  		Default: c.cliConfig.JsonRPC.Auth.JWTSecret,
   493  		Group:   "JsonRPC",
   494  	})
   495  	f.StringFlag(&flagset.StringFlag{
   496  		Name:    "authrpc.addr",
   497  		Usage:   "Listening address for authenticated APIs",
   498  		Value:   &c.cliConfig.JsonRPC.Auth.Addr,
   499  		Default: c.cliConfig.JsonRPC.Auth.Addr,
   500  		Group:   "JsonRPC",
   501  	})
   502  	f.Uint64Flag(&flagset.Uint64Flag{
   503  		Name:    "authrpc.port",
   504  		Usage:   "Listening port for authenticated APIs",
   505  		Value:   &c.cliConfig.JsonRPC.Auth.Port,
   506  		Default: c.cliConfig.JsonRPC.Auth.Port,
   507  		Group:   "JsonRPC",
   508  	})
   509  	f.SliceStringFlag(&flagset.SliceStringFlag{
   510  		Name:    "authrpc.vhosts",
   511  		Usage:   "Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard.",
   512  		Value:   &c.cliConfig.JsonRPC.Auth.VHosts,
   513  		Default: c.cliConfig.JsonRPC.Auth.VHosts,
   514  		Group:   "JsonRPC",
   515  	})
   516  	f.SliceStringFlag(&flagset.SliceStringFlag{
   517  		Name:    "http.corsdomain",
   518  		Usage:   "Comma separated list of domains from which to accept cross origin requests (browser enforced)",
   519  		Value:   &c.cliConfig.JsonRPC.Http.Cors,
   520  		Default: c.cliConfig.JsonRPC.Http.Cors,
   521  		Group:   "JsonRPC",
   522  	})
   523  	f.SliceStringFlag(&flagset.SliceStringFlag{
   524  		Name:    "http.vhosts",
   525  		Usage:   "Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard.",
   526  		Value:   &c.cliConfig.JsonRPC.Http.VHost,
   527  		Default: c.cliConfig.JsonRPC.Http.VHost,
   528  		Group:   "JsonRPC",
   529  	})
   530  	f.SliceStringFlag(&flagset.SliceStringFlag{
   531  		Name:    "ws.origins",
   532  		Usage:   "Origins from which to accept websockets requests",
   533  		Value:   &c.cliConfig.JsonRPC.Ws.Origins,
   534  		Default: c.cliConfig.JsonRPC.Ws.Origins,
   535  		Group:   "JsonRPC",
   536  	})
   537  	f.SliceStringFlag(&flagset.SliceStringFlag{
   538  		Name:    "graphql.corsdomain",
   539  		Usage:   "Comma separated list of domains from which to accept cross origin requests (browser enforced)",
   540  		Value:   &c.cliConfig.JsonRPC.Graphql.Cors,
   541  		Default: c.cliConfig.JsonRPC.Graphql.Cors,
   542  		Group:   "JsonRPC",
   543  	})
   544  	f.SliceStringFlag(&flagset.SliceStringFlag{
   545  		Name:    "graphql.vhosts",
   546  		Usage:   "Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard.",
   547  		Value:   &c.cliConfig.JsonRPC.Graphql.VHost,
   548  		Default: c.cliConfig.JsonRPC.Graphql.VHost,
   549  		Group:   "JsonRPC",
   550  	})
   551  
   552  	// http options
   553  	f.BoolFlag(&flagset.BoolFlag{
   554  		Name:    "http",
   555  		Usage:   "Enable the HTTP-RPC server",
   556  		Value:   &c.cliConfig.JsonRPC.Http.Enabled,
   557  		Default: c.cliConfig.JsonRPC.Http.Enabled,
   558  		Group:   "JsonRPC",
   559  	})
   560  	f.StringFlag(&flagset.StringFlag{
   561  		Name:    "http.addr",
   562  		Usage:   "HTTP-RPC server listening interface",
   563  		Value:   &c.cliConfig.JsonRPC.Http.Host,
   564  		Default: c.cliConfig.JsonRPC.Http.Host,
   565  		Group:   "JsonRPC",
   566  	})
   567  	f.Uint64Flag(&flagset.Uint64Flag{
   568  		Name:    "http.port",
   569  		Usage:   "HTTP-RPC server listening port",
   570  		Value:   &c.cliConfig.JsonRPC.Http.Port,
   571  		Default: c.cliConfig.JsonRPC.Http.Port,
   572  		Group:   "JsonRPC",
   573  	})
   574  	f.StringFlag(&flagset.StringFlag{
   575  		Name:    "http.rpcprefix",
   576  		Usage:   "HTTP path path prefix on which JSON-RPC is served. Use '/' to serve on all paths.",
   577  		Value:   &c.cliConfig.JsonRPC.Http.Prefix,
   578  		Default: c.cliConfig.JsonRPC.Http.Prefix,
   579  		Group:   "JsonRPC",
   580  	})
   581  	f.SliceStringFlag(&flagset.SliceStringFlag{
   582  		Name:    "http.api",
   583  		Usage:   "API's offered over the HTTP-RPC interface",
   584  		Value:   &c.cliConfig.JsonRPC.Http.API,
   585  		Default: c.cliConfig.JsonRPC.Http.API,
   586  		Group:   "JsonRPC",
   587  	})
   588  	f.Uint64Flag(&flagset.Uint64Flag{
   589  		Name:    "http.ep-size",
   590  		Usage:   "Maximum size of workers to run in rpc execution pool for HTTP requests",
   591  		Value:   &c.cliConfig.JsonRPC.Http.ExecutionPoolSize,
   592  		Default: c.cliConfig.JsonRPC.Http.ExecutionPoolSize,
   593  		Group:   "JsonRPC",
   594  	})
   595  	f.DurationFlag(&flagset.DurationFlag{
   596  		Name:    "http.ep-requesttimeout",
   597  		Usage:   "Request Timeout for rpc execution pool for HTTP requests",
   598  		Value:   &c.cliConfig.JsonRPC.Http.ExecutionPoolRequestTimeout,
   599  		Default: c.cliConfig.JsonRPC.Http.ExecutionPoolRequestTimeout,
   600  		Group:   "JsonRPC",
   601  	})
   602  
   603  	// ws options
   604  	f.BoolFlag(&flagset.BoolFlag{
   605  		Name:    "ws",
   606  		Usage:   "Enable the WS-RPC server",
   607  		Value:   &c.cliConfig.JsonRPC.Ws.Enabled,
   608  		Default: c.cliConfig.JsonRPC.Ws.Enabled,
   609  		Group:   "JsonRPC",
   610  	})
   611  	f.StringFlag(&flagset.StringFlag{
   612  		Name:    "ws.addr",
   613  		Usage:   "WS-RPC server listening interface",
   614  		Value:   &c.cliConfig.JsonRPC.Ws.Host,
   615  		Default: c.cliConfig.JsonRPC.Ws.Host,
   616  		Group:   "JsonRPC",
   617  	})
   618  	f.Uint64Flag(&flagset.Uint64Flag{
   619  		Name:    "ws.port",
   620  		Usage:   "WS-RPC server listening port",
   621  		Value:   &c.cliConfig.JsonRPC.Ws.Port,
   622  		Default: c.cliConfig.JsonRPC.Ws.Port,
   623  		Group:   "JsonRPC",
   624  	})
   625  	f.StringFlag(&flagset.StringFlag{
   626  		Name:    "ws.rpcprefix",
   627  		Usage:   "HTTP path prefix on which JSON-RPC is served. Use '/' to serve on all paths.",
   628  		Value:   &c.cliConfig.JsonRPC.Ws.Prefix,
   629  		Default: c.cliConfig.JsonRPC.Ws.Prefix,
   630  		Group:   "JsonRPC",
   631  	})
   632  	f.SliceStringFlag(&flagset.SliceStringFlag{
   633  		Name:    "ws.api",
   634  		Usage:   "API's offered over the WS-RPC interface",
   635  		Value:   &c.cliConfig.JsonRPC.Ws.API,
   636  		Default: c.cliConfig.JsonRPC.Ws.API,
   637  		Group:   "JsonRPC",
   638  	})
   639  	f.Uint64Flag(&flagset.Uint64Flag{
   640  		Name:    "ws.ep-size",
   641  		Usage:   "Maximum size of workers to run in rpc execution pool for WS requests",
   642  		Value:   &c.cliConfig.JsonRPC.Ws.ExecutionPoolSize,
   643  		Default: c.cliConfig.JsonRPC.Ws.ExecutionPoolSize,
   644  		Group:   "JsonRPC",
   645  	})
   646  	f.DurationFlag(&flagset.DurationFlag{
   647  		Name:    "ws.ep-requesttimeout",
   648  		Usage:   "Request Timeout for rpc execution pool for WS requests",
   649  		Value:   &c.cliConfig.JsonRPC.Ws.ExecutionPoolRequestTimeout,
   650  		Default: c.cliConfig.JsonRPC.Ws.ExecutionPoolRequestTimeout,
   651  		Group:   "JsonRPC",
   652  	})
   653  
   654  	// graphql options
   655  	f.BoolFlag(&flagset.BoolFlag{
   656  		Name:    "graphql",
   657  		Usage:   "Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well.",
   658  		Value:   &c.cliConfig.JsonRPC.Graphql.Enabled,
   659  		Default: c.cliConfig.JsonRPC.Graphql.Enabled,
   660  		Group:   "JsonRPC",
   661  	})
   662  
   663  	// p2p options
   664  	f.StringFlag(&flagset.StringFlag{
   665  		Name:    "bind",
   666  		Usage:   "Network binding address",
   667  		Value:   &c.cliConfig.P2P.Bind,
   668  		Default: c.cliConfig.P2P.Bind,
   669  		Group:   "P2P",
   670  	})
   671  	f.Uint64Flag(&flagset.Uint64Flag{
   672  		Name:    "port",
   673  		Usage:   "Network listening port",
   674  		Value:   &c.cliConfig.P2P.Port,
   675  		Default: c.cliConfig.P2P.Port,
   676  		Group:   "P2P",
   677  	})
   678  	f.SliceStringFlag(&flagset.SliceStringFlag{
   679  		Name:    "bootnodes",
   680  		Usage:   "Comma separated enode URLs for P2P discovery bootstrap",
   681  		Value:   &c.cliConfig.P2P.Discovery.Bootnodes,
   682  		Default: c.cliConfig.P2P.Discovery.Bootnodes,
   683  		Group:   "P2P",
   684  	})
   685  	f.Uint64Flag(&flagset.Uint64Flag{
   686  		Name:    "maxpeers",
   687  		Usage:   "Maximum number of network peers (network disabled if set to 0)",
   688  		Value:   &c.cliConfig.P2P.MaxPeers,
   689  		Default: c.cliConfig.P2P.MaxPeers,
   690  		Group:   "P2P",
   691  	})
   692  	f.Uint64Flag(&flagset.Uint64Flag{
   693  		Name:    "maxpendpeers",
   694  		Usage:   "Maximum number of pending connection attempts",
   695  		Value:   &c.cliConfig.P2P.MaxPendPeers,
   696  		Default: c.cliConfig.P2P.MaxPendPeers,
   697  		Group:   "P2P",
   698  	})
   699  	f.StringFlag(&flagset.StringFlag{
   700  		Name:    "nat",
   701  		Usage:   "NAT port mapping mechanism (any|none|upnp|pmp|extip:<IP>)",
   702  		Value:   &c.cliConfig.P2P.NAT,
   703  		Default: c.cliConfig.P2P.NAT,
   704  		Group:   "P2P",
   705  	})
   706  	f.StringFlag(&flagset.StringFlag{
   707  		Name:    "netrestrict",
   708  		Usage:   "Restricts network communication to the given IP networks (CIDR masks)",
   709  		Value:   &c.cliConfig.P2P.NetRestrict,
   710  		Default: c.cliConfig.P2P.NetRestrict,
   711  		Group:   "P2P",
   712  	})
   713  	f.StringFlag(&flagset.StringFlag{
   714  		Name:    "nodekey",
   715  		Usage:   " P2P node key file",
   716  		Value:   &c.cliConfig.P2P.NodeKey,
   717  		Default: c.cliConfig.P2P.NodeKey,
   718  		Group:   "P2P",
   719  	})
   720  	f.StringFlag(&flagset.StringFlag{
   721  		Name:    "nodekeyhex",
   722  		Usage:   "P2P node key as hex",
   723  		Value:   &c.cliConfig.P2P.NodeKeyHex,
   724  		Default: c.cliConfig.P2P.NodeKeyHex,
   725  		Group:   "P2P",
   726  	})
   727  	f.BoolFlag(&flagset.BoolFlag{
   728  		Name:    "nodiscover",
   729  		Usage:   "Disables the peer discovery mechanism (manual peer addition)",
   730  		Value:   &c.cliConfig.P2P.NoDiscover,
   731  		Default: c.cliConfig.P2P.NoDiscover,
   732  		Group:   "P2P",
   733  	})
   734  	f.BoolFlag(&flagset.BoolFlag{
   735  		Name:    "v5disc",
   736  		Usage:   "Enables the experimental RLPx V5 (Topic Discovery) mechanism",
   737  		Value:   &c.cliConfig.P2P.Discovery.V5Enabled,
   738  		Default: c.cliConfig.P2P.Discovery.V5Enabled,
   739  		Group:   "P2P",
   740  	})
   741  	f.DurationFlag(&flagset.DurationFlag{
   742  		Name:    "txarrivalwait",
   743  		Usage:   "Maximum duration to wait for a transaction before explicitly requesting it (defaults to 500ms)",
   744  		Value:   &c.cliConfig.P2P.TxArrivalWait,
   745  		Default: c.cliConfig.P2P.TxArrivalWait,
   746  		Group:   "P2P",
   747  	})
   748  
   749  	// metrics
   750  	f.BoolFlag(&flagset.BoolFlag{
   751  		Name:    "metrics",
   752  		Usage:   "Enable metrics collection and reporting",
   753  		Value:   &c.cliConfig.Telemetry.Enabled,
   754  		Default: c.cliConfig.Telemetry.Enabled,
   755  		Group:   "Telemetry",
   756  	})
   757  	f.BoolFlag(&flagset.BoolFlag{
   758  		Name:    "metrics.expensive",
   759  		Usage:   "Enable expensive metrics collection and reporting",
   760  		Value:   &c.cliConfig.Telemetry.Expensive,
   761  		Default: c.cliConfig.Telemetry.Expensive,
   762  		Group:   "Telemetry",
   763  	})
   764  	f.BoolFlag(&flagset.BoolFlag{
   765  		Name:    "metrics.influxdb",
   766  		Usage:   "Enable metrics export/push to an external InfluxDB database (v1)",
   767  		Value:   &c.cliConfig.Telemetry.InfluxDB.V1Enabled,
   768  		Default: c.cliConfig.Telemetry.InfluxDB.V1Enabled,
   769  		Group:   "Telemetry",
   770  	})
   771  	f.StringFlag(&flagset.StringFlag{
   772  		Name:    "metrics.influxdb.endpoint",
   773  		Usage:   "InfluxDB API endpoint to report metrics to",
   774  		Value:   &c.cliConfig.Telemetry.InfluxDB.Endpoint,
   775  		Default: c.cliConfig.Telemetry.InfluxDB.Endpoint,
   776  		Group:   "Telemetry",
   777  	})
   778  	f.StringFlag(&flagset.StringFlag{
   779  		Name:    "metrics.influxdb.database",
   780  		Usage:   "InfluxDB database name to push reported metrics to",
   781  		Value:   &c.cliConfig.Telemetry.InfluxDB.Database,
   782  		Default: c.cliConfig.Telemetry.InfluxDB.Database,
   783  		Group:   "Telemetry",
   784  	})
   785  	f.StringFlag(&flagset.StringFlag{
   786  		Name:    "metrics.influxdb.username",
   787  		Usage:   "Username to authorize access to the database",
   788  		Value:   &c.cliConfig.Telemetry.InfluxDB.Username,
   789  		Default: c.cliConfig.Telemetry.InfluxDB.Username,
   790  		Group:   "Telemetry",
   791  	})
   792  	f.StringFlag(&flagset.StringFlag{
   793  		Name:    "metrics.influxdb.password",
   794  		Usage:   "Password to authorize access to the database",
   795  		Value:   &c.cliConfig.Telemetry.InfluxDB.Password,
   796  		Default: c.cliConfig.Telemetry.InfluxDB.Password,
   797  		Group:   "Telemetry",
   798  	})
   799  	f.MapStringFlag(&flagset.MapStringFlag{
   800  		Name:    "metrics.influxdb.tags",
   801  		Usage:   "Comma-separated InfluxDB tags (key/values) attached to all measurements",
   802  		Value:   &c.cliConfig.Telemetry.InfluxDB.Tags,
   803  		Group:   "Telemetry",
   804  		Default: c.cliConfig.Telemetry.InfluxDB.Tags,
   805  	})
   806  	f.StringFlag(&flagset.StringFlag{
   807  		Name:    "metrics.prometheus-addr",
   808  		Usage:   "Address for Prometheus Server",
   809  		Value:   &c.cliConfig.Telemetry.PrometheusAddr,
   810  		Default: c.cliConfig.Telemetry.PrometheusAddr,
   811  		Group:   "Telemetry",
   812  	})
   813  	f.StringFlag(&flagset.StringFlag{
   814  		Name:    "metrics.opencollector-endpoint",
   815  		Usage:   "OpenCollector Endpoint (host:port)",
   816  		Value:   &c.cliConfig.Telemetry.OpenCollectorEndpoint,
   817  		Default: c.cliConfig.Telemetry.OpenCollectorEndpoint,
   818  		Group:   "Telemetry",
   819  	})
   820  	// influx db v2
   821  	f.BoolFlag(&flagset.BoolFlag{
   822  		Name:    "metrics.influxdbv2",
   823  		Usage:   "Enable metrics export/push to an external InfluxDB v2 database",
   824  		Value:   &c.cliConfig.Telemetry.InfluxDB.V2Enabled,
   825  		Default: c.cliConfig.Telemetry.InfluxDB.V2Enabled,
   826  		Group:   "Telemetry",
   827  	})
   828  	f.StringFlag(&flagset.StringFlag{
   829  		Name:    "metrics.influxdb.token",
   830  		Usage:   "Token to authorize access to the database (v2 only)",
   831  		Value:   &c.cliConfig.Telemetry.InfluxDB.Token,
   832  		Default: c.cliConfig.Telemetry.InfluxDB.Token,
   833  		Group:   "Telemetry",
   834  	})
   835  	f.StringFlag(&flagset.StringFlag{
   836  		Name:    "metrics.influxdb.bucket",
   837  		Usage:   "InfluxDB bucket name to push reported metrics to (v2 only)",
   838  		Value:   &c.cliConfig.Telemetry.InfluxDB.Bucket,
   839  		Default: c.cliConfig.Telemetry.InfluxDB.Bucket,
   840  		Group:   "Telemetry",
   841  	})
   842  	f.StringFlag(&flagset.StringFlag{
   843  		Name:    "metrics.influxdb.organization",
   844  		Usage:   "InfluxDB organization name (v2 only)",
   845  		Value:   &c.cliConfig.Telemetry.InfluxDB.Organization,
   846  		Default: c.cliConfig.Telemetry.InfluxDB.Organization,
   847  		Group:   "Telemetry",
   848  	})
   849  
   850  	// account
   851  	f.SliceStringFlag(&flagset.SliceStringFlag{
   852  		Name:    "unlock",
   853  		Usage:   "Comma separated list of accounts to unlock",
   854  		Value:   &c.cliConfig.Accounts.Unlock,
   855  		Default: c.cliConfig.Accounts.Unlock,
   856  		Group:   "Account Management",
   857  	})
   858  	f.StringFlag(&flagset.StringFlag{
   859  		Name:    "password",
   860  		Usage:   "Password file to use for non-interactive password input",
   861  		Value:   &c.cliConfig.Accounts.PasswordFile,
   862  		Default: c.cliConfig.Accounts.PasswordFile,
   863  		Group:   "Account Management",
   864  	})
   865  	f.BoolFlag(&flagset.BoolFlag{
   866  		Name:    "allow-insecure-unlock",
   867  		Usage:   "Allow insecure account unlocking when account-related RPCs are exposed by http",
   868  		Value:   &c.cliConfig.Accounts.AllowInsecureUnlock,
   869  		Default: c.cliConfig.Accounts.AllowInsecureUnlock,
   870  		Group:   "Account Management",
   871  	})
   872  	f.BoolFlag(&flagset.BoolFlag{
   873  		Name:    "lightkdf",
   874  		Usage:   "Reduce key-derivation RAM & CPU usage at some expense of KDF strength",
   875  		Value:   &c.cliConfig.Accounts.UseLightweightKDF,
   876  		Default: c.cliConfig.Accounts.UseLightweightKDF,
   877  		Group:   "Account Management",
   878  	})
   879  	f.BoolFlag((&flagset.BoolFlag{
   880  		Name:    "disable-bor-wallet",
   881  		Usage:   "Disable the personal wallet endpoints",
   882  		Value:   &c.cliConfig.Accounts.DisableBorWallet,
   883  		Default: c.cliConfig.Accounts.DisableBorWallet,
   884  	}))
   885  
   886  	// grpc
   887  	f.StringFlag(&flagset.StringFlag{
   888  		Name:    "grpc.addr",
   889  		Usage:   "Address and port to bind the GRPC server",
   890  		Value:   &c.cliConfig.GRPC.Addr,
   891  		Default: c.cliConfig.GRPC.Addr,
   892  	})
   893  
   894  	// developer
   895  	f.BoolFlag(&flagset.BoolFlag{
   896  		Name:    "dev",
   897  		Usage:   "Enable developer mode with ephemeral proof-of-authority network and a pre-funded developer account, mining enabled",
   898  		Value:   &c.cliConfig.Developer.Enabled,
   899  		Default: c.cliConfig.Developer.Enabled,
   900  	})
   901  	f.Uint64Flag(&flagset.Uint64Flag{
   902  		Name:    "dev.period",
   903  		Usage:   "Block period to use in developer mode (0 = mine only if transaction pending)",
   904  		Value:   &c.cliConfig.Developer.Period,
   905  		Default: c.cliConfig.Developer.Period,
   906  	})
   907  
   908  	// parallelevm
   909  	f.BoolFlag(&flagset.BoolFlag{
   910  		Name:    "parallelevm.enable",
   911  		Usage:   "Enable Block STM",
   912  		Value:   &c.cliConfig.ParallelEVM.Enable,
   913  		Default: c.cliConfig.ParallelEVM.Enable,
   914  	})
   915  	f.IntFlag(&flagset.IntFlag{
   916  		Name:    "parallelevm.procs",
   917  		Usage:   "Number of speculative processes (cores) in Block STM",
   918  		Value:   &c.cliConfig.ParallelEVM.SpeculativeProcesses,
   919  		Default: c.cliConfig.ParallelEVM.SpeculativeProcesses,
   920  	})
   921  	f.Uint64Flag(&flagset.Uint64Flag{
   922  		Name:    "dev.gaslimit",
   923  		Usage:   "Initial block gas limit",
   924  		Value:   &c.cliConfig.Developer.GasLimit,
   925  		Default: c.cliConfig.Developer.GasLimit,
   926  	})
   927  
   928  	// pprof
   929  	f.BoolFlag(&flagset.BoolFlag{
   930  		Name:    "pprof",
   931  		Usage:   "Enable the pprof HTTP server",
   932  		Value:   &c.cliConfig.Pprof.Enabled,
   933  		Default: c.cliConfig.Pprof.Enabled,
   934  	})
   935  	f.IntFlag(&flagset.IntFlag{
   936  		Name:    "pprof.port",
   937  		Usage:   "pprof HTTP server listening port",
   938  		Value:   &c.cliConfig.Pprof.Port,
   939  		Default: c.cliConfig.Pprof.Port,
   940  	})
   941  	f.StringFlag(&flagset.StringFlag{
   942  		Name:    "pprof.addr",
   943  		Usage:   "pprof HTTP server listening interface",
   944  		Value:   &c.cliConfig.Pprof.Addr,
   945  		Default: c.cliConfig.Pprof.Addr,
   946  	})
   947  	f.IntFlag(&flagset.IntFlag{
   948  		Name:    "pprof.memprofilerate",
   949  		Usage:   "Turn on memory profiling with the given rate",
   950  		Value:   &c.cliConfig.Pprof.MemProfileRate,
   951  		Default: c.cliConfig.Pprof.MemProfileRate,
   952  	})
   953  	f.IntFlag(&flagset.IntFlag{
   954  		Name:    "pprof.blockprofilerate",
   955  		Usage:   "Turn on block profiling with the given rate",
   956  		Value:   &c.cliConfig.Pprof.BlockProfileRate,
   957  		Default: c.cliConfig.Pprof.BlockProfileRate,
   958  	})
   959  	// f.StringFlag(&flagset.StringFlag{
   960  	// 	Name:    "pprof.cpuprofile",
   961  	// 	Usage:   "Write CPU profile to the given file",
   962  	// 	Value:   &c.cliConfig.Pprof.CPUProfile,
   963  	// 	Default: c.cliConfig.Pprof.CPUProfile,
   964  	// })
   965  
   966  	return f
   967  }