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 }