pub struct MainnetHandler<CTX, ERROR, FRAME> {
pub _phantom: PhantomData<(CTX, ERROR, FRAME)>,
}
Fields§
§_phantom: PhantomData<(CTX, ERROR, FRAME)>
Trait Implementations§
Source§impl<CTX, ERROR, FRAME> Default for MainnetHandler<CTX, ERROR, FRAME>
impl<CTX, ERROR, FRAME> Default for MainnetHandler<CTX, ERROR, FRAME>
Source§impl<EVM, ERROR, FRAME> Handler for MainnetHandler<EVM, ERROR, FRAME>where
EVM: EvmTr<Context: ContextTr<Journal: JournalTr<FinalOutput = JournalOutput>>>,
ERROR: EvmTrError<EVM>,
FRAME: Frame<Evm = EVM, Error = ERROR, FrameResult = FrameResult, FrameInit = FrameInput>,
impl<EVM, ERROR, FRAME> Handler for MainnetHandler<EVM, ERROR, FRAME>where
EVM: EvmTr<Context: ContextTr<Journal: JournalTr<FinalOutput = JournalOutput>>>,
ERROR: EvmTrError<EVM>,
FRAME: Frame<Evm = EVM, Error = ERROR, FrameResult = FrameResult, FrameInit = FrameInput>,
Source§type Frame = FRAME
type Frame = FRAME
The Frame type containing data for frame execution. Supports Call, Create and EofCreate frames.
Source§type HaltReason = HaltReason
type HaltReason = HaltReason
The halt reason type included in the output
Source§fn run(
&mut self,
evm: &mut Self::Evm,
) -> Result<ResultAndState<Self::HaltReason>, Self::Error>
fn run( &mut self, evm: &mut Self::Evm, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error>
The main entry point for transaction execution. Read more
Source§fn run_without_catch_error(
&mut self,
evm: &mut Self::Evm,
) -> Result<ResultAndState<Self::HaltReason>, Self::Error>
fn run_without_catch_error( &mut self, evm: &mut Self::Evm, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error>
Called by
Handler::run
to execute the core handler logic. Read moreSource§fn validate(
&self,
evm: &mut Self::Evm,
) -> Result<InitialAndFloorGas, Self::Error>
fn validate( &self, evm: &mut Self::Evm, ) -> Result<InitialAndFloorGas, Self::Error>
Validates the execution environment and transaction parameters. Read more
Source§fn pre_execution(&self, evm: &mut Self::Evm) -> Result<u64, Self::Error>
fn pre_execution(&self, evm: &mut Self::Evm) -> Result<u64, Self::Error>
Prepares the EVM state for execution. Read more
Source§fn execution(
&mut self,
evm: &mut Self::Evm,
init_and_floor_gas: &InitialAndFloorGas,
) -> Result<FrameResult, Self::Error>
fn execution( &mut self, evm: &mut Self::Evm, init_and_floor_gas: &InitialAndFloorGas, ) -> Result<FrameResult, Self::Error>
Creates and executes the initial frame, then processes the execution loop. Read more
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>
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>
Handles the final steps of transaction execution. Read more
Source§fn validate_env(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>
fn validate_env(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>
Validates block, transaction and configuration fields. Read more
Source§fn validate_initial_tx_gas(
&self,
evm: &Self::Evm,
) -> Result<InitialAndFloorGas, Self::Error>
fn validate_initial_tx_gas( &self, evm: &Self::Evm, ) -> Result<InitialAndFloorGas, Self::Error>
Calculates initial gas costs based on transaction type and input data. Read more
Source§fn validate_tx_against_state(
&self,
evm: &mut Self::Evm,
) -> Result<(), Self::Error>
fn validate_tx_against_state( &self, evm: &mut Self::Evm, ) -> Result<(), Self::Error>
Loads caller account to access nonce and balance. Read more
Source§fn load_accounts(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>
fn load_accounts(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>
Loads access list and beneficiary account, marking them as warm in the
context::Journal
.Source§fn apply_eip7702_auth_list(
&self,
evm: &mut Self::Evm,
) -> Result<u64, Self::Error>
fn apply_eip7702_auth_list( &self, evm: &mut Self::Evm, ) -> Result<u64, Self::Error>
Processes the authorization list, validating authority signatures, nonces and chain IDs.
Applies valid authorizations to accounts. Read more
Source§fn deduct_caller(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>
fn deduct_caller(&self, evm: &mut Self::Evm) -> Result<(), Self::Error>
Deducts maximum possible fee and transfer value from caller’s balance. Read more
Source§fn first_frame_input(
&mut self,
evm: &mut Self::Evm,
gas_limit: u64,
) -> Result<FrameInput, Self::Error>
fn first_frame_input( &mut self, evm: &mut Self::Evm, gas_limit: u64, ) -> Result<FrameInput, Self::Error>
Creates initial frame input using transaction parameters, gas limit and configuration.
Source§fn last_frame_result(
&self,
evm: &mut Self::Evm,
frame_result: &mut <Self::Frame as Frame>::FrameResult,
) -> Result<(), Self::Error>
fn last_frame_result( &self, evm: &mut Self::Evm, frame_result: &mut <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error>
Processes the result of the initial call and handles returned gas.
Source§fn first_frame_init(
&mut self,
evm: &mut Self::Evm,
frame_input: <Self::Frame as Frame>::FrameInit,
) -> Result<FrameOrResult<Self::Frame>, Self::Error>
fn first_frame_init( &mut self, evm: &mut Self::Evm, frame_input: <Self::Frame as Frame>::FrameInit, ) -> Result<FrameOrResult<Self::Frame>, Self::Error>
Initializes the first frame from the provided frame input.
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>
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>
Initializes a new frame from the provided frame input and previous frame. Read more
Source§fn frame_call(
&mut self,
frame: &mut Self::Frame,
evm: &mut Self::Evm,
) -> Result<FrameInitOrResult<Self::Frame>, Self::Error>
fn frame_call( &mut self, frame: &mut Self::Frame, evm: &mut Self::Evm, ) -> Result<FrameInitOrResult<Self::Frame>, Self::Error>
Executes a frame and returns either input for a new frame or the frame’s result. Read more
Source§fn frame_return_result(
&mut self,
frame: &mut Self::Frame,
evm: &mut Self::Evm,
result: <Self::Frame as Frame>::FrameResult,
) -> Result<(), 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>
Processes a frame’s result by inserting it into the parent frame.
Source§fn run_exec_loop(
&mut self,
evm: &mut Self::Evm,
frame: Self::Frame,
) -> Result<FrameResult, Self::Error>
fn run_exec_loop( &mut self, evm: &mut Self::Evm, frame: Self::Frame, ) -> Result<FrameResult, Self::Error>
Executes the main frame processing loop. Read more
Source§fn eip7623_check_gas_floor(
&self,
_evm: &mut Self::Evm,
exec_result: &mut <Self::Frame as Frame>::FrameResult,
init_and_floor_gas: InitialAndFloorGas,
)
fn eip7623_check_gas_floor( &self, _evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, init_and_floor_gas: InitialAndFloorGas, )
Validates that the minimum gas floor requirements are satisfied. Read more
Source§fn refund(
&self,
evm: &mut Self::Evm,
exec_result: &mut <Self::Frame as Frame>::FrameResult,
eip7702_refund: i64,
)
fn refund( &self, evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, eip7702_refund: i64, )
Calculates the final gas refund amount, including any EIP-7702 refunds.
Source§fn reimburse_caller(
&self,
evm: &mut Self::Evm,
exec_result: &mut <Self::Frame as Frame>::FrameResult,
) -> Result<(), Self::Error>
fn reimburse_caller( &self, evm: &mut Self::Evm, exec_result: &mut <Self::Frame as Frame>::FrameResult, ) -> Result<(), Self::Error>
Returns unused gas costs to the transaction sender’s account.
Source§fn reward_beneficiary(
&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>
Transfers transaction fees to the block beneficiary’s account.
Source§fn output(
&self,
evm: &mut Self::Evm,
result: <Self::Frame as Frame>::FrameResult,
) -> Result<ResultAndState<Self::HaltReason>, Self::Error>
fn output( &self, evm: &mut Self::Evm, result: <Self::Frame as Frame>::FrameResult, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error>
Processes the final execution output. Read more
Source§fn catch_error(
&self,
evm: &mut Self::Evm,
error: Self::Error,
) -> Result<ResultAndState<Self::HaltReason>, Self::Error>
fn catch_error( &self, evm: &mut Self::Evm, error: Self::Error, ) -> Result<ResultAndState<Self::HaltReason>, Self::Error>
Handles cleanup when an error occurs during execution. Read more
Auto Trait Implementations§
impl<CTX, ERROR, FRAME> Freeze for MainnetHandler<CTX, ERROR, FRAME>
impl<CTX, ERROR, FRAME> RefUnwindSafe for MainnetHandler<CTX, ERROR, FRAME>
impl<CTX, ERROR, FRAME> Send for MainnetHandler<CTX, ERROR, FRAME>
impl<CTX, ERROR, FRAME> Sync for MainnetHandler<CTX, ERROR, FRAME>
impl<CTX, ERROR, FRAME> Unpin for MainnetHandler<CTX, ERROR, FRAME>
impl<CTX, ERROR, FRAME> UnwindSafe for MainnetHandler<CTX, ERROR, FRAME>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.