reth_seismic_evm/
receipts.rs1use alloy_consensus::{Eip658Value, Receipt};
2use alloy_evm::eth::receipt_builder::{ReceiptBuilder, ReceiptBuilderCtx};
3use reth_evm::Evm;
4use reth_seismic_primitives::{SeismicReceipt, SeismicTransactionSigned};
5use seismic_alloy_consensus::SeismicTxType;
6
7#[derive(Debug, Default, Clone, Copy)]
12#[non_exhaustive]
13pub struct SeismicRethReceiptBuilder;
14
15impl ReceiptBuilder for SeismicRethReceiptBuilder {
16 type Transaction = SeismicTransactionSigned;
17 type Receipt = SeismicReceipt;
18
19 fn build_receipt<E: Evm>(
20 &self,
21 ctx: ReceiptBuilderCtx<'_, SeismicTransactionSigned, E>,
22 ) -> Self::Receipt {
23 match ctx.tx.tx_type() {
24 ty => {
25 let receipt = Receipt {
26 status: Eip658Value::Eip658(ctx.result.is_success()),
27 cumulative_gas_used: ctx.cumulative_gas_used,
28 logs: ctx.result.into_logs(),
29 };
30
31 match ty {
32 SeismicTxType::Legacy => SeismicReceipt::Legacy(receipt),
33 SeismicTxType::Eip1559 => SeismicReceipt::Eip1559(receipt),
34 SeismicTxType::Eip2930 => SeismicReceipt::Eip2930(receipt),
35 SeismicTxType::Eip4844 => SeismicReceipt::Eip4844(receipt),
36 SeismicTxType::Eip7702 => SeismicReceipt::Eip7702(receipt),
37 SeismicTxType::Seismic => SeismicReceipt::Seismic(receipt),
38 }
39 }
40 }
41 }
42}