Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions bin/op-rbuilder/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[package]
name = "op-rbuilder-bin"
description = "OP-Rbuilder Binary"

version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true

[lints]
workspace = true

[dependencies]
# internal
op-rbuilder = { path = "../../crates/builder/op-rbuilder" }

# reth
reth-cli-util.workspace = true
reth-optimism-cli = { workspace = true, optional = true }

# misc
eyre.workspace = true
tracing.workspace = true

[features]
default = [ "jemalloc" ]
jemalloc = [ "op-rbuilder/jemalloc", "reth-cli-util/jemalloc" ]
telemetry = [ "op-rbuilder/telemetry", "reth-optimism-cli" ]
58 changes: 58 additions & 0 deletions bin/op-rbuilder/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#![doc = "OP-Rbuilder Binary"]
#![doc(issue_tracker_base_url = "https://github.com/base/node-reth/issues/")]
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
#![cfg_attr(not(test), warn(unused_crate_dependencies))]

use eyre::Result;
use op_rbuilder::{
args::CliExt,
builders::{BuilderMode, FlashblocksBuilder, StandardBuilder},
launcher::BuilderLauncher,
};

#[global_allocator]
static ALLOC: reth_cli_util::allocator::Allocator = reth_cli_util::allocator::new_allocator();

fn main() -> Result<()> {
// Parse CLI arguments with builder-specific configuration
let cli = op_rbuilder::args::Cli::parsed();
let mode = cli.builder_mode();

// Extract telemetry args before configuring CLI (if telemetry feature enabled)
#[cfg(feature = "telemetry")]
let telemetry_args = match &cli.command {
reth_optimism_cli::commands::Commands::Node(node_command) => {
node_command.ext.telemetry.clone()
}
_ => Default::default(),
};

// Configure CLI application
#[cfg(not(feature = "telemetry"))]
let cli_app = cli.configure();

#[cfg(feature = "telemetry")]
let mut cli_app = cli.configure();
#[cfg(feature = "telemetry")]
{
use op_rbuilder::primitives::telemetry::setup_telemetry_layer;
let telemetry_layer = setup_telemetry_layer(&telemetry_args)?;
cli_app.access_tracing_layers()?.add_layer(telemetry_layer);
}

// Launch the builder with the appropriate mode
match mode {
BuilderMode::Standard => {
tracing::info!("Starting OP builder in standard mode");
let launcher = BuilderLauncher::<StandardBuilder>::new();
cli_app.run(launcher)?;
}
BuilderMode::Flashblocks => {
tracing::info!("Starting OP builder in flashblocks mode");
let launcher = BuilderLauncher::<FlashblocksBuilder>::new();
cli_app.run(launcher)?;
}
}

Ok(())
}
5 changes: 0 additions & 5 deletions crates/builder/op-rbuilder/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
default-run = "op-rbuilder"

[lints.rust]
unreachable_pub = "deny"
Expand Down Expand Up @@ -212,10 +211,6 @@ telemetry = [ "opentelemetry", "reth-tracing-otlp" ]

custom-engine-api = []

[[bin]]
name = "op-rbuilder"
path = "src/bin/op-rbuilder/main.rs"

[[bin]]
name = "tester"
required-features = ["testing"]
10 changes: 0 additions & 10 deletions crates/builder/op-rbuilder/src/bin/op-rbuilder/main.rs

This file was deleted.

44 changes: 3 additions & 41 deletions crates/builder/op-rbuilder/src/launcher.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ use eyre::Result;
use reth_optimism_rpc::OpEthApiBuilder;

use crate::{
args::*,
builders::{BuilderConfig, BuilderMode, FlashblocksBuilder, PayloadBuilder, StandardBuilder},
args::OpRbuilderArgs,
builders::{BuilderConfig, PayloadBuilder},
metrics::{VERSION, record_flag_gauge_metrics},
monitor_tx_pool::monitor_tx_pool,
primitives::reth::engine_api_builder::OpEngineApiBuilder,
Expand All @@ -25,45 +25,7 @@ use reth_optimism_node::{
use reth_transaction_pool::TransactionPool;
use std::{marker::PhantomData, sync::Arc};

pub fn launch() -> Result<()> {
let cli = Cli::parsed();
let mode = cli.builder_mode();

#[cfg(feature = "telemetry")]
let telemetry_args = match &cli.command {
reth_optimism_cli::commands::Commands::Node(node_command) => {
node_command.ext.telemetry.clone()
}
_ => Default::default(),
};

#[cfg(not(feature = "telemetry"))]
let cli_app = cli.configure();

#[cfg(feature = "telemetry")]
let mut cli_app = cli.configure();
#[cfg(feature = "telemetry")]
{
use crate::primitives::telemetry::setup_telemetry_layer;
let telemetry_layer = setup_telemetry_layer(&telemetry_args)?;
cli_app.access_tracing_layers()?.add_layer(telemetry_layer);
}

match mode {
BuilderMode::Standard => {
tracing::info!("Starting OP builder in standard mode");
let launcher = BuilderLauncher::<StandardBuilder>::new();
cli_app.run(launcher)?;
}
BuilderMode::Flashblocks => {
tracing::info!("Starting OP builder in flashblocks mode");
let launcher = BuilderLauncher::<FlashblocksBuilder>::new();
cli_app.run(launcher)?;
}
}
Ok(())
}

/// Launcher for the OP builder node.
pub struct BuilderLauncher<B> {
_builder: PhantomData<B>,
}
Expand Down
Loading