Skip to content

cmd/utils: make uncategorized flags of geth categorized#1877

Merged
brilliant-lx merged 1 commit intobnb-chain:developfrom
node-real:make_geth_flags_categorized
Sep 18, 2023
Merged

cmd/utils: make uncategorized flags of geth categorized#1877
brilliant-lx merged 1 commit intobnb-chain:developfrom
node-real:make_geth_flags_categorized

Conversation

@NathanBSC
Copy link
Copy Markdown
Contributor

@NathanBSC NathanBSC commented Sep 18, 2023

Description

make uncategorized flags of geth categorized

Rationale

uncategorized flags can't not seen in help doc,
and flags that defined in bsc and not in go-ethereum have not been categorized now,
this PR make them categorized.

  1. add three new category "FAST NODE", "FAST FINALITY", "HISTORY"
  2. group pipecommit into DeprecatedCategory
  3. AuthxxxFlag not to display in help doc on purpose

Example

./geth --help

NAME:
   geth - the go-ethereum command line interface

USAGE:
   geth [global options] command [command options] [arguments...]

VERSION:
   1.2.12-8a5d3f3b-20230918

COMMANDS:
   account                Manage accounts
   attach                 Start an interactive JavaScript environment (connect to node)
   console                Start an interactive JavaScript environment
   db                     Low level database operations
   dump                   Dump a specific block from storage
   dumpconfig             Export configuration values in a TOML format
   dumpgenesis            Dumps genesis block JSON configuration to stdout
   export                 Export blockchain into file
   export-preimages       Export the preimage database into an RLP stream
   import                 Import a blockchain file
   import-preimages       Import the preimage database from an RLP stream
   init                   Bootstrap and initialize a new genesis block
   js                     (DEPRECATED) Execute the specified JavaScript files
   license                Display license information
   removedb               Remove blockchain and state databases
   show-deprecated-flags  Show flags that have been deprecated
   snapshot               A set of commands based on the snapshot
   verkle                 A set of experimental verkle tree management commands
   version                Print version numbers
   version-check          Checks (online) for known Geth security vulnerabilities
   wallet                 Manage Ethereum presale wallets
   help, h                Shows a list of commands or help for one command
   BLOCKCHAIN COMMANDS:
     init-network  Bootstrap and initialize a new genesis block, and nodekey, config files for network nodes
   BLS ACCOUNT COMMANDS:
     bls  Manage BLS wallet and accounts

GLOBAL OPTIONS:
   ACCOUNT

   
    --allow-insecure-unlock        (default: false)
          Allow insecure account unlocking when account-related RPCs are exposed by http
   
    --keystore value              
          Directory for the keystore (default = inside the datadir)
   
    --lightkdf                     (default: false)
          Reduce key-derivation RAM & CPU usage at some expense of KDF strength
   
    --password value              
          Password file to use for non-interactive password input
   
    --pcscdpath value             
          Path to the smartcard daemon (pcscd) socket file
   
    --signer value                
          External signer (url or path to ipc file)
   
    --unlock value                
          Comma separated list of accounts to unlock
   
    --usb                          (default: false)
          Enable monitoring and management of USB hardware wallets

   ALIASED (deprecated)

   
    --cache.trie.journal value    
          Disk journal directory for trie cache to survive node restarts
   
    --cache.trie.rejournal value   (default: 0s)
          Time interval to regenerate the trie cache journal
   
    --nousb                        (default: false)
          Disables monitoring for and managing USB hardware wallets (deprecated)
   
    --pipecommit                   (default: false)
          Enable MPT pipeline commit, it will improve syncing performance. It is an
          experimental feature(default is false)
   
    --v5disc                       (default: false)
          Enables the experimental RLPx V5 (Topic Discovery) mechanism (deprecated, use
          --discv5 instead)
   
    --whitelist value             
          Comma separated block number-to-hash mappings to enforce (<number>=<hash>)
          (deprecated in favor of --eth.requiredblocks)

   API AND CONSOLE

   
    --exec value                  
          Execute JavaScript statement
   
    --graphql                      (default: false)
          Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if
          an HTTP server is started as well.
   
    --graphql.corsdomain value    
          Comma separated list of domains from which to accept cross origin requests
          (browser enforced)
   
    --graphql.vhosts value         (default: "localhost")
          Comma separated list of virtual hostnames from which to accept requests (server
          enforced). Accepts '*' wildcard.
   
    --header value, -H value      
          Pass custom headers to the RPC server when using --remotedb or the geth attach
          console. This flag can be given multiple times.
   
    --http                         (default: false)
          Enable the HTTP-RPC server
   
    --http.addr value              (default: "localhost")
          HTTP-RPC server listening interface
   
    --http.api value              
          API's offered over the HTTP-RPC interface
   
    --http.corsdomain value       
          Comma separated list of domains from which to accept cross origin requests
          (browser enforced)
   
    --http.port value              (default: 8545)
          HTTP-RPC server listening port
   
    --http.rpcprefix value        
          HTTP path path prefix on which JSON-RPC is served. Use '/' to serve on all
          paths.
   
    --http.vhosts value            (default: "localhost")
          Comma separated list of virtual hostnames from which to accept requests (server
          enforced). Accepts '*' wildcard.
   
    --ipcdisable                   (default: false)
          Disable the IPC-RPC server
   
    --ipcpath value               
          Filename for IPC socket/pipe within the datadir (explicit paths escape it)
   
    --jspath value                 (default: .)
          JavaScript root path for `loadScript`
   
    --preload value               
          Comma separated list of JavaScript files to preload into the console
   
    --rangelimit                   (default: false)
          Enable 5000 blocks limit for range query
   
    --rpc.allow-unprotected-txs    (default: false)
          Allow for unprotected (non EIP155 signed) transactions to be submitted via RPC
   
    --rpc.batch-request-limit value (default: 1000)
          Maximum number of requests in a batch
   
    --rpc.batch-response-max-size value (default: 25000000)
          Maximum number of bytes returned from a batched call
   
    --rpc.enabledeprecatedpersonal (default: false)
          Enables the (deprecated) personal namespace
   
    --rpc.evmtimeout value         (default: 5s)
          Sets a timeout used for eth_call (0=infinite)
   
    --rpc.gascap value             (default: 50000000)
          Sets a cap on gas that can be used in eth_call/estimateGas (0=infinite)
   
    --rpc.txfeecap value           (default: 1)
          Sets a cap on transaction fee (in ether) that can be sent via the RPC APIs (0 =
          no cap)
   
    --ws                           (default: false)
          Enable the WS-RPC server
   
    --ws.addr value                (default: "localhost")
          WS-RPC server listening interface
   
    --ws.api value                
          API's offered over the WS-RPC interface
   
    --ws.origins value            
          Origins from which to accept websockets requests
   
    --ws.port value                (default: 8546)
          WS-RPC server listening port
   
    --ws.rpcprefix value          
          HTTP path prefix on which JSON-RPC is served. Use '/' to serve on all paths.

   DEVELOPER CHAIN

   
    --dev                          (default: false)
          Ephemeral proof-of-authority network with a pre-funded developer account, mining
          enabled
   
    --dev.gaslimit value           (default: 11500000)
          Initial block gas limit
   
    --dev.period value             (default: 0)
          Block period to use in developer mode (0 = mine only if transaction pending)

   ETHEREUM

   
    --bloomfilter.size value       (default: 2048)
          Megabytes of memory allocated to bloom-filter for pruning
   
    --datadir value                (default: /Users/osho/Library/Ethereum)
          Data directory for the databases and keystore
   
    --datadir.ancient value       
          Root directory for ancient data (default = inside chaindata)
   
    --datadir.minfreedisk value   
          Minimum free disk space in MB, once reached triggers auto shut down (default =
          --cache.gc converted to MB, 0 = disabled)
   
    --db.engine value             
          Backing database implementation to use ('pebble' or 'leveldb')
   
    --directbroadcast              (default: false)
          Enable directly broadcast mined block to all peers
   
    --disablesnapprotocol          (default: false)
          Disable snap protocol
   
    --eth.requiredblocks value    
          Comma separated block number-to-hash mappings to require for peering
          (<number>=<hash>)
   
    --exitwhensynced               (default: false)
          Exits after block synchronisation completes
   
    --gcmode value                 (default: "full")
          Blockchain garbage collection mode ("full", "archive")
   
    --mainnet                      (default: false)
          Ethereum mainnet
   
    --networkid value              (default: 1)
          Explicitly set network id (integer)(For testnets: use --goerli, --sepolia
          instead)
   
    --override.cancun value        (default: 0)
          Manually specify the Cancun fork timestamp, overriding the bundled setting
   
    --override.verkle value        (default: 0)
          Manually specify the Verkle fork timestamp, overriding the bundled setting
   
    --snapshot                     (default: true)
          Enables snapshot-database mode (default = enable)
   
    --syncmode value               (default: snap)
          Blockchain sync mode ("snap", "full" or "light")
   
    --txlookuplimit value          (default: 2350000)
          Number of recent blocks to maintain transactions index for (default = about one
          year, 0 = entire chain)

   FAST FINALITY

   
    --blspassword value           
          File path for the BLS password, which contains the password to unlock BLS wallet
          for managing votes in fast_finality feature
   
    --blswallet value             
          Path for the blsWallet dir in fast finality feature (default = inside the
          datadir)
   
    --disablevoteattestation       (default: false)
          Disable assembling vote attestation
   
    --monitor.doublesign           (default: false)
          Enable double sign monitor to check whether any validator signs multiple blocks
   
    --monitor.maliciousvote        (default: false)
          Enable malicious vote monitor to check whether any validator violates the voting
          rules of fast finality
   
    --vote                         (default: false)
          Enable voting when mining
   
    --vote-journal-path value     
          Path for the voteJournal dir in fast finality feature (default = inside the
          datadir)

   FAST NODE

   
    --check-snapshot-with-mpt      (default: false)
          Enable checking between snapshot and MPT
   
    --diffblock value              (default: 86400)
          The number of blocks should be persisted in db (default = 86400)
   
    --enabletrustprotocol          (default: false)
          Enable trust protocol
   
    --persistdiff                  (default: false)
          Enable persistence of the diff layer
   
    --tries-verify-mode value      (default: local)
          tries verify mode:
                  "local(default): a normal full node with complete state
          world(both MPT and snapshot), merkle state root will
                                   be
          verified against the block header.",
                  "full: a fast node with only snapshot
          state world. Merkle state root is verified by the trustworthy remote verify
          node
                       by comparing the diffhash(an identify of difflayer generated by the
          block) and state root.",
                  "insecure: same as full mode, except that it can
          tolerate without verifying the diffhash when verify node does not have
          it.",
                  "none: no merkle state root verification at all, there is no need to
          setup or connect remote verify node at all,
                         it is more light
          comparing to full and insecure mode, but get a very small chance that the state
          is not consistent
                      with other peers."

   GAS PRICE ORACLE

   
    --gpo.blocks value             (default: 20)
          Number of recent blocks to check for gas prices
   
    --gpo.ignoreprice value        (default: 4)
          Gas price below which gpo will ignore transactions
   
    --gpo.maxprice value           (default: 100000000000)
          Maximum transaction priority fee (or gasprice before London fork) to be
          recommended by gpo
   
    --gpo.percentile value         (default: 60)
          Suggested gas price is the given percentile of a set of recent transaction gas
          prices

   HISTORY

   
    --block-amount-reserved value  (default: 0)
          Sets the expected remained amount of blocks for offline block prune
   
    --pruneancient                 (default: false)
          Prune ancient data, is an optional config and disabled by default. Only keep the
          latest 9w blocks' data,the older blocks' data will be permanently pruned.
          Notice:the geth/chaindata/ancient dir will be removed, if restart without the
          flag, the ancient data will start with the previous point that the oldest
          unpruned block number. Recommends to the user who don't care about the ancient
          data.

   LIGHT CLIENT

   
    --light.egress value           (default: 0)
          Outgoing bandwidth limit for serving light clients (kilobytes/sec, 0 =
          unlimited)
   
    --light.ingress value          (default: 0)
          Incoming bandwidth limit for serving light clients (kilobytes/sec, 0 =
          unlimited)
   
    --light.maxpeers value         (default: 100)
          Maximum number of light clients to serve, or light servers to attach to
   
    --light.nopruning              (default: false)
          Disable ancient light chain data pruning
   
    --light.nosyncserve            (default: false)
          Enables serving light clients before syncing
   
    --light.serve value            (default: 0)
          Maximum percentage of time allowed for serving LES requests (multi-threaded
          processing allows values over 100)

   LOGGING AND DEBUGGING

   
    --log.backtrace value         
          Request a stack trace at a specific logging statement (e.g. "block.go:271")
   
    --log.compress                 (default: false)
          Compress the log files
   
    --log.debug                    (default: false)
          Prepends log messages with call-site location (file and line number)
   
    --log.file value              
          Write logs to a file
   
    --log.format value            
          Log format to use (json|logfmt|terminal)
   
    --log.maxage value             (default: 30)
          Maximum number of days to retain a log file
   
    --log.maxbackups value         (default: 10)
          Maximum number of log files to retain
   
    --log.maxsize value            (default: 100)
          Maximum size in MBs of a single log file
   
    --log.vmodule value           
          Per-module verbosity: comma-separated list of <pattern>=<level> (e.g.
          eth/*=5,p2p=4)
   
    --nocompaction                 (default: false)
          Disables db compaction after import
   
    --pprof                        (default: false)
          Enable the pprof HTTP server
   
    --pprof.addr value             (default: "127.0.0.1")
          pprof HTTP server listening interface
   
    --pprof.blockprofilerate value (default: 0)
          Turn on block profiling with the given rate
   
    --pprof.cpuprofile value      
          Write CPU profile to the given file
   
    --pprof.memprofilerate value   (default: 524288)
          Turn on memory profiling with the given rate
   
    --pprof.port value             (default: 6060)
          pprof HTTP server listening port
   
    --remotedb value              
          URL for remote database
   
    --trace value                 
          Write execution trace to the given file
   
    --verbosity value              (default: 3)
          Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail

   METRICS AND STATS

   
    --ethstats value              
          Reporting URL of a ethstats service (nodename:secret@host:port)
   
    --metrics                      (default: false)
          Enable metrics collection and reporting
   
    --metrics.addr value          
          Enable stand-alone metrics HTTP server listening interface.
   
    --metrics.expensive            (default: false)
          Enable expensive metrics collection and reporting
   
    --metrics.influxdb             (default: false)
          Enable metrics export/push to an external InfluxDB database
   
    --metrics.influxdb.bucket value (default: "geth")
          InfluxDB bucket name to push reported metrics to (v2 only)
   
    --metrics.influxdb.database value (default: "geth")
          InfluxDB database name to push reported metrics to
   
    --metrics.influxdb.endpoint value (default: "http://localhost:8086")
          InfluxDB API endpoint to report metrics to
   
    --metrics.influxdb.organization value (default: "geth")
          InfluxDB organization name (v2 only)
   
    --metrics.influxdb.password value (default: "test")
          Password to authorize access to the database
   
    --metrics.influxdb.tags value  (default: "host=localhost")
          Comma-separated InfluxDB tags (key/values) attached to all measurements
   
    --metrics.influxdb.token value (default: "test")
          Token to authorize access to the database (v2 only)
   
    --metrics.influxdb.username value (default: "test")
          Username to authorize access to the database
   
    --metrics.influxdbv2           (default: false)
          Enable metrics export/push to an external InfluxDB v2 database
   
    --metrics.port value           (default: 6060)
          Metrics HTTP server listening port.
          Please note that --metrics.addr must be set
          to start the server.

   MINER

   
    --mine                         (default: false)
          Enable mining
   
    --miner.etherbase value       
          0x prefixed public address for block mining rewards
   
    --miner.extradata value       
          Block extra data set by the miner (default = client version)
   
    --miner.gaslimit value         (default: 30000000)
          Target gas ceiling for mined blocks
   
    --miner.gasprice value         (default: 0)
          Minimum gas price for mining a transaction
   
    --miner.newpayload-timeout value (default: 2s)
          Specify the maximum time allowance for creating a new payload
   
    --miner.recommit value         (default: 3s)
          Time interval to recreate the block being mined

   MISC

   
    --help, -h                     (default: false)
          show help
   
    --synctarget value            
          File for containing the hex-encoded block-rlp as sync target(dev feature)
   
    --version, -v                  (default: false)
          print the version

   NETWORKING

   
    --bootnodes value             
          Comma separated enode URLs for P2P discovery bootstrap
   
    --discovery.dns value         
          Sets DNS discovery entry points (use "" to disable DNS)
   
    --discovery.port value         (default: 30303)
          Use a custom UDP port for P2P discovery
   
    --discovery.v4, --discv4       (default: true)
          Enables the V4 discovery mechanism
   
    --discovery.v5, --discv5       (default: false)
          Enables the experimental RLPx V5 (Topic Discovery) mechanism
   
    --identity value              
          Custom node name
   
    --maxpeers value               (default: 50)
          Maximum number of network peers (network disabled if set to 0)
   
    --maxpeersperip value          (default: 0)
          Maximum number of network peers from a single IP address, (default used if set
          to <= 0, which is same as MaxPeers)
   
    --maxpendpeers value           (default: 0)
          Maximum number of pending connection attempts (defaults used if set to 0)
   
    --nat value                    (default: "any")
          NAT port mapping mechanism (any|none|upnp|pmp|pmp:<IP>|extip:<IP>)
   
    --netrestrict value           
          Restricts network communication to the given IP networks (CIDR masks)
   
    --nodekey value               
          P2P node key file
   
    --nodekeyhex value            
          P2P node key as hex (for testing)
   
    --nodiscover                   (default: false)
          Disables the peer discovery mechanism (manual peer addition)
   
    --port value                   (default: 30303)
          Network listening port

   PERFORMANCE TUNING

   
    --cache value                  (default: 1024)
          Megabytes of memory allocated to internal caching (default = 4096 mainnet full
          node, 128 light mode)
   
    --cache.blocklogs value        (default: 32)
          Size (in number of blocks) of the log cache for filtering
   
    --cache.database value         (default: 40)
          Percentage of cache memory allowance to use for database io
   
    --cache.gc value               (default: 25)
          Percentage of cache memory allowance to use for trie pruning (default = 25% full
          mode, 0% archive mode)
   
    --cache.preimages              (default: false)
          Enable recording the SHA3/keccak preimages of trie keys
   
    --cache.snapshot value         (default: 20)
          Percentage of cache memory allowance to use for snapshot caching (default = 20%)
   
    --cache.trie value             (default: 15)
          Percentage of cache memory allowance to use for trie caching (default = 15% full
          mode, 30% archive mode)
   
    --crypto.kzg value             (default: "gokzg")
          KZG library implementation to use; gokzg (recommended) or ckzg
   
    --fdlimit value                (default: 0)
          Raise the open file descriptor resource limit (default = system fd limit)
   
    --triesInMemory value          (default: 128)
          The layer of tries trees that keep in memory

   TRANSACTION POOL (BLOB)

   
    --blobpool.datacap value       (default: 10737418240)
          Disk space to allocate for pending blob transactions (soft limit)
   
    --blobpool.datadir value       (default: "blobpool")
          Data directory to store blob transactions in
   
    --blobpool.pricebump value     (default: 100)
          Price bump percentage to replace an already existing blob transaction

   TRANSACTION POOL (EVM)

   
    --txpool.accountqueue value    (default: 64)
          Maximum number of non-executable transaction slots permitted per account
   
    --txpool.accountslots value    (default: 16)
          Minimum number of executable transaction slots guaranteed per account
   
    --txpool.globalqueue value     (default: 1024)
          Maximum number of non-executable transaction slots for all accounts
   
    --txpool.globalslots value     (default: 5120)
          Maximum number of executable transaction slots for all accounts
   
    --txpool.journal value         (default: "transactions.rlp")
          Disk journal for local transaction to survive node restarts
   
    --txpool.lifetime value        (default: 3h0m0s)
          Maximum amount of time non-executable transaction are queued
   
    --txpool.locals value         
          Comma separated accounts to treat as locals (no flush, priority inclusion)
   
    --txpool.nolocals              (default: false)
          Disables price exemptions for locally submitted transactions
   
    --txpool.pricebump value       (default: 10)
          Price bump percentage to replace an already existing transaction
   
    --txpool.pricelimit value      (default: 1)
          Minimum gas price tip to enforce for acceptance into the pool
   
    --txpool.rejournal value       (default: 1h0m0s)
          Time interval to regenerate the local transaction journal

   VIRTUAL MACHINE

   
    --vmdebug                      (default: false)
          Record information useful for VM and contract debugging


COPYRIGHT:
   Copyright 2013-2023 The go-ethereum Authors and BSC Authors

Changes

Notable changes:

  • add each change in a bullet point here
  • ...

@buddh0 buddh0 requested a review from brilliant-lx September 18, 2023 11:21
@brilliant-lx brilliant-lx merged commit 9edad94 into bnb-chain:develop Sep 18, 2023
@NathanBSC NathanBSC deleted the make_geth_flags_categorized branch September 19, 2023 01:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants