From bd42484b3aa0667599e1c2bd03f6af0e34aba5b8 Mon Sep 17 00:00:00 2001 From: Mablr <59505383+mablr@users.noreply.github.com> Date: Fri, 21 Nov 2025 22:23:42 +0100 Subject: [PATCH 1/3] refactor(anvil): remove `TypedTransaction::essentials()` method --- crates/anvil/core/src/eth/transaction/mod.rs | 90 -------------------- crates/anvil/src/eth/backend/mem/mod.rs | 6 +- 2 files changed, 3 insertions(+), 93 deletions(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 2692c96815e36..8f209d9b7584c 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -492,96 +492,6 @@ impl TypedTransaction { } } - /// Returns a helper type that contains commonly used values as fields - pub fn essentials(&self) -> TransactionEssentials { - match self { - Self::Legacy(t) => TransactionEssentials { - kind: t.tx().to, - input: t.tx().input.clone(), - nonce: t.tx().nonce, - gas_limit: t.tx().gas_limit, - gas_price: Some(t.tx().gas_price), - max_fee_per_gas: None, - max_priority_fee_per_gas: None, - max_fee_per_blob_gas: None, - blob_versioned_hashes: None, - value: t.tx().value, - chain_id: t.tx().chain_id, - access_list: Default::default(), - }, - Self::EIP2930(t) => TransactionEssentials { - kind: t.tx().to, - input: t.tx().input.clone(), - nonce: t.tx().nonce, - gas_limit: t.tx().gas_limit, - gas_price: Some(t.tx().gas_price), - max_fee_per_gas: None, - max_priority_fee_per_gas: None, - max_fee_per_blob_gas: None, - blob_versioned_hashes: None, - value: t.tx().value, - chain_id: Some(t.tx().chain_id), - access_list: t.tx().access_list.clone(), - }, - Self::EIP1559(t) => TransactionEssentials { - kind: t.tx().to, - input: t.tx().input.clone(), - nonce: t.tx().nonce, - gas_limit: t.tx().gas_limit, - gas_price: None, - max_fee_per_gas: Some(t.tx().max_fee_per_gas), - max_priority_fee_per_gas: Some(t.tx().max_priority_fee_per_gas), - max_fee_per_blob_gas: None, - blob_versioned_hashes: None, - value: t.tx().value, - chain_id: Some(t.tx().chain_id), - access_list: t.tx().access_list.clone(), - }, - Self::EIP4844(t) => TransactionEssentials { - kind: TxKind::Call(t.tx().tx().to), - input: t.tx().tx().input.clone(), - nonce: t.tx().tx().nonce, - gas_limit: t.tx().tx().gas_limit, - gas_price: None, - max_fee_per_gas: Some(t.tx().tx().max_fee_per_gas), - max_priority_fee_per_gas: Some(t.tx().tx().max_priority_fee_per_gas), - max_fee_per_blob_gas: Some(t.tx().tx().max_fee_per_blob_gas), - blob_versioned_hashes: Some(t.tx().tx().blob_versioned_hashes.clone()), - value: t.tx().tx().value, - chain_id: Some(t.tx().tx().chain_id), - access_list: t.tx().tx().access_list.clone(), - }, - Self::EIP7702(t) => TransactionEssentials { - kind: TxKind::Call(t.tx().to), - input: t.tx().input.clone(), - nonce: t.tx().nonce, - gas_limit: t.tx().gas_limit, - gas_price: None, - max_fee_per_gas: Some(t.tx().max_fee_per_gas), - max_priority_fee_per_gas: Some(t.tx().max_priority_fee_per_gas), - max_fee_per_blob_gas: None, - blob_versioned_hashes: None, - value: t.tx().value, - chain_id: Some(t.tx().chain_id), - access_list: t.tx().access_list.clone(), - }, - Self::Deposit(t) => TransactionEssentials { - kind: t.to, - input: t.input.clone(), - nonce: 0, - gas_limit: t.gas_limit, - gas_price: Some(0), - max_fee_per_gas: None, - max_priority_fee_per_gas: None, - max_fee_per_blob_gas: None, - blob_versioned_hashes: None, - value: t.value, - chain_id: t.chain_id(), - access_list: Default::default(), - }, - } - } - pub fn as_legacy(&self) -> Option<&Signed> { match self { Self::Legacy(tx) => Some(tx), diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index a86f1b00c5b7a..c4dd093b907ee 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -3752,8 +3752,8 @@ impl TransactionValidator for Backend { return Err(InvalidTransactionError::FeeCapTooLow); } - if let (Some(max_priority_fee_per_gas), Some(max_fee_per_gas)) = - (tx.essentials().max_priority_fee_per_gas, tx.essentials().max_fee_per_gas) + if let (Some(max_priority_fee_per_gas), max_fee_per_gas) = + (tx.as_ref().max_priority_fee_per_gas(), tx.as_ref().max_fee_per_gas()) && max_priority_fee_per_gas > max_fee_per_gas { warn!(target: "backend", "max priority fee per gas={}, too high, max fee per gas={}", max_priority_fee_per_gas, max_fee_per_gas); @@ -3764,7 +3764,7 @@ impl TransactionValidator for Backend { // EIP-4844 blob fee validation if env.evm_env.cfg_env.spec >= SpecId::CANCUN && tx.transaction.is_eip4844() - && let Some(max_fee_per_blob_gas) = tx.essentials().max_fee_per_blob_gas + && let Some(max_fee_per_blob_gas) = tx.as_ref().max_fee_per_blob_gas() && let Some(blob_gas_and_price) = &env.evm_env.block_env.blob_excess_gas_and_price && max_fee_per_blob_gas < blob_gas_and_price.blob_gasprice { From 7ea69dab0b44bf3f49e71385ccc7c1308e0747c0 Mon Sep 17 00:00:00 2001 From: Mablr <59505383+mablr@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:07:21 +0100 Subject: [PATCH 2/3] refactor(anvil): remove `TransactionEssentials` struct --- crates/anvil/core/src/eth/transaction/mod.rs | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index 8f209d9b7584c..c799834d726cf 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -537,22 +537,6 @@ impl TypedTransaction { } } -#[derive(Clone, Debug, PartialEq, Eq)] -pub struct TransactionEssentials { - pub kind: TxKind, - pub input: Bytes, - pub nonce: u64, - pub gas_limit: u64, - pub gas_price: Option, - pub max_fee_per_gas: Option, - pub max_priority_fee_per_gas: Option, - pub max_fee_per_blob_gas: Option, - pub blob_versioned_hashes: Option>, - pub value: U256, - pub chain_id: Option, - pub access_list: AccessList, -} - /// Represents all relevant information of an executed transaction #[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] pub struct TransactionInfo { From 519e2eb389bf4129c9789c799e714d330554c7f6 Mon Sep 17 00:00:00 2001 From: Mablr <59505383+mablr@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:29:52 +0100 Subject: [PATCH 3/3] fix: remove used import --- crates/anvil/core/src/eth/transaction/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index c799834d726cf..bbdd2d848886a 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -14,7 +14,7 @@ use alloy_network::{AnyReceiptEnvelope, AnyRpcTransaction, AnyTransactionReceipt use alloy_primitives::{Address, B256, Bloom, Bytes, TxHash, TxKind, U64, U256}; use alloy_rlp::{Decodable, Encodable, Header}; use alloy_rpc_types::{ - AccessList, ConversionError, Transaction as RpcTransaction, TransactionReceipt, + ConversionError, Transaction as RpcTransaction, TransactionReceipt, request::TransactionRequest, trace::otterscan::OtsReceipt, }; use alloy_serde::{OtherFields, WithOtherFields};