Skip to content

Commit

Permalink
feat: add block-traces comand
Browse files Browse the repository at this point in the history
Uses the `starknet_traceBlockTransactions` under the hood.
  • Loading branch information
xJonathanLEI committed Jan 29, 2024
1 parent ccac7ca commit ca1739c
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ enum Subcommands {
BlockTime(BlockTime),
#[clap(about = "Get state update from a certain block")]
StateUpdate(StateUpdate),
#[clap(about = "Get all traces from a certain block")]
BlockTraces(BlockTraces),
#[clap(
alias = "transaction-receipt",
about = "Get transaction receipt by hash"
Expand Down Expand Up @@ -174,6 +176,7 @@ async fn run_command(cli: Cli) -> Result<()> {
Subcommands::Block(cmd) => cmd.run().await,
Subcommands::BlockTime(cmd) => cmd.run().await,
Subcommands::StateUpdate(cmd) => cmd.run().await,
Subcommands::BlockTraces(cmd) => cmd.run().await,
Subcommands::Receipt(cmd) => cmd.run().await,
Subcommands::Trace(cmd) => cmd.run().await,
Subcommands::ChainId(cmd) => cmd.run().await,
Expand Down
37 changes: 37 additions & 0 deletions src/subcommands/block_traces.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
use anyhow::Result;
use clap::Parser;
use colored_json::{ColorMode, Output};
use starknet::providers::Provider;

use crate::{utils::parse_block_id, verbosity::VerbosityArgs, ProviderArgs};

#[derive(Debug, Parser)]
pub struct BlockTraces {
#[clap(flatten)]
provider: ProviderArgs,
#[clap(
default_value = "latest",
help = "Block number, hash, or tag (latest/pending)"
)]
block_id: String,
#[clap(flatten)]
verbosity: VerbosityArgs,
}

impl BlockTraces {
pub async fn run(self) -> Result<()> {
self.verbosity.setup_logging();

let provider = self.provider.into_provider()?;

let block_id = parse_block_id(&self.block_id)?;

let traces_json = serde_json::to_value(provider.trace_block_transactions(block_id).await?)?;

let traces_json =
colored_json::to_colored_json(&traces_json, ColorMode::Auto(Output::StdOut))?;
println!("{traces_json}");

Ok(())
}
}
3 changes: 3 additions & 0 deletions src/subcommands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,6 @@ pub use transaction_trace::TransactionTrace;

mod spec_version;
pub use spec_version::SpecVersion;

mod block_traces;
pub use block_traces::BlockTraces;

0 comments on commit ca1739c

Please sign in to comment.