From dd77f84ce0fdef2df4c9ef194a4b2b9ce48b1417 Mon Sep 17 00:00:00 2001 From: Ayushdubey86 Date: Wed, 10 Sep 2025 01:46:39 +0530 Subject: [PATCH 1/2] chore:replacing DepoRec with opAlloy --- crates/anvil/core/src/eth/transaction/mod.rs | 67 ++++++++++---------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index b07c5070e4356..f94efe1cbc794 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -1,25 +1,25 @@ //! Transaction related types use alloy_consensus::{ - Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, TxEip2930, - TxEnvelope, TxLegacy, TxReceipt, Typed2718, transaction::{ - Recovered, TxEip7702, eip4844::{TxEip4844, TxEip4844Variant, TxEip4844WithSidecar}, + Recovered, TxEip7702, }, + Receipt, ReceiptEnvelope, ReceiptWithBloom, Signed, Transaction, TxEip1559, TxEip2930, + TxEnvelope, TxLegacy, TxReceipt, Typed2718, }; use alloy_eips::eip2718::{Decodable2718, Eip2718Error, Encodable2718}; use alloy_network::{AnyReceiptEnvelope, AnyRpcTransaction, AnyTransactionReceipt, AnyTxEnvelope}; -use alloy_primitives::{Address, B256, Bloom, Bytes, Log, Signature, TxHash, TxKind, U64, U256}; -use alloy_rlp::{Decodable, Encodable, Header, length_of_length}; +use alloy_primitives::{Address, Bloom, Bytes, Log, Signature, TxHash, TxKind, B256, U256, U64}; +use alloy_rlp::{length_of_length, Decodable, Encodable, Header}; use alloy_rpc_types::{ - AccessList, ConversionError, Transaction as RpcTransaction, TransactionReceipt, - request::TransactionRequest, trace::otterscan::OtsReceipt, + request::TransactionRequest, trace::otterscan::OtsReceipt, AccessList, ConversionError, + Transaction as RpcTransaction, TransactionReceipt, }; use alloy_serde::{OtherFields, WithOtherFields}; use bytes::BufMut; use foundry_evm::traces::CallTraceNode; -use op_alloy_consensus::{DEPOSIT_TX_TYPE_ID, TxDeposit}; -use op_revm::{OpTransaction, transaction::deposit::DepositTransactionParts}; +use op_alloy_consensus::{OpDepositReceipt, TxDeposit, DEPOSIT_TX_TYPE_ID}; +use op_revm::{transaction::deposit::DepositTransactionParts, OpTransaction}; use revm::{context::TxEnv, interpreter::InstructionResult}; use serde::{Deserialize, Serialize}; use std::ops::{Deref, Mul}; @@ -1094,16 +1094,9 @@ pub struct TransactionInfo { pub gas_used: u64, } -#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct DepositReceipt> { - #[serde(flatten)] - pub inner: ReceiptWithBloom, - #[serde(default, with = "alloy_serde::quantity::opt")] - pub deposit_nonce: Option, - #[serde(default, with = "alloy_serde::quantity::opt")] - pub deposit_receipt_version: Option, -} +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[serde(transparent)] +pub struct DepositReceipt(pub OpDepositReceipt); impl DepositReceipt { fn payload_len(&self) -> usize { @@ -1153,7 +1146,7 @@ impl DepositReceipt { let deposit_nonce_version = remaining(b).then(|| alloy_rlp::Decodable::decode(b)).transpose()?; - let this = Self { + let op_receipt = OpDepositReceipt { inner: ReceiptWithBloom { receipt: Receipt { status, cumulative_gas_used, logs }, logs_bloom, @@ -1161,6 +1154,7 @@ impl DepositReceipt { deposit_nonce, deposit_receipt_version: deposit_nonce_version, }; + let this = DepositReceipt(op_receipt); let consumed = started_len - b.len(); if consumed != rlp_head.payload_length { @@ -1478,19 +1472,24 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option TypedReceipt::EIP1559(receipt_with_bloom), 0x03 => TypedReceipt::EIP4844(receipt_with_bloom), 0x04 => TypedReceipt::EIP7702(receipt_with_bloom), - 0x7E => TypedReceipt::Deposit(DepositReceipt { - inner: receipt_with_bloom, - deposit_nonce: other - .get_deserialized::("depositNonce") - .transpose() - .ok()? - .map(|v| v.to()), - deposit_receipt_version: other - .get_deserialized::("depositReceiptVersion") - .transpose() - .ok()? - .map(|v| v.to()), - }), + 0x7E => { + let op_receipt = OpDepositReceipt { + inner: receipt_with_bloom, + deposit_nonce: other + .get_deserialized::("depositNonce") + .transpose() + .ok()? + .map(|v| v.to()), + deposit_receipt_version: other + .get_deserialized::("depositReceiptVersion") + .transpose() + .ok()? + .map(|v| v.to()), + }; + + TypedReceipt::Deposit(DepositReceipt(op_receipt)) + } + _ => return None, }, }) @@ -1499,7 +1498,7 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option From 7ec3e1f6394308737d987a1838aa25b250f18a3d Mon Sep 17 00:00:00 2001 From: Ayushdubey86 Date: Thu, 11 Sep 2025 20:31:35 +0530 Subject: [PATCH 2/2] solving pipeline issue --- crates/anvil/core/src/eth/transaction/mod.rs | 42 ++++++++++---------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/crates/anvil/core/src/eth/transaction/mod.rs b/crates/anvil/core/src/eth/transaction/mod.rs index f94efe1cbc794..b59567c440505 100644 --- a/crates/anvil/core/src/eth/transaction/mod.rs +++ b/crates/anvil/core/src/eth/transaction/mod.rs @@ -18,7 +18,9 @@ use alloy_rpc_types::{ use alloy_serde::{OtherFields, WithOtherFields}; use bytes::BufMut; use foundry_evm::traces::CallTraceNode; -use op_alloy_consensus::{OpDepositReceipt, TxDeposit, DEPOSIT_TX_TYPE_ID}; +use op_alloy_consensus::{ + OpDepositReceipt, OpDepositReceiptWithBloom, TxDeposit, DEPOSIT_TX_TYPE_ID, +}; use op_revm::{transaction::deposit::DepositTransactionParts, OpTransaction}; use revm::{context::TxEnv, interpreter::InstructionResult}; use serde::{Deserialize, Serialize}; @@ -1100,12 +1102,11 @@ pub struct DepositReceipt(pub OpDepositReceipt); impl DepositReceipt { fn payload_len(&self) -> usize { - self.inner.receipt.status.length() - + self.inner.receipt.cumulative_gas_used.length() - + self.inner.logs_bloom.length() - + self.inner.receipt.logs.length() - + self.deposit_nonce.map_or(0, |n| n.length()) - + self.deposit_receipt_version.map_or(0, |n| n.length()) + self.0.inner.status.length() + + self.0.inner.cumulative_gas_used.length() + + self.0.inner.logs.length() + + self.0.deposit_nonce.map_or(0, |n| n.length()) + + self.0.deposit_receipt_version.map_or(0, |n| n.length()) } /// Returns the rlp header for the receipt payload. @@ -1116,14 +1117,14 @@ impl DepositReceipt { /// Encodes the receipt data. fn encode_fields(&self, out: &mut dyn BufMut) { self.receipt_rlp_header().encode(out); - self.inner.status().encode(out); - self.inner.receipt.cumulative_gas_used.encode(out); - self.inner.logs_bloom.encode(out); - self.inner.receipt.logs.encode(out); - if let Some(n) = self.deposit_nonce { + self.0.inner.status().encode(out); + self.0.inner.cumulative_gas_used.encode(out); + self.0.inner.logs.encode(out); + + if let Some(n) = self.0.deposit_nonce { n.encode(out); } - if let Some(n) = self.deposit_receipt_version { + if let Some(n) = self.0.deposit_receipt_version { n.encode(out); } } @@ -1140,22 +1141,19 @@ impl DepositReceipt { let status = Decodable::decode(b)?; let cumulative_gas_used = Decodable::decode(b)?; - let logs_bloom = Decodable::decode(b)?; + // let logs_bloom = Decodable::decode(b)?; let logs: Vec = Decodable::decode(b)?; let deposit_nonce = remaining(b).then(|| alloy_rlp::Decodable::decode(b)).transpose()?; let deposit_nonce_version = remaining(b).then(|| alloy_rlp::Decodable::decode(b)).transpose()?; let op_receipt = OpDepositReceipt { - inner: ReceiptWithBloom { - receipt: Receipt { status, cumulative_gas_used, logs }, - logs_bloom, - }, + inner: Receipt { status, cumulative_gas_used, logs }, deposit_nonce, deposit_receipt_version: deposit_nonce_version, }; - let this = DepositReceipt(op_receipt); + let this = DepositReceipt(op_receipt); let consumed = started_len - b.len(); if consumed != rlp_head.payload_length { return Err(alloy_rlp::Error::ListLengthMismatch { @@ -1200,7 +1198,7 @@ pub enum TypedReceipt> { #[serde(rename = "0x4", alias = "0x04")] EIP7702(ReceiptWithBloom), #[serde(rename = "0x7E", alias = "0x7e")] - Deposit(DepositReceipt), + Deposit(DepositReceipt), } impl TypedReceipt { @@ -1473,8 +1471,8 @@ pub fn convert_to_anvil_receipt(receipt: AnyTransactionReceipt) -> Option TypedReceipt::EIP4844(receipt_with_bloom), 0x04 => TypedReceipt::EIP7702(receipt_with_bloom), 0x7E => { - let op_receipt = OpDepositReceipt { - inner: receipt_with_bloom, + let op_receipt = OpDepositReceipt:: { + inner: receipt_with_bloom.receipt, deposit_nonce: other .get_deserialized::("depositNonce") .transpose()