From ccf540ea8d9396d0c372aea107440d0bda972d7b Mon Sep 17 00:00:00 2001 From: Aditya Pandey Date: Tue, 11 Apr 2023 17:27:21 +0530 Subject: [PATCH] Adding miner args for cli (#2163) --- Cargo.lock | 1 + bin/reth/Cargo.toml | 1 + bin/reth/src/args/mod.rs | 4 ++ bin/reth/src/args/payload_build_args.rs | 56 +++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 bin/reth/src/args/payload_build_args.rs diff --git a/Cargo.lock b/Cargo.lock index 85d6a6d2e..8c74f6e67 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4454,6 +4454,7 @@ dependencies = [ "metrics", "metrics-exporter-prometheus", "metrics-util", + "num_cpus", "proptest", "reth-auto-seal-consensus", "reth-beacon-consensus", diff --git a/bin/reth/Cargo.toml b/bin/reth/Cargo.toml index 1bd98580a..f3f2ee986 100644 --- a/bin/reth/Cargo.toml +++ b/bin/reth/Cargo.toml @@ -78,6 +78,7 @@ jsonrpsee = { version = "0.16", features = ["server"] } # misc eyre = "0.6.8" clap = { version = "4", features = ["derive", "cargo"] } +num_cpus = "1.13.0" tempfile = { version = "3.3.0" } backon = "0.4" hex = "0.4" diff --git a/bin/reth/src/args/mod.rs b/bin/reth/src/args/mod.rs index 98167ad59..166c0ad13 100644 --- a/bin/reth/src/args/mod.rs +++ b/bin/reth/src/args/mod.rs @@ -14,3 +14,7 @@ pub use debug_args::DebugArgs; mod secret_key; pub use secret_key::{get_secret_key, SecretKeyError}; + +/// MinerArgs struct for configuring the miner +mod payload_build_args; +pub use payload_build_args::PayloadBuilderArgs; diff --git a/bin/reth/src/args/payload_build_args.rs b/bin/reth/src/args/payload_build_args.rs new file mode 100644 index 000000000..d448e023b --- /dev/null +++ b/bin/reth/src/args/payload_build_args.rs @@ -0,0 +1,56 @@ +use clap::{builder::RangedU64ValueParser, Args}; +use reth_primitives::Address; + +/// Parameters for configuring the Payload Builder +#[derive(Debug, Args, PartialEq, Default)] +pub struct PayloadBuilderArgs { + /// Public address for block mining rewards + #[arg(long = "builder.etherbase", help_heading = "Builder")] + pub etherbase: Option
, + + /// Block extra data set by the builder + #[arg(long = "builder.extradata", help_heading = "Builder")] + pub extradata: Option, + + /// Target gas ceiling for mined blocks + #[arg(long = "builder.gaslimit", help_heading = "Builder")] + pub gaslimit: Option, + + /// Minimum gas price for mining a transaction + #[arg(long = "builder.gasprice", help_heading = "Builder")] + pub gasprice: Option, + + /// Time interval to recreate the block being mined in seconds + #[arg(long = "builder.recommit", help_heading = "Builder")] + pub recommit: Option, + + /// Number of CPU threads to use for mining + #[arg(long = "builder.threads", help_heading = "Builder", value_parser = RangedU64ValueParser::::new().range(1..=num_cpus::get() as u64))] + pub num_threads: Option, +} + +#[cfg(test)] +mod tests { + + use super::*; + use clap::{Args, Parser}; + + /// A helper type to parse Args more easily + #[derive(Parser)] + struct CommandParser { + #[clap(flatten)] + args: T, + } + + #[test] + fn test_args_with_valid_num_threads() { + let num_cpus = num_cpus::get(); + let args = CommandParser::::parse_from([ + "reth", + "--builder.threads", + &format!("{}", num_cpus), + ]) + .args; + assert!(args.num_threads.is_some()) + } +}