Skip to content

Commit

Permalink
feat: consensus tx receipt abstracted methods
Browse files Browse the repository at this point in the history
  • Loading branch information
rkdud007 committed Apr 17, 2024
1 parent 4abb4f6 commit 3dcc33c
Showing 1 changed file with 49 additions and 1 deletion.
50 changes: 49 additions & 1 deletion src/tx_receipt.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,62 @@
use crate::Error;
use alloy_consensus::{Receipt, ReceiptWithBloom};
use alloy_consensus::{ReceiptEnvelope, TxType};

use alloy_eips::eip2718::Decodable2718;
use alloy_network::eip2718::Encodable2718;
use alloy_primitives::U64;
use alloy_primitives::{Bloom, Log, LogData, U8};
use alloy_rpc_types::{Log as RpcLog, TransactionReceipt};

#[derive(Debug, Clone)]
pub struct ConsensusTxReceipt(pub ReceiptEnvelope);

impl ConsensusTxReceipt {
pub fn rlp_encode(&self) -> Vec<u8> {
self.0.encoded_2718()
}

pub fn rlp_decode(mut data: &[u8]) -> Result<Self, Error> {
let envelope = ReceiptEnvelope::decode_2718(&mut data).map_err(Error::Rlp)?;
Ok(ConsensusTxReceipt(envelope))
}

pub fn success(&self) -> bool {
match &self.0 {
ReceiptEnvelope::Legacy(receipt) => receipt.receipt.success,
ReceiptEnvelope::Eip2930(receipt) => receipt.receipt.success,
ReceiptEnvelope::Eip1559(receipt) => receipt.receipt.success,
ReceiptEnvelope::Eip4844(receipt) => receipt.receipt.success,
}
}

pub fn cumulative_gas_used(&self) -> u64 {
match &self.0 {
ReceiptEnvelope::Legacy(receipt) => receipt.receipt.cumulative_gas_used,
ReceiptEnvelope::Eip2930(receipt) => receipt.receipt.cumulative_gas_used,
ReceiptEnvelope::Eip1559(receipt) => receipt.receipt.cumulative_gas_used,
ReceiptEnvelope::Eip4844(receipt) => receipt.receipt.cumulative_gas_used,
}
}

pub fn logs(&self) -> Vec<Log<LogData>> {
match &self.0 {
ReceiptEnvelope::Legacy(receipt) => receipt.receipt.logs.clone(),
ReceiptEnvelope::Eip2930(receipt) => receipt.receipt.logs.clone(),
ReceiptEnvelope::Eip1559(receipt) => receipt.receipt.logs.clone(),
ReceiptEnvelope::Eip4844(receipt) => receipt.receipt.logs.clone(),
}
}

pub fn bloom(&self) -> Bloom {
match &self.0 {
ReceiptEnvelope::Legacy(receipt) => receipt.bloom,
ReceiptEnvelope::Eip2930(receipt) => receipt.bloom,
ReceiptEnvelope::Eip1559(receipt) => receipt.bloom,
ReceiptEnvelope::Eip4844(receipt) => receipt.bloom,
}
}
}

#[derive(Debug, Clone)]
pub(crate) struct RpcTxReceipt(pub TransactionReceipt);

Expand Down

0 comments on commit 3dcc33c

Please sign in to comment.