Skip to content

Conversation

@cffls
Copy link
Contributor

@cffls cffls commented Dec 13, 2022

This commit adds default values to CLI helper and docs. When the default value of a string flag, slice string flag, or map string flag is empty, its helper message won't show any default value.

Example server CLI helper output:

$ bor server -h
Usage: bor [options]

	Run the Bor server.
  Options:

  -chain
    Name of the chain to sync ('mumbai', 'mainnet') or path to a genesis file (default: mainnet)

  -identity
    Name/Identity of the node

  -log-level
    Set log level for the server (default: INFO)

  -datadir
    Path of the data directory to store information

  -datadir.ancient
    Data directory for ancient chain segments (default = inside chaindata)

  -keystore
    Path of the directory where keystores are located

  -config
    File for the config file

  -syncmode
    Blockchain sync mode (only "full" sync supported) (default: full)

  -gcmode
    Blockchain garbage collection mode ("full", "archive") (default: full)

  -eth.requiredblocks
    Comma separated block number-to-hash mappings to require for peering (<number>=<hash>)

  -snapshot
    Enables the snapshot-database mode (default = true) (default: true)

  -bor.logs
    Enables bor log retrieval (default = false) (default: false)

  -bor.heimdall
    URL of Heimdall service (default: http://localhost:1317)

  -bor.withoutheimdall
    Run without Heimdall service (for testing purpose) (default: false)

  -txpool.locals
    Comma separated accounts to treat as locals (no flush, priority inclusion)

  -txpool.nolocals
    Disables price exemptions for locally submitted transactions (default: false)

  -txpool.journal
    Disk journal for local transaction to survive node restarts (default: transactions.rlp)

  -txpool.rejournal
    Time interval to regenerate the local transaction journal (default: 1h0m0s)

  -txpool.pricelimit
    Minimum gas price limit to enforce for acceptance into the pool (default: 1)

  -txpool.pricebump
    Price bump percentage to replace an already existing transaction (default: 10)

  -txpool.accountslots
    Minimum number of executable transaction slots guaranteed per account (default: 16)

  -txpool.globalslots
    Maximum number of executable transaction slots for all accounts (default: 32768)

  -txpool.accountqueue
    Maximum number of non-executable transaction slots permitted per account (default: 16)

  -txpool.globalqueue
    Maximum number of non-executable transaction slots for all accounts (default: 32768)

  -txpool.lifetime
    Maximum amount of time non-executable transaction are queued (default: 3h0m0s)

  -mine
    Enable mining (default: false)

  -miner.etherbase
    Public address for block mining rewards

  -miner.extradata
    Block extra data set by the miner (default = client version)

  -miner.gaslimit
    Target gas ceiling (gas limit) for mined blocks (default: 30000000)

  -miner.gasprice
    Minimum gas price for mining a transaction (default: 1000000000)

  -ethstats
    Reporting URL of a ethstats service (nodename:secret@host:port)

  -gpo.blocks
    Number of recent blocks to check for gas prices (default: 20)

  -gpo.percentile
    Suggested gas price is the given percentile of a set of recent transaction gas prices (default: 60)

  -gpo.maxprice
    Maximum gas price will be recommended by gpo (default: 5000000000000)

  -gpo.ignoreprice
    Gas price below which gpo will ignore transactions (default: 2)

  -cache
    Megabytes of memory allocated to internal caching (default = 4096 mainnet full node) (default: 1024)

  -cache.database
    Percentage of cache memory allowance to use for database io (default: 50)

  -cache.trie
    Percentage of cache memory allowance to use for trie caching (default = 15% full mode, 30% archive mode) (default: 15)

  -cache.trie.journal
    Disk journal directory for trie cache to survive node restarts (default: triecache)

  -cache.trie.rejournal
    Time interval to regenerate the trie cache journal (default: 1h0m0s)

  -cache.gc
    Percentage of cache memory allowance to use for trie pruning (default = 25% full mode, 0% archive mode) (default: 25)

  -cache.snapshot
    Percentage of cache memory allowance to use for snapshot caching (default = 10% full mode, 20% archive mode) (default: 10)

  -cache.noprefetch
    Disable heuristic state prefetch during block import (less CPU and disk IO, more time waiting for data) (default: false)

  -cache.preimages
    Enable recording the SHA3/keccak preimages of trie keys (default: false)

  -txlookuplimit
    Number of recent blocks to maintain transactions index for (default = about 56 days, 0 = entire chain) (default: 2350000)

  -rpc.gascap
    Sets a cap on gas that can be used in eth_call/estimateGas (0=infinite) (default: 50000000)

  -rpc.txfeecap
    Sets a cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap) (default: 5)

  -ipcdisable
    Disable the IPC-RPC server (default: false)

  -ipcpath
    Filename for IPC socket/pipe within the datadir (explicit paths escape it)

  -http.corsdomain
    Comma separated list of domains from which to accept cross origin requests (browser enforced) (default: localhost)

  -http.vhosts
    Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard. (default: localhost)

  -ws.origins
    Origins from which to accept websockets requests (default: localhost)

  -graphql.corsdomain
    Comma separated list of domains from which to accept cross origin requests (browser enforced) (default: localhost)

  -graphql.vhosts
    Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard. (default: localhost)

  -http
    Enable the HTTP-RPC server (default: false)

  -http.addr
    HTTP-RPC server listening interface (default: localhost)

  -http.port
    HTTP-RPC server listening port (default: 8545)

  -http.rpcprefix
    HTTP path path prefix on which JSON-RPC is served. Use '/' to serve on all paths.

  -http.api
    API's offered over the HTTP-RPC interface (default: eth,net,web3,txpool,bor)

  -ws
    Enable the WS-RPC server (default: false)

  -ws.addr
    WS-RPC server listening interface (default: localhost)

  -ws.port
    WS-RPC server listening port (default: 8546)

  -ws.rpcprefix
    HTTP path prefix on which JSON-RPC is served. Use '/' to serve on all paths.

  -ws.api
    API's offered over the WS-RPC interface (default: net,web3)

  -graphql
    Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well. (default: false)

  -bind
    Network binding address (default: 0.0.0.0)

  -port
    Network listening port (default: 30303)

  -bootnodes
    Comma separated enode URLs for P2P discovery bootstrap

  -maxpeers
    Maximum number of network peers (network disabled if set to 0) (default: 50)

  -maxpendpeers
    Maximum number of pending connection attempts (default: 50)

  -nat
    NAT port mapping mechanism (any|none|upnp|pmp|extip:<IP>) (default: any)

  -nodiscover
    Disables the peer discovery mechanism (manual peer addition) (default: false)

  -v5disc
    Enables the experimental RLPx V5 (Topic Discovery) mechanism (default: false)

  -metrics
    Enable metrics collection and reporting (default: false)

  -metrics.expensive
    Enable expensive metrics collection and reporting (default: false)

  -metrics.influxdb
    Enable metrics export/push to an external InfluxDB database (v1) (default: false)

  -metrics.influxdb.endpoint
    InfluxDB API endpoint to report metrics to

  -metrics.influxdb.database
    InfluxDB database name to push reported metrics to

  -metrics.influxdb.username
    Username to authorize access to the database

  -metrics.influxdb.password
    Password to authorize access to the database

  -metrics.influxdb.tags
    Comma-separated InfluxDB tags (key/values) attached to all measurements

  -metrics.prometheus-addr
    Address for Prometheus Server (default: 127.0.0.1:7071)

  -metrics.opencollector-endpoint
    OpenCollector Endpoint (host:port) (default: 127.0.0.1:4317)

  -metrics.influxdbv2
    Enable metrics export/push to an external InfluxDB v2 database (default: false)

  -metrics.influxdb.token
    Token to authorize access to the database (v2 only)

  -metrics.influxdb.bucket
    InfluxDB bucket name to push reported metrics to (v2 only)

  -metrics.influxdb.organization
    InfluxDB organization name (v2 only)

  -unlock
    Comma separated list of accounts to unlock

  -password
    Password file to use for non-interactive password input

  -allow-insecure-unlock
    Allow insecure account unlocking when account-related RPCs are exposed by http (default: false)

  -lightkdf
    Reduce key-derivation RAM & CPU usage at some expense of KDF strength (default: false)

  -disable-bor-wallet
    Disable the personal wallet endpoints (default: true)

  -grpc.addr
    Address and port to bind the GRPC server (default: :3131)

  -dev
    Enable developer mode with ephemeral proof-of-authority network and a pre-funded developer account, mining enabled (default: false)

  -dev.period
    Block period to use in developer mode (0 = mine only if transaction pending) (default: 0)

Changes

  • Bugfix (non-breaking change that solves an issue)
  • Hotfix (change that solves an urgent issue, and requires immediate attention)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (change that is not backwards-compatible and/or changes current functionality)

Breaking changes

Please complete this section if any breaking changes have been made, otherwise delete it

Checklist

  • I have added at least 2 reviewer or the whole pos-v1 team
  • I have added sufficient documentation in code
  • I will be resolving comments - if any - by pushing each fix in a separate commit and linking the commit hash in the comment reply

Cross repository changes

  • This PR requires changes to heimdall
    • In case link the PR here:
  • This PR requires changes to matic-cli
    • In case link the PR here:

Testing

  • I have added unit tests
  • I have added tests to CI
  • I have tested this code manually on local environment
  • I have tested this code manually on remote devnet using express-cli
  • I have tested this code manually on mumbai
  • I have created new e2e tests into express-cli

Manual tests

Please complete this section with the steps you performed if you ran manual tests for this functionality, otherwise delete it

Additional comments

Please post additional comments in this section if you have them, otherwise delete it

@cffls cffls requested review from a team and manav2401 December 13, 2022 23:32
@codecov
Copy link

codecov bot commented Dec 13, 2022

Codecov Report

Base: 56.83% // Head: 56.82% // Decreases project coverage by -0.01% ⚠️

Coverage data is based on head (977716d) compared to base (d9e5e20).
Patch coverage: 51.96% of modified lines in pull request are covered.

❗ Current head 977716d differs from pull request most recent head ddf1a4d. Consider uploading reports for the commit ddf1a4d to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #632      +/-   ##
==========================================
- Coverage   56.83%   56.82%   -0.02%     
==========================================
  Files         598      598              
  Lines       69243    69287      +44     
==========================================
+ Hits        39356    39374      +18     
- Misses      26523    26557      +34     
+ Partials     3364     3356       -8     
Impacted Files Coverage Δ
internal/cli/flagset/flagset.go 30.82% <30.00%> (-4.96%) ⬇️
internal/cli/server/flags.go 100.00% <100.00%> (ø)
eth/downloader/modes.go 17.24% <0.00%> (-6.90%) ⬇️
p2p/discover/v4_udp.go 72.75% <0.00%> (-4.35%) ⬇️
les/utils/limiter.go 88.88% <0.00%> (-3.34%) ⬇️
les/distributor.go 79.68% <0.00%> (-3.13%) ⬇️
eth/downloader/fetchers_concurrent.go 53.06% <0.00%> (-1.37%) ⬇️
p2p/simulations/mocker.go 30.00% <0.00%> (-1.12%) ⬇️
p2p/peer.go 73.63% <0.00%> (-1.00%) ⬇️
... and 13 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Copy link
Member

@manav2401 manav2401 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Have few minor doubts.

  1. Shall we remove the default from description from here and here.
  2. I believe we should remove the defaults from the description for the flags under cache as they might be confusing for users. The flags state that if a user runs for example an archive node, the default used will be different but that is not the case actually with the new-cli.

@manav2401
Copy link
Member

Also, one more suggestion from my end would be to add a direct link to the server subcommand readme page on the root of docs/cli for better visibility and also mention the crux of the new cli on the same page (similar to what we're planning to use in the forum post).

This commit adds default values to CLI helper and docs. When the default value of a string flag, slice string flag, or map string flag is empty, its helper message won't show any default value.
@cffls
Copy link
Contributor Author

cffls commented Dec 14, 2022

LGTM. Have few minor doubts.

  1. Shall we remove the default from description from here and here.
  2. I believe we should remove the defaults from the description for the flags under cache as they might be confusing for users. The flags state that if a user runs for example an archive node, the default used will be different but that is not the case actually with the new-cli.

Thanks for catching these flags. I removed the defaults from their descriptions.

@cffls cffls requested a review from a team December 14, 2022 07:29
@cffls cffls merged commit 5e14528 into 0xPolygon:master Dec 14, 2022
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.

5 participants