mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-09 11:41:51 +00:00
upgrade clap to v4.5 (#5273)
* upgrade clap to v4.5 * cli fixes * Merge branch 'unstable' of https://github.com/sigp/lighthouse into upgrade-clap-cli * value parser for mnemonic * Merge branch 'unstable' of https://github.com/sigp/lighthouse into upgrade-clap-cli * merge unstable * default --format val * fix eth sim * fix eth sim * merge conflicts * resolve beta compiler issue * add num args, version * add custom flag parser, make rate limiter flags clap friendly * remove unneeded check * fmt * update * alphabetic order * resolve merge conflict * fix test * resolve conflicts * fix test * revert removed if statement * fmt got me again * fix broken flag * make cli * make cli * update * remove -e files * update * cli help updates * Merge branch 'unstable' of https://github.com/sigp/lighthouse into upgrade-clap-cli * cli help updates * md files * merge conflict * merge conflicts * md * help text, text width, and a few flag fixes * fmt * merge * revert * revert * resolve merge conflicts * merge conflicts * revert simulator changes * require at least one arg * fix eth sim cli * resolve merge conflicts * book changes * md changes * cli check * cli check * retry cli check * retry cli check * Merge branch 'unstable' of https://github.com/sigp/lighthouse into upgrade-clap-cli * cli * Merge remote-tracking branch 'origin/unstable' into upgrade-clap-cli * Update CLI docs for Goerli removal * Fix cargo lock
This commit is contained in:
@@ -1,34 +1,47 @@
|
||||
use clap::{App, Arg};
|
||||
use clap::{builder::ArgPredicate, Arg, ArgAction, Command};
|
||||
use clap_utils::{get_color_style, FLAG_HEADER};
|
||||
|
||||
pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
App::new("validator_client")
|
||||
.visible_aliases(&["v", "vc", "validator"])
|
||||
.setting(clap::AppSettings::ColoredHelp)
|
||||
pub fn cli_app() -> Command {
|
||||
Command::new("validator_client")
|
||||
.visible_aliases(["v", "vc", "validator"])
|
||||
.styles(get_color_style())
|
||||
.display_order(0)
|
||||
.about(
|
||||
"When connected to a beacon node, performs the duties of a staked \
|
||||
validator (e.g., proposing blocks and attestations).",
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("beacon-nodes")
|
||||
Arg::new("help")
|
||||
.long("help")
|
||||
.short('h')
|
||||
.help("Prints help information")
|
||||
.action(ArgAction::HelpLong)
|
||||
.display_order(0)
|
||||
.help_heading(FLAG_HEADER)
|
||||
)
|
||||
.arg(
|
||||
Arg::new("beacon-nodes")
|
||||
.long("beacon-nodes")
|
||||
.value_name("NETWORK_ADDRESSES")
|
||||
.help("Comma-separated addresses to one or more beacon node HTTP APIs. \
|
||||
Default is http://localhost:5052."
|
||||
)
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("proposer-nodes")
|
||||
Arg::new("proposer-nodes")
|
||||
.long("proposer-nodes")
|
||||
.value_name("NETWORK_ADDRESSES")
|
||||
.help("Comma-separated addresses to one or more beacon node HTTP APIs. \
|
||||
These specify nodes that are used to send beacon block proposals. A failure will revert back to the standard beacon nodes specified in --beacon-nodes."
|
||||
)
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
// TODO remove this flag in a future release
|
||||
.arg(
|
||||
Arg::with_name("disable-run-on-all")
|
||||
Arg::new("disable-run-on-all")
|
||||
.long("disable-run-on-all")
|
||||
.value_name("DISABLE_RUN_ON_ALL")
|
||||
.help("DEPRECATED. Use --broadcast. \
|
||||
@@ -36,10 +49,12 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
and proposer preparation messages to all beacon nodes provided in the \
|
||||
`--beacon-nodes flag`. This option changes that behaviour such that these \
|
||||
api calls only go out to the first available and synced beacon node")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("broadcast")
|
||||
Arg::new("broadcast")
|
||||
.long("broadcast")
|
||||
.value_name("API_TOPICS")
|
||||
.help("Comma-separated list of beacon API topics to broadcast to all beacon nodes. \
|
||||
@@ -47,10 +62,11 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
sync-committee. Default (when flag is omitted) is to broadcast \
|
||||
subscriptions only."
|
||||
)
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("validators-dir")
|
||||
Arg::new("validators-dir")
|
||||
.long("validators-dir")
|
||||
.alias("validator-dir")
|
||||
.value_name("VALIDATORS_DIR")
|
||||
@@ -59,11 +75,12 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
each validator along with the common slashing protection database \
|
||||
and the validator_definitions.yml"
|
||||
)
|
||||
.takes_value(true)
|
||||
.action(ArgAction::Set)
|
||||
.conflicts_with("datadir")
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("secrets-dir")
|
||||
Arg::new("secrets-dir")
|
||||
.long("secrets-dir")
|
||||
.value_name("SECRETS_DIRECTORY")
|
||||
.help(
|
||||
@@ -72,11 +89,15 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
name is the 0x-prefixed hex representation of the validators voting public \
|
||||
key. Defaults to ~/.lighthouse/{network}/secrets.",
|
||||
)
|
||||
.takes_value(true)
|
||||
.action(ArgAction::Set)
|
||||
.conflicts_with("datadir")
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("init-slashing-protection")
|
||||
Arg::new("init-slashing-protection")
|
||||
.long("init-slashing-protection")
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.help(
|
||||
"If present, do not require the slashing protection database to exist before \
|
||||
running. You SHOULD NOT use this flag unless you're certain that a new \
|
||||
@@ -84,78 +105,95 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
will have been initialized when you imported your validator keys. If you \
|
||||
misplace your database and then run with this flag you risk being slashed."
|
||||
)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("disable-auto-discover")
|
||||
Arg::new("disable-auto-discover")
|
||||
.long("disable-auto-discover")
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.help(
|
||||
"If present, do not attempt to discover new validators in the validators-dir. Validators \
|
||||
will need to be manually added to the validator_definitions.yml file."
|
||||
)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("use-long-timeouts")
|
||||
Arg::new("use-long-timeouts")
|
||||
.long("use-long-timeouts")
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.help("If present, the validator client will use longer timeouts for requests \
|
||||
made to the beacon node. This flag is generally not recommended, \
|
||||
longer timeouts can cause missed duties when fallbacks are used.")
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("beacon-nodes-tls-certs")
|
||||
Arg::new("beacon-nodes-tls-certs")
|
||||
.long("beacon-nodes-tls-certs")
|
||||
.value_name("CERTIFICATE-FILES")
|
||||
.takes_value(true)
|
||||
.action(ArgAction::Set)
|
||||
.help("Comma-separated paths to custom TLS certificates to use when connecting \
|
||||
to a beacon node (and/or proposer node). These certificates must be in PEM format and are used \
|
||||
in addition to the OS trust store. Commas must only be used as a \
|
||||
delimiter, and must not be part of the certificate path.")
|
||||
.display_order(0)
|
||||
)
|
||||
// This overwrites the graffiti configured in the beacon node.
|
||||
.arg(
|
||||
Arg::with_name("graffiti")
|
||||
Arg::new("graffiti")
|
||||
.long("graffiti")
|
||||
.help("Specify your custom graffiti to be included in blocks.")
|
||||
.value_name("GRAFFITI")
|
||||
.takes_value(true)
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("graffiti-file")
|
||||
Arg::new("graffiti-file")
|
||||
.long("graffiti-file")
|
||||
.help("Specify a graffiti file to load validator graffitis from.")
|
||||
.value_name("GRAFFITI-FILE")
|
||||
.takes_value(true)
|
||||
.action(ArgAction::Set)
|
||||
.conflicts_with("graffiti")
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("suggested-fee-recipient")
|
||||
Arg::new("suggested-fee-recipient")
|
||||
.long("suggested-fee-recipient")
|
||||
.help("Once the merge has happened, this address will receive transaction fees \
|
||||
from blocks proposed by this validator client. If a fee recipient is \
|
||||
configured in the validator definitions it takes priority over this value.")
|
||||
.value_name("FEE-RECIPIENT")
|
||||
.takes_value(true)
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("produce-block-v3")
|
||||
Arg::new("produce-block-v3")
|
||||
.long("produce-block-v3")
|
||||
.help("Enable block production via the block v3 endpoint for this validator client. \
|
||||
This should only be enabled when paired with a beacon node \
|
||||
that has this endpoint implemented. This flag will be enabled by default in \
|
||||
future.")
|
||||
.takes_value(false)
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("distributed")
|
||||
Arg::new("distributed")
|
||||
.long("distributed")
|
||||
.help("Enables functionality required for running the validator in a distributed validator cluster.")
|
||||
.takes_value(false)
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
/* REST API related arguments */
|
||||
.arg(
|
||||
Arg::with_name("http")
|
||||
Arg::new("http")
|
||||
.long("http")
|
||||
.help("Enable the RESTful HTTP API server. Disabled by default.")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
/*
|
||||
* Note: The HTTP server is **not** encrypted (i.e., not HTTPS) and therefore it is
|
||||
@@ -165,7 +203,7 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
* must also be used in order to make it clear to the user that this is unsafe.
|
||||
*/
|
||||
.arg(
|
||||
Arg::with_name("http-address")
|
||||
Arg::new("http-address")
|
||||
.long("http-address")
|
||||
.requires("http")
|
||||
.value_name("ADDRESS")
|
||||
@@ -175,26 +213,31 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
`--unencrypted-http-transport` flag to ensure the user is aware of the \
|
||||
risks involved. For access via the Internet, users should apply \
|
||||
transport-layer security like a HTTPS reverse-proxy or SSH tunnelling.")
|
||||
.requires("unencrypted-http-transport"),
|
||||
.requires("unencrypted-http-transport")
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("unencrypted-http-transport")
|
||||
.long("unencrypted-http-transport")
|
||||
.help("This is a safety flag to ensure that the user is aware that the http \
|
||||
transport is unencrypted and using a custom HTTP address is unsafe.")
|
||||
.requires("http-address"),
|
||||
Arg::new("unencrypted-http-transport")
|
||||
.long("unencrypted-http-transport")
|
||||
.help("This is a safety flag to ensure that the user is aware that the http \
|
||||
transport is unencrypted and using a custom HTTP address is unsafe.")
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.requires("http-address")
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("http-port")
|
||||
Arg::new("http-port")
|
||||
.long("http-port")
|
||||
.requires("http")
|
||||
.value_name("PORT")
|
||||
.help("Set the listen TCP port for the RESTful HTTP API server.")
|
||||
.default_value_if("http", None, "5062")
|
||||
.takes_value(true),
|
||||
.default_value_if("http", ArgPredicate::IsPresent, "5062")
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("http-allow-origin")
|
||||
Arg::new("http-allow-origin")
|
||||
.long("http-allow-origin")
|
||||
.requires("http")
|
||||
.value_name("ORIGIN")
|
||||
@@ -202,10 +245,11 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
Use * to allow any origin (not recommended in production). \
|
||||
If no value is supplied, the CORS allowed origin is set to the listen \
|
||||
address of this server (e.g., http://localhost:5062).")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("http-allow-keystore-export")
|
||||
Arg::new("http-allow-keystore-export")
|
||||
.long("http-allow-keystore-export")
|
||||
.requires("http")
|
||||
.help("If present, allow access to the DELETE /lighthouse/keystores HTTP \
|
||||
@@ -213,44 +257,52 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
consumers who have access to the API token. This method is useful for \
|
||||
exporting validators, however it should be used with caution since it \
|
||||
exposes private key data to authorized users.")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("http-store-passwords-in-secrets-dir")
|
||||
Arg::new("http-store-passwords-in-secrets-dir")
|
||||
.long("http-store-passwords-in-secrets-dir")
|
||||
.requires("http")
|
||||
.help("If present, any validators created via the HTTP will have keystore \
|
||||
passwords stored in the secrets-dir rather than the validator \
|
||||
definitions file.")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
/* Prometheus metrics HTTP server related arguments */
|
||||
.arg(
|
||||
Arg::with_name("metrics")
|
||||
Arg::new("metrics")
|
||||
.long("metrics")
|
||||
.help("Enable the Prometheus metrics HTTP server. Disabled by default.")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("metrics-address")
|
||||
Arg::new("metrics-address")
|
||||
.long("metrics-address")
|
||||
.requires("metrics")
|
||||
.value_name("ADDRESS")
|
||||
.help("Set the listen address for the Prometheus metrics HTTP server.")
|
||||
.default_value_if("metrics", None, "127.0.0.1")
|
||||
.takes_value(true),
|
||||
.default_value_if("metrics", ArgPredicate::IsPresent, "127.0.0.1")
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("metrics-port")
|
||||
Arg::new("metrics-port")
|
||||
.long("metrics-port")
|
||||
.requires("metrics")
|
||||
.value_name("PORT")
|
||||
.help("Set the listen TCP port for the Prometheus metrics HTTP server.")
|
||||
.default_value_if("metrics", None, "5064")
|
||||
.takes_value(true),
|
||||
.default_value_if("metrics", ArgPredicate::IsPresent, "5064")
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("metrics-allow-origin")
|
||||
Arg::new("metrics-allow-origin")
|
||||
.long("metrics-allow-origin")
|
||||
.requires("metrics")
|
||||
.value_name("ORIGIN")
|
||||
@@ -258,22 +310,25 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
Use * to allow any origin (not recommended in production). \
|
||||
If no value is supplied, the CORS allowed origin is set to the listen \
|
||||
address of this server (e.g., http://localhost:5064).")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("enable-high-validator-count-metrics")
|
||||
Arg::new("enable-high-validator-count-metrics")
|
||||
.long("enable-high-validator-count-metrics")
|
||||
.help("Enable per validator metrics for > 64 validators. \
|
||||
Note: This flag is automatically enabled for <= 64 validators. \
|
||||
Enabling this metric for higher validator counts will lead to higher volume \
|
||||
of prometheus metrics being collected.")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
/*
|
||||
* Explorer metrics
|
||||
*/
|
||||
.arg(
|
||||
Arg::with_name("monitoring-endpoint")
|
||||
Arg::new("monitoring-endpoint")
|
||||
.long("monitoring-endpoint")
|
||||
.value_name("ADDRESS")
|
||||
.help("Enables the monitoring service for sending system metrics to a remote endpoint. \
|
||||
@@ -282,19 +337,21 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
Note: This will send information to a remote sever which may identify and associate your \
|
||||
validators, IP address and other personal information. Always use a HTTPS connection \
|
||||
and never provide an untrusted URL.")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("monitoring-endpoint-period")
|
||||
Arg::new("monitoring-endpoint-period")
|
||||
.long("monitoring-endpoint-period")
|
||||
.value_name("SECONDS")
|
||||
.help("Defines how many seconds to wait between each message sent to \
|
||||
the monitoring-endpoint. Default: 60s")
|
||||
.requires("monitoring-endpoint")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("enable-doppelganger-protection")
|
||||
Arg::new("enable-doppelganger-protection")
|
||||
.long("enable-doppelganger-protection")
|
||||
.value_name("ENABLE_DOPPELGANGER_PROTECTION")
|
||||
.help("If this flag is set, Lighthouse will delay startup for three epochs and \
|
||||
@@ -306,56 +363,62 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
to avoid potentially committing a slashable offense. Use this flag in order to \
|
||||
ENABLE this functionality, without this flag Lighthouse will begin attesting \
|
||||
immediately.")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("builder-proposals")
|
||||
Arg::new("builder-proposals")
|
||||
.long("builder-proposals")
|
||||
.alias("private-tx-proposals")
|
||||
.help("If this flag is set, Lighthouse will query the Beacon Node for only block \
|
||||
headers during proposals and will sign over headers. Useful for outsourcing \
|
||||
execution payload construction during proposals.")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("builder-registration-timestamp-override")
|
||||
Arg::new("builder-registration-timestamp-override")
|
||||
.long("builder-registration-timestamp-override")
|
||||
.alias("builder-registration-timestamp-override")
|
||||
.help("This flag takes a unix timestamp value that will be used to override the \
|
||||
timestamp used in the builder api registration")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("gas-limit")
|
||||
Arg::new("gas-limit")
|
||||
.long("gas-limit")
|
||||
.value_name("INTEGER")
|
||||
.takes_value(true)
|
||||
.action(ArgAction::Set)
|
||||
.help("The gas limit to be used in all builder proposals for all validators managed \
|
||||
by this validator client. Note this will not necessarily be used if the gas limit \
|
||||
set here moves too far from the previous block's gas limit. [default: 30,000,000]")
|
||||
.requires("builder-proposals"),
|
||||
.requires("builder-proposals")
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("latency-measurement-service")
|
||||
.long("latency-measurement-service")
|
||||
.value_name("BOOLEAN")
|
||||
.help("Set to 'true' to enable a service that periodically attempts to measure latency to BNs. \
|
||||
Set to 'false' to disable.")
|
||||
.default_value("true")
|
||||
.takes_value(true),
|
||||
Arg::new("disable-latency-measurement-service")
|
||||
.long("disable-latency-measurement-service")
|
||||
.help("Disables the service that periodically attempts to measure latency to BNs.")
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("validator-registration-batch-size")
|
||||
Arg::new("validator-registration-batch-size")
|
||||
.long("validator-registration-batch-size")
|
||||
.value_name("INTEGER")
|
||||
.help("Defines the number of validators per \
|
||||
validator/register_validator request sent to the BN. This value \
|
||||
can be reduced to avoid timeouts from builders.")
|
||||
.default_value("500")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("builder-boost-factor")
|
||||
Arg::new("builder-boost-factor")
|
||||
.long("builder-boost-factor")
|
||||
.value_name("UINT64")
|
||||
.help("Defines the boost factor, \
|
||||
@@ -363,17 +426,20 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
when choosing between a builder payload header and payload from \
|
||||
the local execution node.")
|
||||
.conflicts_with("prefer-builder-proposals")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("prefer-builder-proposals")
|
||||
Arg::new("prefer-builder-proposals")
|
||||
.long("prefer-builder-proposals")
|
||||
.help("If this flag is set, Lighthouse will always prefer blocks \
|
||||
constructed by builders, regardless of payload value.")
|
||||
.takes_value(false),
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("disable-slashing-protection-web3signer")
|
||||
Arg::new("disable-slashing-protection-web3signer")
|
||||
.long("disable-slashing-protection-web3signer")
|
||||
.help("Disable Lighthouse's slashing protection for all web3signer keys. This can \
|
||||
reduce the I/O burden on the VC but is only safe if slashing protection \
|
||||
@@ -381,26 +447,30 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
THIS FLAG UNLESS YOU ARE CERTAIN THAT SLASHING PROTECTION IS ENABLED ON \
|
||||
THE REMOTE SIGNER. YOU WILL GET SLASHED IF YOU USE THIS FLAG WITHOUT \
|
||||
ENABLING WEB3SIGNER'S SLASHING PROTECTION.")
|
||||
.takes_value(false)
|
||||
.action(ArgAction::SetTrue)
|
||||
.help_heading(FLAG_HEADER)
|
||||
.display_order(0)
|
||||
)
|
||||
/*
|
||||
* Experimental/development options.
|
||||
*/
|
||||
.arg(
|
||||
Arg::with_name("web3-signer-keep-alive-timeout")
|
||||
Arg::new("web3-signer-keep-alive-timeout")
|
||||
.long("web3-signer-keep-alive-timeout")
|
||||
.value_name("MILLIS")
|
||||
.default_value("20000")
|
||||
.help("Keep-alive timeout for each web3signer connection. Set to 'null' to never \
|
||||
timeout")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("web3-signer-max-idle-connections")
|
||||
Arg::new("web3-signer-max-idle-connections")
|
||||
.long("web3-signer-max-idle-connections")
|
||||
.value_name("COUNT")
|
||||
.help("Maximum number of idle connections to maintain per web3signer host. Default \
|
||||
is unlimited.")
|
||||
.takes_value(true),
|
||||
.action(ArgAction::Set)
|
||||
.display_order(0)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user