Skip to main content

reth_engine_tree/tree/
types.rs

1//! Shared types for blockchain tree validation.
2
3use crate::tree::error::InsertPayloadError;
4use reth_chain_state::{ExecutedBlock, ExecutionTimingStats};
5use reth_primitives_traits::{BlockTy, NodePrimitives};
6
7/// Result of block or payload validation.
8pub type ValidationOutcome<N, E = InsertPayloadError<BlockTy<N>>> = Result<ValidationOutput<N>, E>;
9
10/// Result type for block validation with optional timing stats.
11pub(crate) type InsertPayloadResult<N> =
12    Result<ValidationOutput<N>, InsertPayloadError<<N as NodePrimitives>::Block>>;
13
14/// Output of block or payload validation.
15#[derive(Clone, Debug)]
16pub struct ValidationOutput<N: NodePrimitives> {
17    /// The executed block produced by validation.
18    pub executed_block: ExecutedBlock<N>,
19    /// Optional execution timing stats collected during validation.
20    pub execution_timing_stats: Option<Box<ExecutionTimingStats>>,
21}
22
23impl<N: NodePrimitives> ValidationOutput<N> {
24    /// Creates a new validation output.
25    pub const fn new(
26        executed_block: ExecutedBlock<N>,
27        execution_timing_stats: Option<Box<ExecutionTimingStats>>,
28    ) -> Self {
29        Self { executed_block, execution_timing_stats }
30    }
31}