reth_engine_tree/tree/
types.rs1use crate::tree::{error::InsertPayloadError, payload_processor::reuse::PoolSeeds};
4use alloy_eip7928::bal::DecodedBal;
5use alloy_eips::eip4895::Withdrawal;
6use alloy_primitives::B256;
7use reth_chain_state::{ExecutedBlock, ExecutionTimingStats};
8use reth_evm::{ConfigureEvm, EvmEnvFor, HaltReasonFor};
9use reth_execution_cache::TxPoolPrewarmCacheSnapshot;
10use reth_primitives_traits::{BlockTy, NodePrimitives};
11use std::sync::Arc;
12
13#[derive(Debug, Clone)]
15pub struct ExecutionEnv<Evm: ConfigureEvm> {
16 pub evm_env: EvmEnvFor<Evm>,
18 pub hash: B256,
20 pub parent_hash: B256,
22 pub parent_state_root: B256,
24 pub transaction_count: usize,
27 pub gas_used: u64,
30 pub withdrawals: Option<Vec<Withdrawal>>,
33 pub decoded_bal: Option<Arc<DecodedBal>>,
36 pub txpool_snapshot: Option<TxPoolPrewarmCacheSnapshot>,
40 pub(crate) pool_seeds: Option<PoolSeeds<HaltReasonFor<Evm>>>,
46}
47
48impl<Evm: ConfigureEvm> ExecutionEnv<Evm>
49where
50 EvmEnvFor<Evm>: Default,
51{
52 #[cfg(any(test, feature = "test-utils"))]
54 pub fn test_default() -> Self {
55 Self {
56 evm_env: Default::default(),
57 hash: Default::default(),
58 parent_hash: Default::default(),
59 parent_state_root: Default::default(),
60 transaction_count: 0,
61 gas_used: 0,
62 withdrawals: None,
63 decoded_bal: None,
64 txpool_snapshot: None,
65 pool_seeds: None,
66 }
67 }
68}
69
70pub type ValidationOutcome<N, E = InsertPayloadError<BlockTy<N>>> = Result<ValidationOutput<N>, E>;
72
73pub(crate) type InsertPayloadResult<N> =
75 Result<ValidationOutput<N>, InsertPayloadError<<N as NodePrimitives>::Block>>;
76
77#[derive(Clone, Debug)]
79pub struct ValidationOutput<N: NodePrimitives> {
80 pub executed_block: ExecutedBlock<N>,
82 pub execution_timing_stats: Option<Box<ExecutionTimingStats>>,
84}
85
86impl<N: NodePrimitives> ValidationOutput<N> {
87 pub const fn new(
89 executed_block: ExecutedBlock<N>,
90 execution_timing_stats: Option<Box<ExecutionTimingStats>>,
91 ) -> Self {
92 Self { executed_block, execution_timing_stats }
93 }
94}