Skip to main content

reth_evm_ethereum/
receipt.rs

1use alloy_consensus::TxType;
2use evm2::{EvmTypes, TxResult};
3use reth_ethereum_primitives::{Receipt, TransactionSigned};
4use reth_evm::{ReceiptBuilder, ReceiptBuilderCtx};
5
6/// A builder that produces Reth [`Receipt`] values from evm2 transaction results.
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<T: EvmTypes>(&self, ctx: ReceiptBuilderCtx<TxType, TxResult<T>>) -> Receipt {
16        let ReceiptBuilderCtx { tx_type, result, cumulative_gas_used } = ctx;
17        Receipt {
18            tx_type,
19            // Success flag was added in `EIP-658: Embedding transaction status code in
20            // receipts`.
21            success: result.status,
22            cumulative_gas_used,
23            logs: result.logs,
24        }
25    }
26}