reth_evm_ethereum/
receipt.rs

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