Trait InspectorEvmTr
pub trait InspectorEvmTr: EvmTrwhere
Self::Frame: InspectorFrame<IT = EthInterpreter>,
Self::Instructions: InstructionProvider<InterpreterTypes = EthInterpreter, Context = Self::Context>,
Self::Context: ContextTr,
<Self::Context as ContextTr>::Journal: JournalExt,{
type Inspector: Inspector<Self::Context>;
// Required methods
fn all_inspector(
&self,
) -> (&Self::Context, &Self::Instructions, &Self::Precompiles, &FrameStack<Self::Frame>, &Self::Inspector);
fn all_mut_inspector(
&mut self,
) -> (&mut Self::Context, &mut Self::Instructions, &mut Self::Precompiles, &mut FrameStack<Self::Frame>, &mut Self::Inspector);
// Provided methods
fn inspector(&mut self) -> &mut Self::Inspector { ... }
fn ctx_inspector(&mut self) -> (&mut Self::Context, &mut Self::Inspector) { ... }
fn ctx_inspector_frame(
&mut self,
) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame) { ... }
fn ctx_inspector_frame_instructions(
&mut self,
) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame, &mut Self::Instructions) { ... }
fn inspect_frame_init(
&mut self,
frame_init: <Self::Frame as FrameTr>::FrameInit,
) -> Result<ItemOrResult<&mut Self::Frame, <Self::Frame as FrameTr>::FrameResult>, ContextError<<<Self::Context as ContextTr>::Db as Database>::Error>> { ... }
fn inspect_frame_run(
&mut self,
) -> Result<ItemOrResult<<Self::Frame as FrameTr>::FrameInit, <Self::Frame as FrameTr>::FrameResult>, ContextError<<<Self::Context as ContextTr>::Db as Database>::Error>> { ... }
}Expand description
Inspector EVM trait. Extends the EvmTr trait with inspector related methods.
It contains execution of interpreter with crate::Inspector calls crate::Inspector::step and crate::Inspector::step_end calls.
It is used inside crate::InspectorHandler to extend evm with support for inspection.
Required Associated Types§
Required Methods§
fn all_inspector(
&self,
) -> (&Self::Context, &Self::Instructions, &Self::Precompiles, &FrameStack<Self::Frame>, &Self::Inspector)
fn all_inspector( &self, ) -> (&Self::Context, &Self::Instructions, &Self::Precompiles, &FrameStack<Self::Frame>, &Self::Inspector)
Returns a tuple of mutable references to the context, the inspector, the frame and the instructions.
This is one of two functions that need to be implemented for Evm. Second one is all_mut.
fn all_mut_inspector(
&mut self,
) -> (&mut Self::Context, &mut Self::Instructions, &mut Self::Precompiles, &mut FrameStack<Self::Frame>, &mut Self::Inspector)
fn all_mut_inspector( &mut self, ) -> (&mut Self::Context, &mut Self::Instructions, &mut Self::Precompiles, &mut FrameStack<Self::Frame>, &mut Self::Inspector)
Returns a tuple of mutable references to the context, the inspector, the frame and the instructions.
This is one of two functions that need to be implemented for Evm. Second one is all.
Provided Methods§
fn ctx_inspector(&mut self) -> (&mut Self::Context, &mut Self::Inspector)
fn ctx_inspector(&mut self) -> (&mut Self::Context, &mut Self::Inspector)
Returns a tuple of mutable references to the context and the inspector.
Useful when you want to allow inspector to modify the context.
fn ctx_inspector_frame(
&mut self,
) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame)
fn ctx_inspector_frame( &mut self, ) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame)
Returns a tuple of mutable references to the context, the inspector and the frame.
Useful when you want to allow inspector to modify the context and the frame.
fn ctx_inspector_frame_instructions(
&mut self,
) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame, &mut Self::Instructions)
fn ctx_inspector_frame_instructions( &mut self, ) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame, &mut Self::Instructions)
Returns a tuple of mutable references to the context, the inspector, the frame and the instructions.
fn inspect_frame_init(
&mut self,
frame_init: <Self::Frame as FrameTr>::FrameInit,
) -> Result<ItemOrResult<&mut Self::Frame, <Self::Frame as FrameTr>::FrameResult>, ContextError<<<Self::Context as ContextTr>::Db as Database>::Error>>
fn inspect_frame_init( &mut self, frame_init: <Self::Frame as FrameTr>::FrameInit, ) -> Result<ItemOrResult<&mut Self::Frame, <Self::Frame as FrameTr>::FrameResult>, ContextError<<<Self::Context as ContextTr>::Db as Database>::Error>>
Initializes the frame for the given frame input. Frame is pushed to the frame stack.
fn inspect_frame_run(
&mut self,
) -> Result<ItemOrResult<<Self::Frame as FrameTr>::FrameInit, <Self::Frame as FrameTr>::FrameResult>, ContextError<<<Self::Context as ContextTr>::Db as Database>::Error>>
fn inspect_frame_run( &mut self, ) -> Result<ItemOrResult<<Self::Frame as FrameTr>::FrameInit, <Self::Frame as FrameTr>::FrameResult>, ContextError<<<Self::Context as ContextTr>::Db as Database>::Error>>
Run the frame from the top of the stack. Returns the frame init or result.
If frame has returned result it would mark it as finished.