Skip to content
This repository was archived by the owner on Jan 16, 2026. It is now read-only.
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
1 change: 0 additions & 1 deletion bin/host/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,3 @@ tokio = { version = "1.37.0", features = ["full"] }
clap = { version = "4.5.4", features = ["derive", "env"] }
serde = { version = "1.0.198", features = ["derive"] }
tracing-subscriber = "0.3.18"

74 changes: 74 additions & 0 deletions bin/host/src/cli/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
//! This module contains all CLI-specific code for the host binary.

use alloy_primitives::B256;
use clap::{ArgAction, Parser};
use serde::Serialize;
use std::path::PathBuf;

mod parser;
pub(crate) use parser::parse_b256;

mod types;
pub(crate) use types::{Network, RpcKind};

mod tracing_util;
pub(crate) use tracing_util::init_tracing_subscriber;

/// The host binary CLI application arguments.
#[derive(Parser, Serialize)]
pub struct HostCli {
/// Verbosity level (0-4)
#[arg(long, short, help = "Verbosity level (0-4)", action = ArgAction::Count)]
pub v: u8,
/// The rollup chain parameters
#[clap(long)]
pub rollup_config: PathBuf,
/// Predefined network selection.
#[clap(long)]
pub network: Network,
/// The Data Directory for preimage data storage. Default uses in-memory storage.
#[clap(long)]
pub data_dir: Option<PathBuf>,
/// Address of L2 JSON-RPC endpoint to use (eth and debug namespace required).
#[clap(long)]
pub l2_node_address: String,
/// Hash of the L1 head block. Derivation stops after this block is processed.
#[clap(long, value_parser = parse_b256)]
pub l1_head: B256,
/// Hash of the L2 block at the L2 Output Root.
#[clap(long, value_parser = parse_b256)]
pub l2_head: B256,
/// Agreed L2 Output Root to start derivation from.
#[clap(long, value_parser = parse_b256)]
pub l2_output_root: B256,
/// Claimed L2 output root to validate
#[clap(long, value_parser = parse_b256)]
pub l2_claim: B256,
/// Number of the L2 block that the claim is from.
#[clap(long)]
pub l2_block_number: u64,
//// Path to the genesis file.
#[clap(long)]
pub l2_genesis_path: PathBuf,
/// Address of L1 JSON-RPC endpoint to use (eth namespace required)
#[clap(long)]
pub l1_node_address: String,
/// Address of the L1 Beacon API endpoint to use.
#[clap(long)]
pub l1_beacon_address: String,
/// Trust the L1 RPC, sync faster at risk of malicious/buggy RPC providing bad or inconsistent
/// L1 data
#[clap(long)]
pub l1_trust_rpc: bool,
/// The kind of RPC provider, used to inform optimal transactions receipts fetching, and thus
/// reduce costs.
#[clap(long)]
pub l1_rpc_provider_kind: RpcKind,
/// Run the specified client program as a separate process detached from the host. Default is
/// to run the client program in the host process.
#[clap(long)]
pub exec: String,
/// Run in pre-image server mode without executing any client program.
#[clap(long)]
pub server: bool,
}
File renamed without changes.
24 changes: 24 additions & 0 deletions bin/host/src/cli/tracing_util.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//! Contains utilities for initializing the tracing subscriber.

use anyhow::{anyhow, Result};
use tracing::Level;

/// Initializes the tracing subscriber
///
/// # Arguments
/// * `verbosity_level` - The verbosity level (0-4)
///
/// # Returns
/// * `Result<()>` - Ok if successful, Err otherwise.
pub fn init_tracing_subscriber(verbosity_level: u8) -> Result<()> {
let subscriber = tracing_subscriber::fmt()
.with_max_level(match verbosity_level {
0 => Level::ERROR,
1 => Level::WARN,
2 => Level::INFO,
3 => Level::DEBUG,
_ => Level::TRACE,
})
.finish();
tracing::subscriber::set_global_default(subscriber).map_err(|e| anyhow!(e))
}
File renamed without changes.
99 changes: 6 additions & 93 deletions bin/host/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,100 +1,13 @@
use crate::{
parser::parse_b256,
types::{Network, RpcKind},
};
use alloy_primitives::B256;
use anyhow::{anyhow, Result};
use clap::{ArgAction, Parser};
use serde::Serialize;
use std::path::PathBuf;
use tracing::Level;
use crate::cli::{init_tracing_subscriber, HostCli};
use anyhow::Result;
use clap::Parser;

mod parser;
mod types;
mod cli;

#[tokio::main]
async fn main() -> Result<()> {
let _cli = Cli::parse();
let _ = init_tracing_subscriber(_cli.v);
let HostCli { v: tracing_verbosity, .. } = HostCli::parse();
let _ = init_tracing_subscriber(tracing_verbosity);
tracing::info!("host telemetry initialized");
Ok(())
}

/// Initializes the tracing subscriber
///
/// # Arguments
/// * `verbosity_level` - The verbosity level (0-4)
///
/// # Returns
/// * `Result<()>` - Ok if successful, Err otherwise.
fn init_tracing_subscriber(verbosity_level: u8) -> Result<()> {
let subscriber = tracing_subscriber::fmt()
.with_max_level(match verbosity_level {
0 => Level::ERROR,
1 => Level::WARN,
2 => Level::INFO,
3 => Level::DEBUG,
_ => Level::TRACE,
})
.finish();
tracing::subscriber::set_global_default(subscriber).map_err(|e| anyhow!(e))
}

/// The host binary CLI application arguments.
#[derive(Parser, Serialize)]
pub struct Cli {
/// Verbosity level (0-4)
#[arg(long, short, help = "Verbosity level (0-4)", action = ArgAction::Count)]
v: u8,
/// The rollup chain parameters
#[clap(long)]
pub rollup_config: PathBuf,
/// Predefined network selection.
#[clap(long)]
pub network: Network,
/// The Data Directory for preimage data storage. Default uses in-memory storage.
#[clap(long)]
pub data_dir: Option<PathBuf>,
/// Address of L2 JSON-RPC endpoint to use (eth and debug namespace required).
#[clap(long)]
pub l2_node_address: String,
/// Hash of the L1 head block. Derivation stops after this block is processed.
#[clap(long, value_parser = parse_b256)]
pub l1_head: B256,
/// Hash of the L2 block at the L2 Output Root.
#[clap(long, value_parser = parse_b256)]
pub l2_head: B256,
/// Agreed L2 Output Root to start derivation from.
#[clap(long, value_parser = parse_b256)]
pub l2_output_root: B256,
/// Claimed L2 output root to validate
#[clap(long, value_parser = parse_b256)]
pub l2_claim: B256,
/// Number of the L2 block that the claim is from.
#[clap(long)]
pub l2_block_number: u64,
//// Path to the genesis file.
#[clap(long)]
pub l2_genesis_path: PathBuf,
/// Address of L1 JSON-RPC endpoint to use (eth namespace required)
#[clap(long)]
pub l1_node_address: String,
/// Address of the L1 Beacon API endpoint to use.
#[clap(long)]
pub l1_beacon_address: String,
/// Trust the L1 RPC, sync faster at risk of malicious/buggy RPC providing bad or inconsistent
/// L1 data
#[clap(long)]
pub l1_trust_rpc: bool,
/// The kind of RPC provider, used to inform optimal transactions receipts fetching, and thus
/// reduce costs.
#[clap(long)]
pub l1_rpc_provider_kind: RpcKind,
/// Run the specified client program as a separate process detached from the host. Default is
/// to run the client program in the host process.
#[clap(long)]
pub exec: String,
/// Run in pre-image server mode without executing any client program.
#[clap(long)]
pub server: bool,
}