diff --git a/Cargo.toml b/Cargo.toml index 36e2ea96..a83bd0ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,16 +8,8 @@ repository = "https://github.com/base/node-reth" [workspace] resolver = "2" -members = [ - "crates/flashblocks-rpc", - "crates/metering", - "crates/node", - "crates/test-utils", - "crates/transaction-status", - "crates/transaction-tracing", -] - -default-members = ["crates/node"] +members = ["bin/*", "crates/*"] +default-members = ["bin/node"] [workspace.lints] @@ -40,12 +32,11 @@ codegen-units = 1 [workspace.dependencies] # internal -base-reth-flashblocks-rpc = { path = "crates/flashblocks-rpc" } base-reth-metering = { path = "crates/metering" } -base-reth-node = { path = "crates/node" } base-reth-test-utils = { path = "crates/test-utils" } -base-reth-transaction-tracing = { path = "crates/transaction-tracing" } +base-reth-flashblocks-rpc = { path = "crates/flashblocks-rpc" } base-reth-transaction-status = { path = "crates/transaction-status" } +base-reth-transaction-tracing = { path = "crates/transaction-tracing" } # base/tips # Note: default-features = false avoids version conflicts with reth's alloy/op-alloy dependencies diff --git a/crates/node/Cargo.toml b/bin/node/Cargo.toml similarity index 99% rename from crates/node/Cargo.toml rename to bin/node/Cargo.toml index c4851ffd..e959810e 100644 --- a/crates/node/Cargo.toml +++ b/bin/node/Cargo.toml @@ -1,22 +1,23 @@ [package] name = "base-reth-node" +description = "Base Reth Binary" + version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true homepage.workspace = true repository.workspace = true -description = "Base Reth Binary" [lints] workspace = true [dependencies] # internal -base-reth-flashblocks-rpc.workspace = true base-reth-metering.workspace = true -base-reth-transaction-tracing.workspace = true +base-reth-flashblocks-rpc.workspace = true base-reth-transaction-status.workspace = true +base-reth-transaction-tracing.workspace = true # reth reth.workspace = true diff --git a/bin/node/src/cli.rs b/bin/node/src/cli.rs new file mode 100644 index 00000000..ba5927ec --- /dev/null +++ b/bin/node/src/cli.rs @@ -0,0 +1,47 @@ +//! Contains the CLI arguments + +use reth_optimism_node::args::RollupArgs; + +/// CLI Arguments +#[derive(Debug, Clone, PartialEq, Eq, clap::Args)] +#[command(next_help_heading = "Rollup")] +pub struct Args { + /// Rollup arguments + #[command(flatten)] + pub rollup_args: RollupArgs, + + /// The websocket url used for flashblocks. + #[arg(long = "websocket-url", value_name = "WEBSOCKET_URL")] + pub websocket_url: Option, + + /// The mac pending blocks depth. + #[arg( + long = "max-pending-blocks-depth", + value_name = "MAX_PENDING_BLOCKS_DEPTH", + default_value = "3" + )] + pub max_pending_blocks_depth: u64, + + /// Enable transaction tracing ExEx for mempool-to-block timing analysis + #[arg(long = "enable-transaction-tracing", value_name = "ENABLE_TRANSACTION_TRACING")] + pub enable_transaction_tracing: bool, + + /// Enable `info` logs for transaction tracing + #[arg( + long = "enable-transaction-tracing-logs", + value_name = "ENABLE_TRANSACTION_TRACING_LOGS" + )] + pub enable_transaction_tracing_logs: bool, + + /// Enable metering RPC for transaction bundle simulation + #[arg(long = "enable-metering", value_name = "ENABLE_METERING")] + pub enable_metering: bool, +} + +impl Args { + /// Returns if flashblocks is enabled. + /// If the websocket url is specified through the CLI. + pub fn flashblocks_enabled(&self) -> bool { + self.websocket_url.is_some() + } +} diff --git a/crates/node/src/main.rs b/bin/node/src/main.rs similarity index 85% rename from crates/node/src/main.rs rename to bin/node/src/main.rs index dfa2c7e0..fe987870 100644 --- a/crates/node/src/main.rs +++ b/bin/node/src/main.rs @@ -18,53 +18,18 @@ use reth::{ }; use reth_exex::ExExEvent; use reth_optimism_cli::{Cli, chainspec::OpChainSpecParser}; -use reth_optimism_node::{OpNode, args::RollupArgs}; +use reth_optimism_node::OpNode; use tracing::info; use url::Url; +pub mod cli; +pub use cli::Args; + pub const NODE_RETH_CLIENT_VERSION: &str = concat!("base/v", env!("CARGO_PKG_VERSION")); #[global_allocator] static ALLOC: reth_cli_util::allocator::Allocator = reth_cli_util::allocator::new_allocator(); -#[derive(Debug, Clone, PartialEq, Eq, clap::Args)] -#[command(next_help_heading = "Rollup")] -struct Args { - #[command(flatten)] - pub rollup_args: RollupArgs, - - #[arg(long = "websocket-url", value_name = "WEBSOCKET_URL")] - pub websocket_url: Option, - - #[arg( - long = "max-pending-blocks-depth", - value_name = "MAX_PENDING_BLOCKS_DEPTH", - default_value = "3" - )] - pub max_pending_blocks_depth: u64, - - /// Enable transaction tracing ExEx for mempool-to-block timing analysis - #[arg(long = "enable-transaction-tracing", value_name = "ENABLE_TRANSACTION_TRACING")] - pub enable_transaction_tracing: bool, - - /// Enable `info` logs for transaction tracing - #[arg( - long = "enable-transaction-tracing-logs", - value_name = "ENABLE_TRANSACTION_TRACING_LOGS" - )] - pub enable_transaction_tracing_logs: bool, - - /// Enable metering RPC for transaction bundle simulation - #[arg(long = "enable-metering", value_name = "ENABLE_METERING")] - pub enable_metering: bool, -} - -impl Args { - fn flashblocks_enabled(&self) -> bool { - self.websocket_url.is_some() - } -} - fn main() { let default_version_metadata = default_reth_version_metadata(); try_init_version_metadata(RethCliVersionConsts { diff --git a/crates/test-utils/src/harness.rs b/crates/test-utils/src/harness.rs index be656c82..b52a8b15 100644 --- a/crates/test-utils/src/harness.rs +++ b/crates/test-utils/src/harness.rs @@ -85,7 +85,7 @@ impl TestHarness { pub async fn build_block_from_transactions(&self, mut transactions: Vec) -> Result<()> { // Ensure the block always starts with the required L1 block info deposit. - if !transactions.first().is_some_and(|tx| tx == &L1_BLOCK_INFO_DEPOSIT_TX) { + if transactions.first().is_none_or(|tx| tx != &L1_BLOCK_INFO_DEPOSIT_TX) { transactions.insert(0, L1_BLOCK_INFO_DEPOSIT_TX.clone()); } @@ -118,7 +118,6 @@ impl TestHarness { no_tx_pool: Some(true), min_base_fee: Some(min_base_fee), eip_1559_params: Some(B64::from(eip_1559_params)), - ..Default::default() }; let forkchoice_result = self diff --git a/crates/test-utils/src/node.rs b/crates/test-utils/src/node.rs index 5a731bfd..104756f0 100644 --- a/crates/test-utils/src/node.rs +++ b/crates/test-utils/src/node.rs @@ -86,6 +86,7 @@ struct FlashblocksNodeExtensions { struct FlashblocksNodeExtensionsInner { sender: mpsc::Sender<(Flashblock, oneshot::Sender<()>)>, + #[allow(clippy::type_complexity)] receiver: Arc)>>>>, fb_cell: Arc>>, process_canonical: bool,