use reth_primitives::{Request, U256}; use revm::db::BundleState; /// A helper type for ethereum block inputs that consists of a block and the total difficulty. #[derive(Debug)] pub struct BlockExecutionInput<'a, Block> { /// The block to execute. pub block: &'a Block, /// The total difficulty of the block. pub total_difficulty: U256, } impl<'a, Block> BlockExecutionInput<'a, Block> { /// Creates a new input. pub const fn new(block: &'a Block, total_difficulty: U256) -> Self { Self { block, total_difficulty } } } impl<'a, Block> From<(&'a Block, U256)> for BlockExecutionInput<'a, Block> { fn from((block, total_difficulty): (&'a Block, U256)) -> Self { Self::new(block, total_difficulty) } } /// The output of an ethereum block. /// /// Contains the state changes, transaction receipts, and total gas used in the block. /// /// TODO(mattsse): combine with `ExecutionOutcome` #[derive(Debug, Clone, PartialEq, Eq)] pub struct BlockExecutionOutput { /// The changed state of the block after execution. pub state: BundleState, /// All the receipts of the transactions in the block. pub receipts: Vec, /// All the EIP-7685 requests of the transactions in the block. pub requests: Vec, /// The total gas used by the block. pub gas_used: u64, }