From 74fab99fc52148b520903a41264a57e32c5e4aba Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Fri, 31 Oct 2025 01:28:42 +0530 Subject: [PATCH 1/9] feat(cast): added custom polling interval args --- crates/cast/src/cmd/send.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 5f17f93184c99..35a9e644b1aa6 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -15,7 +15,7 @@ use foundry_cli::{ utils, utils::LoadConfig, }; -use std::{path::PathBuf, str::FromStr}; +use std::{path::PathBuf, str::FromStr, time::Duration}; /// CLI arguments for `cast send`. #[derive(Debug, Parser)] @@ -41,6 +41,10 @@ pub struct SendTxArgs { #[arg(long, default_value = "1")] confirmations: u64, + /// Polling interval for transaction receipts (in seconds). + #[arg(long, env = "ETH_POLL_INTERVAL")] + poll_interval: Option, + #[command(subcommand)] command: Option, @@ -100,6 +104,7 @@ impl SendTxArgs { unlocked, path, timeout, + poll_interval, } = self; let blob_data = if let Some(path) = path { Some(std::fs::read(path)?) } else { None }; @@ -135,6 +140,9 @@ impl SendTxArgs { let config = eth.load_config()?; let provider = utils::get_provider(&config)?; + poll_interval + .map(|interval| provider.client().set_poll_interval(Duration::from_secs(interval))); + let builder = CastTxBuilder::new(&provider, tx, &config) .await? .with_to(to) @@ -204,7 +212,6 @@ async fn cast_send>( ) -> Result<()> { let cast = Cast::new(provider); let pending_tx = cast.send(tx).await?; - let tx_hash = pending_tx.inner().tx_hash(); if cast_async { From 3b03b3d69aa0ab3c03dd449930a36540af406dbf Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Fri, 31 Oct 2025 01:39:26 +0530 Subject: [PATCH 2/9] feat(cast): added a custom alias for poll interval --- crates/cast/src/cmd/send.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 35a9e644b1aa6..2bafaa56a374f 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -42,7 +42,7 @@ pub struct SendTxArgs { confirmations: u64, /// Polling interval for transaction receipts (in seconds). - #[arg(long, env = "ETH_POLL_INTERVAL")] + #[arg(long, alias = "poll-interval", env = "ETH_POLL_INTERVAL")] poll_interval: Option, #[command(subcommand)] From 6992ffb73bb51583792253bc6d40e290b3cc1dc4 Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Fri, 31 Oct 2025 02:50:02 +0530 Subject: [PATCH 3/9] feat(cast): updated with clippy suggestion --- crates/cast/src/cmd/send.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 2bafaa56a374f..bf6b4c8db3bc5 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -140,8 +140,7 @@ impl SendTxArgs { let config = eth.load_config()?; let provider = utils::get_provider(&config)?; - poll_interval - .map(|interval| provider.client().set_poll_interval(Duration::from_secs(interval))); + if let Some(interval) = poll_interval { provider.client().set_poll_interval(Duration::from_secs(interval)) } let builder = CastTxBuilder::new(&provider, tx, &config) .await? From 8f41f4ce014a72aeadca8bd0d408bac97b3f9c72 Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Mon, 3 Nov 2025 00:40:54 +0530 Subject: [PATCH 4/9] feat(cast): added multi fields to cast block --- crates/cast/src/args.rs | 7 +++---- crates/cast/src/lib.rs | 30 ++++++++++++++++++------------ crates/cast/src/opts.rs | 8 ++++---- crates/cast/tests/cli/main.rs | 35 ++++++++++++++++++++++------------- 4 files changed, 47 insertions(+), 33 deletions(-) diff --git a/crates/cast/src/args.rs b/crates/cast/src/args.rs index e13eed21c29f8..4538512f93c19 100644 --- a/crates/cast/src/args.rs +++ b/crates/cast/src/args.rs @@ -338,17 +338,16 @@ pub async fn run_command(args: CastArgs) -> Result<()> { Cast::new(provider).base_fee(block.unwrap_or(BlockId::Number(Latest))).await? )? } - CastSubcommand::Block { block, full, field, raw, rpc } => { + CastSubcommand::Block { block, full, fields, raw, rpc } => { let config = rpc.load_config()?; let provider = utils::get_provider(&config)?; - // Can use either --raw or specify raw as a field - let raw = raw || field.as_ref().is_some_and(|f| f == "raw"); + let raw = raw || fields.contains(&"raw".into()); sh_println!( "{}", Cast::new(provider) - .block(block.unwrap_or(BlockId::Number(Latest)), full, field, raw) + .block(block.unwrap_or(BlockId::Number(Latest)), full, fields, raw) .await? )? } diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index 4eff21fec1fd4..fee07f312dded 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -48,6 +48,7 @@ use std::{ time::Duration, }; use tokio::signal::ctrl_c; +use tracing::field::FieldSet; use foundry_common::abi::encode_function_args_packed; pub use foundry_evm::*; @@ -356,14 +357,11 @@ impl> Cast

{ &self, block: B, full: bool, - field: Option, + fields: Vec, raw: bool, ) -> Result { let block = block.into(); - if let Some(ref field) = field - && field == "transactions" - && !full - { + if fields.contains(&"transactions".into()) && !full { eyre::bail!("use --full to view transactions") } @@ -377,9 +375,16 @@ impl> Cast

{ Ok(if raw { let header: Header = block.into_inner().header.inner.try_into_header()?; format!("0x{}", hex::encode(alloy_rlp::encode(&header))) - } else if let Some(ref field) = field { - get_pretty_block_attr(&block, field) - .unwrap_or_else(|| format!("{field} is not a valid block field")) + } else if fields.len() > 0 { + let mut result = String::new(); + for field in fields { + result.push_str( + &get_pretty_block_attr(&block, &field) + .unwrap_or_else(|| format!("{field} is not a valid block field")), + ); + result.push('\n'); + } + result } else if shell::is_json() { serde_json::to_value(&block).unwrap().to_string() } else { @@ -393,7 +398,7 @@ impl> Cast

{ block.into(), false, // Select only select field - Some(field), + vec![field], false, ) .await? @@ -422,14 +427,15 @@ impl> Cast

{ 0, false, // Select only block hash - Some(String::from("hash")), + vec![String::from("hash")], false, ) .await?; Ok(match &genesis_hash[..] { "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3" => { - match &(Self::block(self, 1920000, false, Some("hash".to_string()), false).await?)[..] + match &(Self::block(self, 1920000, false, vec![String::from("hash")], false) + .await?)[..] { "0x94365e3a8c0b35089c1d1195081fe7489b528a84b22199c916180db8b28ade7f" => { "etclive" @@ -472,7 +478,7 @@ impl> Cast

{ "0x6d3c66c5357ec91d5c43af47e234a939b22557cbb552dc45bebbceeed90fbe34" => "bsctest", "0x0d21840abff46b96c84b2ac9e10e4f5cdaeb5693cb665db62a2f3b02d2d57b5b" => "bsc", "0x31ced5b9beb7f8782b014660da0cb18cc409f121f408186886e1ca3e8eeca96b" => { - match &(Self::block(self, 1, false, Some(String::from("hash")), false).await?)[..] { + match &(Self::block(self, 1, false, vec![String::from("hash")], false).await?)[..] { "0x738639479dc82d199365626f90caa82f7eafcfe9ed354b456fb3d294597ceb53" => { "avalanche-fuji" } diff --git a/crates/cast/src/opts.rs b/crates/cast/src/opts.rs index 95c14f3a0e0b3..45cdfe607b4f9 100644 --- a/crates/cast/src/opts.rs +++ b/crates/cast/src/opts.rs @@ -9,12 +9,12 @@ use crate::cmd::{ use alloy_ens::NameOrAddress; use alloy_primitives::{Address, B256, Selector, U256}; use alloy_rpc_types::BlockId; +use clap::ArgAction; use clap::{Parser, Subcommand, ValueHint}; use eyre::Result; use foundry_cli::opts::{EtherscanOpts, GlobalArgs, RpcOpts}; use foundry_common::version::{LONG_VERSION, SHORT_VERSION}; use std::{path::PathBuf, str::FromStr}; - /// A Swiss Army knife for interacting with Ethereum applications from the command line. #[derive(Parser)] #[command( @@ -379,11 +379,11 @@ pub enum CastSubcommand { block: Option, /// If specified, only get the given field of the block. - #[arg(long, short)] - field: Option, + #[arg(short, long,num_args = 1..,action = ArgAction::Append,value_delimiter = ',')] + fields: Vec, /// Print the raw RLP encoded block header. - #[arg(long, conflicts_with = "field")] + #[arg(long, conflicts_with = "fields")] raw: bool, #[arg(long, env = "CAST_FULL_BLOCK")] diff --git a/crates/cast/tests/cli/main.rs b/crates/cast/tests/cli/main.rs index 8c483be531a03..4949eedd89359 100644 --- a/crates/cast/tests/cli/main.rs +++ b/crates/cast/tests/cli/main.rs @@ -142,9 +142,18 @@ transactions: [ "#]]); // - cmd.cast_fuse().args(["block", "15007840", "-f", "hash", "--rpc-url", eth_rpc_url.as_str()]); + cmd.cast_fuse().args([ + "block", + "15007840", + "-f", + "hash,timestamp", + "--rpc-url", + eth_rpc_url.as_str(), + ]); cmd.assert_success().stdout_eq(str![[r#" 0x950091817a57e22b6c1f3b951a15f52d41ac89b299cc8f9c89bb6d185f80c415 +1655904485 + "#]]); }); @@ -1327,20 +1336,20 @@ casttest!(receipt_revert_reason, |_prj, cmd| { blockHash 0x2cfe65be49863676b6dbc04d58176a14f39b123f1e2f4fea0383a2d82c2c50d0 blockNumber 16239315 -contractAddress +contractAddress cumulativeGasUsed 10743428 effectiveGasPrice 10539984136 from 0x199D5ED7F45F4eE35960cF22EAde2076e95B253F gasUsed 21000 logs [] logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -root +root status 1 (success) transactionHash 0x44f2aaa351460c074f2cb1e5a9e28cbc7d83f33e425101d2de14331c7b7ec31e transactionIndex 116 type 0 -blobGasPrice -blobGasUsed +blobGasPrice +blobGasUsed to 0x91da5bf3F8Eb72724E6f50Ec6C3D199C6355c59c "#]]); @@ -1360,20 +1369,20 @@ to 0x91da5bf3F8Eb72724E6f50Ec6C3D199C6355c59c blockHash 0x883f974b17ca7b28cb970798d1c80f4d4bb427473dc6d39b2a7fe24edc02902d blockNumber 14839405 -contractAddress +contractAddress cumulativeGasUsed 20273649 effectiveGasPrice 21491736378 from 0x3cF412d970474804623bb4e3a42dE13F9bCa5436 gasUsed 24952 logs [] logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -root +root status 0 (failed) transactionHash 0x0e07d8b53ed3d91314c80e53cf25bcde02084939395845cbb625b029d568135c transactionIndex 173 type 2 -blobGasPrice -blobGasUsed +blobGasPrice +blobGasUsed to 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45 revertReason [..]Transaction too old, data: "0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000135472616e73616374696f6e20746f6f206f6c6400000000000000000000000000" @@ -1395,20 +1404,20 @@ casttest!(revert_reason_from, |_prj, cmd| { blockHash 0x32663d7730c9ea8e1de6d99854483e25fcc05bb56c91c0cc82f9f04944fbffc1 blockNumber 7823353 -contractAddress +contractAddress cumulativeGasUsed 7500797 effectiveGasPrice 14296851013 from 0x3583fF95f96b356d716881C871aF7Eb55ea34a93 gasUsed 25815 logs [] logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -root +root status 0 (failed) transactionHash 0x10ee70cf9f5ced5c515e8d53bfab5ea9f5c72cd61b25fba455c8355ee286c4e4 transactionIndex 96 type 0 -blobGasPrice -blobGasUsed +blobGasPrice +blobGasUsed to 0x91b5d4111a4C038153b24e31F75ccdC47123595d revertReason Counter is too large, data: "0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000014436f756e74657220697320746f6f206c61726765000000000000000000000000" From d00864c95392d87e4275b6fa3ff583501bbc608a Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Mon, 3 Nov 2025 16:27:30 +0530 Subject: [PATCH 5/9] feat(cast): num of args needed for fields in block set to 0 --- crates/cast/src/opts.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/cast/src/opts.rs b/crates/cast/src/opts.rs index 45cdfe607b4f9..f994ef32a2dbc 100644 --- a/crates/cast/src/opts.rs +++ b/crates/cast/src/opts.rs @@ -379,7 +379,7 @@ pub enum CastSubcommand { block: Option, /// If specified, only get the given field of the block. - #[arg(short, long,num_args = 1..,action = ArgAction::Append,value_delimiter = ',')] + #[arg(short, long,num_args = 0..,action = ArgAction::Append,value_delimiter = ',')] fields: Vec, /// Print the raw RLP encoded block header. From ccc98a92410498acc5515865b986736d61e6b453 Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Mon, 3 Nov 2025 16:31:54 +0530 Subject: [PATCH 6/9] chore: updated with formatting --- crates/cast/src/lib.rs | 3 +-- crates/cast/src/opts.rs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index 5e35f0b5469a7..8d0448e6562ae 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -48,7 +48,6 @@ use std::{ time::Duration, }; use tokio::signal::ctrl_c; -use tracing::field::FieldSet; use foundry_common::abi::encode_function_args_packed; pub use foundry_evm::*; @@ -368,7 +367,7 @@ impl> Cast

{ Ok(if raw { let header: Header = block.into_inner().header.inner.try_into_header()?; format!("0x{}", hex::encode(alloy_rlp::encode(&header))) - } else if fields.len() > 0 { + } else if !fields.is_empty() { let mut result = String::new(); for field in fields { result.push_str( diff --git a/crates/cast/src/opts.rs b/crates/cast/src/opts.rs index f994ef32a2dbc..2c3deb3c0bd95 100644 --- a/crates/cast/src/opts.rs +++ b/crates/cast/src/opts.rs @@ -9,8 +9,7 @@ use crate::cmd::{ use alloy_ens::NameOrAddress; use alloy_primitives::{Address, B256, Selector, U256}; use alloy_rpc_types::BlockId; -use clap::ArgAction; -use clap::{Parser, Subcommand, ValueHint}; +use clap::{ArgAction, Parser, Subcommand, ValueHint}; use eyre::Result; use foundry_cli::opts::{EtherscanOpts, GlobalArgs, RpcOpts}; use foundry_common::version::{LONG_VERSION, SHORT_VERSION}; From b34c60f6cd2de1a59728c08728475cf864c3c906 Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Mon, 3 Nov 2025 16:47:00 +0530 Subject: [PATCH 7/9] feat(cast): added long field to cast block --- crates/cast/src/opts.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/cast/src/opts.rs b/crates/cast/src/opts.rs index 2c3deb3c0bd95..b52d38c4c73c8 100644 --- a/crates/cast/src/opts.rs +++ b/crates/cast/src/opts.rs @@ -378,7 +378,7 @@ pub enum CastSubcommand { block: Option, /// If specified, only get the given field of the block. - #[arg(short, long,num_args = 0..,action = ArgAction::Append,value_delimiter = ',')] + #[arg(short, long = "field", aliases = ["fields"], num_args = 0.., action = ArgAction::Append, value_delimiter = ',')] fields: Vec, /// Print the raw RLP encoded block header. From de99dcd512835513384486450b419f7a73cbc95f Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Mon, 3 Nov 2025 18:11:08 +0530 Subject: [PATCH 8/9] doc(cast): updated docs to match change in fields --- crates/cast/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index 8d0448e6562ae..9ec2bb01ca6e9 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -340,7 +340,7 @@ impl> Cast

{ /// let provider = /// ProviderBuilder::<_, _, AnyNetwork>::default().connect("http://localhost:8545").await?; /// let cast = Cast::new(provider); - /// let block = cast.block(5, true, None, false).await?; + /// let block = cast.block(5, true, vec![], false).await?; /// println!("{}", block); /// # Ok(()) /// # } From e41c2f2ffbf219a6812c392e67dfac3e204e7b1c Mon Sep 17 00:00:00 2001 From: dipanshuhappy Date: Tue, 11 Nov 2025 11:39:11 +0530 Subject: [PATCH 9/9] test(cast): Remove trailing whitespace from block output --- crates/cast/src/lib.rs | 3 ++- crates/cast/tests/cli/main.rs | 45 +++++++++++++++-------------------- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/crates/cast/src/lib.rs b/crates/cast/src/lib.rs index 9ec2bb01ca6e9..6fb4b41eb8a44 100644 --- a/crates/cast/src/lib.rs +++ b/crates/cast/src/lib.rs @@ -374,9 +374,10 @@ impl> Cast

{ &get_pretty_block_attr(&block, &field) .unwrap_or_else(|| format!("{field} is not a valid block field")), ); + result.push('\n'); } - result + result.trim_end().to_string() } else if shell::is_json() { serde_json::to_value(&block).unwrap().to_string() } else { diff --git a/crates/cast/tests/cli/main.rs b/crates/cast/tests/cli/main.rs index 4949eedd89359..7fd1aa2f1c7fd 100644 --- a/crates/cast/tests/cli/main.rs +++ b/crates/cast/tests/cli/main.rs @@ -154,7 +154,6 @@ transactions: [ 0x950091817a57e22b6c1f3b951a15f52d41ac89b299cc8f9c89bb6d185f80c415 1655904485 - "#]]); }); @@ -1321,6 +1320,7 @@ casttest!(to_base, |_prj, cmd| { }); // tests that revert reason is only present if transaction has reverted. + casttest!(receipt_revert_reason, |_prj, cmd| { let rpc = next_http_archive_rpc_url(); @@ -1332,27 +1332,25 @@ casttest!(receipt_revert_reason, |_prj, cmd| { rpc.as_str(), ]) .assert_success() - .stdout_eq(str![[r#" - + .stdout_eq(format!(r#" blockHash 0x2cfe65be49863676b6dbc04d58176a14f39b123f1e2f4fea0383a2d82c2c50d0 blockNumber 16239315 -contractAddress +contractAddress {} cumulativeGasUsed 10743428 effectiveGasPrice 10539984136 from 0x199D5ED7F45F4eE35960cF22EAde2076e95B253F gasUsed 21000 logs [] logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -root +root {} status 1 (success) transactionHash 0x44f2aaa351460c074f2cb1e5a9e28cbc7d83f33e425101d2de14331c7b7ec31e transactionIndex 116 type 0 -blobGasPrice -blobGasUsed +blobGasPrice {} +blobGasUsed {} to 0x91da5bf3F8Eb72724E6f50Ec6C3D199C6355c59c - -"#]]); +"#,"", "", "", "")); let rpc = next_http_archive_rpc_url(); @@ -1365,30 +1363,27 @@ to 0x91da5bf3F8Eb72724E6f50Ec6C3D199C6355c59c rpc.as_str(), ]) .assert_success() - .stdout_eq(str![[r#" - + .stdout_eq(format!(r#" blockHash 0x883f974b17ca7b28cb970798d1c80f4d4bb427473dc6d39b2a7fe24edc02902d blockNumber 14839405 -contractAddress +contractAddress {} cumulativeGasUsed 20273649 effectiveGasPrice 21491736378 from 0x3cF412d970474804623bb4e3a42dE13F9bCa5436 gasUsed 24952 logs [] logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -root +root {} status 0 (failed) transactionHash 0x0e07d8b53ed3d91314c80e53cf25bcde02084939395845cbb625b029d568135c transactionIndex 173 type 2 -blobGasPrice -blobGasUsed +blobGasPrice {} +blobGasUsed {} to 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45 revertReason [..]Transaction too old, data: "0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000135472616e73616374696f6e20746f6f206f6c6400000000000000000000000000" - -"#]]); +"#,"","","","")); }); - // tests that the revert reason is loaded using the correct `from` address. casttest!(revert_reason_from, |_prj, cmd| { let rpc = next_rpc_endpoint(NamedChain::Sepolia); @@ -1400,28 +1395,26 @@ casttest!(revert_reason_from, |_prj, cmd| { rpc.as_str(), ]) .assert_success() - .stdout_eq(str![[r#" - + .stdout_eq(format!(r#" blockHash 0x32663d7730c9ea8e1de6d99854483e25fcc05bb56c91c0cc82f9f04944fbffc1 blockNumber 7823353 -contractAddress +contractAddress {} cumulativeGasUsed 7500797 effectiveGasPrice 14296851013 from 0x3583fF95f96b356d716881C871aF7Eb55ea34a93 gasUsed 25815 logs [] logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -root +root {} status 0 (failed) transactionHash 0x10ee70cf9f5ced5c515e8d53bfab5ea9f5c72cd61b25fba455c8355ee286c4e4 transactionIndex 96 type 0 -blobGasPrice -blobGasUsed +blobGasPrice {} +blobGasUsed {} to 0x91b5d4111a4C038153b24e31F75ccdC47123595d revertReason Counter is too large, data: "0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000014436f756e74657220697320746f6f206c61726765000000000000000000000000" - -"#]]); +"#, "", "", "", "")); }); // tests that `cast --parse-bytes32-address` command is working correctly.