revm_handler/
mainnet_handler.rs

1use super::{EvmTrError, Handler};
2use crate::{evm::FrameTr, EvmTr, FrameResult};
3use context_interface::{result::HaltReason, ContextTr, JournalTr};
4use interpreter::interpreter_action::FrameInit;
5use state::EvmState;
6
7/// Mainnet handler that implements the default [`Handler`] trait for the Evm.
8#[derive(Debug, Clone)]
9pub struct MainnetHandler<CTX, ERROR, FRAME> {
10    /// Phantom data to hold the generic type parameters.
11    pub _phantom: core::marker::PhantomData<(CTX, ERROR, FRAME)>,
12}
13
14impl<EVM, ERROR, FRAME> Handler for MainnetHandler<EVM, ERROR, FRAME>
15where
16    EVM: EvmTr<Context: ContextTr<Journal: JournalTr<State = EvmState>>, Frame = FRAME>,
17    ERROR: EvmTrError<EVM>,
18    // TODO `FrameResult` should be a generic trait.
19    // TODO `FrameInit` should be a generic.
20    FRAME: FrameTr<FrameResult = FrameResult, FrameInit = FrameInit>,
21{
22    type Evm = EVM;
23    type Error = ERROR;
24    type HaltReason = HaltReason;
25}
26
27impl<CTX, ERROR, FRAME> Default for MainnetHandler<CTX, ERROR, FRAME> {
28    fn default() -> Self {
29        Self {
30            _phantom: core::marker::PhantomData,
31        }
32    }
33}