reth_engine_tree/tree/
types.rs1use crate::tree::error::InsertPayloadError;
4use alloy_eip7928::bal::{DecodedBal, RawBal};
5use alloy_eips::eip4895::Withdrawal;
6use alloy_primitives::B256;
7use reth_chain_state::{ExecutedBlock, ExecutionTimingStats};
8use reth_evm::{ConfigureEvm, EvmEnvFor};
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,
26 pub transaction_count: usize,
29 pub gas_used: u64,
32 pub withdrawals: Option<Vec<Withdrawal>>,
35 pub decoded_bal: Option<Arc<DecodedBal>>,
38 pub txpool_snapshot: Option<TxPoolPrewarmCacheSnapshot>,
42}
43
44impl<Evm: ConfigureEvm> ExecutionEnv<Evm>
45where
46 EvmEnvFor<Evm>: Default,
47{
48 #[cfg(any(test, feature = "test-utils"))]
50 pub fn test_default() -> Self {
51 Self {
52 evm_env: Default::default(),
53 hash: Default::default(),
54 parent_hash: Default::default(),
55 parent_state_root: Default::default(),
56 transaction_count: 0,
57 gas_used: 0,
58 withdrawals: None,
59 decoded_bal: None,
60 txpool_snapshot: None,
61 }
62 }
63}
64
65pub type ValidationOutcome<N, E = InsertPayloadError<BlockTy<N>>> = Result<ValidationOutput<N>, E>;
67
68pub(crate) type InsertPayloadResult<N> =
70 Result<ValidationOutput<N>, InsertPayloadError<<N as NodePrimitives>::Block>>;
71
72#[derive(Clone, Debug)]
74pub struct ValidationOutput<N: NodePrimitives> {
75 pub executed_block: ExecutedBlock<N>,
77 pub execution_timing_stats: Option<Box<ExecutionTimingStats>>,
79 pub raw_bal: Option<RawBal>,
81}
82
83impl<N: NodePrimitives> ValidationOutput<N> {
84 pub const fn new(
86 executed_block: ExecutedBlock<N>,
87 execution_timing_stats: Option<Box<ExecutionTimingStats>>,
88 ) -> Self {
89 Self { executed_block, execution_timing_stats, raw_bal: None }
90 }
91
92 pub fn with_raw_bal(mut self, raw_bal: Option<RawBal>) -> Self {
94 self.raw_bal = raw_bal;
95 self
96 }
97}