Trait Handler

Source
pub trait Handler {
    type Evm: EvmTr<Context: ContextTr<Journal: Journal<FinalOutput = (EvmState, Vec<Log>)>>>;
    type Error: EvmTrError<Self::Evm>;
    type Frame: Frame<Evm = Self::Evm, Error = Self::Error, FrameResult = FrameResult, FrameInit = FrameInput>;
    type HaltReason: HaltReasonTr;

Show 25 methods // Provided methods fn run( &mut self, evm: &mut Self::Evm, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error> { ... } fn validate( &self, evm: &mut Self::Evm, ) -> Result<InitialAndFloorGas, Self::Error> { ... } fn pre_execution(&self, evm: &mut Self::Evm) -> Result<u64, Self::Error> { ... } fn execution( &mut self, evm: &mut Self::Evm, init_and_floor_gas: &InitialAndFloorGas, ) -> Result<FrameResult, Self::Error> { ... } fn post_execution( &self, evm: &mut Self::Evm, exec_result: FrameResult, init_and_floor_gas: InitialAndFloorGas, eip7702_gas_refund: i64, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error> { ... } fn validate_env(&self, evm: &mut Self::Evm) -> Result<(), Self::Error> { ... } fn validate_tx_against_state( &self, evm: &mut Self::Evm, ) -> Result<(), Self::Error> { ... } fn validate_initial_tx_gas( &self, evm: &Self::Evm, ) -> Result<InitialAndFloorGas, Self::Error> { ... } fn load_accounts(&self, evm: &mut Self::Evm) -> Result<(), Self::Error> { ... } fn apply_eip7702_auth_list( &self, evm: &mut Self::Evm, ) -> Result<u64, Self::Error> { ... } fn deduct_caller(&self, evm: &mut Self::Evm) -> Result<(), Self::Error> { ... } fn create_first_frame( &mut self, evm: &mut Self::Evm, gas_limit: u64, ) -> Result<FrameOrResult<Self::Frame>, Self::Error> { ... } fn last_frame_result( &self, evm: &mut Self::Evm, frame_result: &mut <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error> { ... } fn frame_init_first( &mut self, evm: &mut Self::Evm, frame_input: <Self::Frame as Frame>::FrameInit, ) -> Result<FrameOrResult<Self::Frame>, Self::Error> { ... } fn frame_init( &mut self, frame: &Self::Frame, evm: &mut Self::Evm, frame_input: <Self::Frame as Frame>::FrameInit, ) -> Result<FrameOrResult<Self::Frame>, Self::Error> { ... } fn frame_call( &mut self, frame: &mut Self::Frame, evm: &mut Self::Evm, ) -> Result<FrameInitOrResult<Self::Frame>, Self::Error> { ... } fn frame_return_result( &mut self, frame: &mut Self::Frame, evm: &mut Self::Evm, result: <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error> { ... } fn run_exec_loop( &mut self, evm: &mut Self::Evm, frame: Self::Frame, ) -> Result<FrameResult, Self::Error> { ... } fn eip7623_check_gas_floor( &self, _evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, init_and_floor_gas: InitialAndFloorGas, ) { ... } fn refund( &self, evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, eip7702_refund: i64, ) { ... } fn reimburse_caller( &self, evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error> { ... } fn reward_beneficiary( &self, evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error> { ... } fn output( &self, evm: &mut Self::Evm, result: <Self::Frame as Frame>::FrameResult, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error> { ... } fn end( &self, _evm: &mut Self::Evm, end_output: Result<ResultAndState<Self::HaltReason>, Self::Error>, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error> { ... } fn clear(&self, evm: &mut Self::Evm) { ... }
}

Required Associated Types§

Source

type Evm: EvmTr<Context: ContextTr<Journal: Journal<FinalOutput = (EvmState, Vec<Log>)>>>

Source

type Error: EvmTrError<Self::Evm>

Source

type Frame: Frame<Evm = Self::Evm, Error = Self::Error, FrameResult = FrameResult, FrameInit = FrameInput>

Source

type HaltReason: HaltReasonTr

Provided Methods§

Source

fn run( &mut self, evm: &mut Self::Evm, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error>

Source

fn validate( &self, evm: &mut Self::Evm, ) -> Result<InitialAndFloorGas, Self::Error>

Call all validation functions

Source

fn pre_execution(&self, evm: &mut Self::Evm) -> Result<u64, Self::Error>

Call all Pre execution functions.

Source

fn execution( &mut self, evm: &mut Self::Evm, init_and_floor_gas: &InitialAndFloorGas, ) -> Result<FrameResult, Self::Error>

Source

fn post_execution( &self, evm: &mut Self::Evm, exec_result: FrameResult, init_and_floor_gas: InitialAndFloorGas, eip7702_gas_refund: i64, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error>

Source

fn validate_env(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>

Validate env.

Source

fn validate_tx_against_state( &self, evm: &mut Self::Evm, ) -> Result<(), Self::Error>

Validate transactions against state.

Source

fn validate_initial_tx_gas( &self, evm: &Self::Evm, ) -> Result<InitialAndFloorGas, Self::Error>

Validate initial gas.

Source

fn load_accounts(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>

Source

fn apply_eip7702_auth_list( &self, evm: &mut Self::Evm, ) -> Result<u64, Self::Error>

Source

fn deduct_caller(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>

Source

fn create_first_frame( &mut self, evm: &mut Self::Evm, gas_limit: u64, ) -> Result<FrameOrResult<Self::Frame>, Self::Error>

Source

fn last_frame_result( &self, evm: &mut Self::Evm, frame_result: &mut <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error>

Source

fn frame_init_first( &mut self, evm: &mut Self::Evm, frame_input: <Self::Frame as Frame>::FrameInit, ) -> Result<FrameOrResult<Self::Frame>, Self::Error>

Source

fn frame_init( &mut self, frame: &Self::Frame, evm: &mut Self::Evm, frame_input: <Self::Frame as Frame>::FrameInit, ) -> Result<FrameOrResult<Self::Frame>, Self::Error>

Source

fn frame_call( &mut self, frame: &mut Self::Frame, evm: &mut Self::Evm, ) -> Result<FrameInitOrResult<Self::Frame>, Self::Error>

Source

fn frame_return_result( &mut self, frame: &mut Self::Frame, evm: &mut Self::Evm, result: <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error>

Source

fn run_exec_loop( &mut self, evm: &mut Self::Evm, frame: Self::Frame, ) -> Result<FrameResult, Self::Error>

Source

fn eip7623_check_gas_floor( &self, _evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, init_and_floor_gas: InitialAndFloorGas, )

Calculate final refund.

Source

fn refund( &self, evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, eip7702_refund: i64, )

Calculate final refund.

Source

fn reimburse_caller( &self, evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error>

Reimburse the caller with balance it didn’t spent.

Source

fn reward_beneficiary( &self, evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error>

Reward beneficiary with transaction rewards.

Source

fn output( &self, evm: &mut Self::Evm, result: <Self::Frame as Frame>::FrameResult, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error>

Main return handle, takes state from journal and transforms internal result to output.

Source

fn end( &self, _evm: &mut Self::Evm, end_output: Result<ResultAndState<Self::HaltReason>, Self::Error>, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error>

Called when execution ends.

End handle in comparison to output handle will be called every time after execution.

While output will be omitted in case of the error.

Source

fn clear(&self, evm: &mut Self::Evm)

Clean handler. It resets internal Journal state to default one.

This handle is called every time regardless of the result of the transaction.

Implementors§

Source§

impl<EVM, ERROR, FRAME> Handler for MainnetHandler<EVM, ERROR, FRAME>
where EVM: EvmTr<Context: ContextTr<Journal: Journal<FinalOutput = (EvmState, Vec<Log>)>>>, ERROR: EvmTrError<EVM>, FRAME: Frame<Evm = EVM, Error = ERROR, FrameResult = FrameResult, FrameInit = FrameInput>,

Source§

type Evm = EVM

Source§

type Error = ERROR

Source§

type Frame = FRAME

Source§

type HaltReason = HaltReason