Skip to main content

reth_evm_ethereum/
receipt.rs

1use alloy_consensus::TxType;
2use alloy_evm::eth::receipt_builder::{ReceiptBuilder, ReceiptBuilderCtx};
3use reth_ethereum_primitives::{Receipt, TransactionSigned};
4use reth_evm::Evm;
5
6/// A builder that operates on Reth primitive types, specifically [`TransactionSigned`] and
7/// [`Receipt`].
8#[derive(Debug, Clone, Copy, Default)]
9#[non_exhaustive]
10pub struct RethReceiptBuilder;
11
12impl ReceiptBuilder for RethReceiptBuilder {
13    type Transaction = TransactionSigned;
14    type Receipt = Receipt;
15
16    fn build_receipt<E: Evm>(&self, ctx: ReceiptBuilderCtx<'_, TxType, E>) -> Self::Receipt {
17        let ReceiptBuilderCtx { tx_type, result, cumulative_gas_used, .. } = ctx;
18        Receipt {
19            tx_type,
20            // Success flag was added in `EIP-658: Embedding transaction status code in
21            // receipts`.
22            success: result.is_success(),
23            cumulative_gas_used,
24            logs: result.into_logs(),
25        }
26    }
27}