InspectSystemCallEvm

Trait InspectSystemCallEvm 

pub trait InspectSystemCallEvm: InspectEvm + SystemCallEvm {
    // Required method
    fn inspect_one_system_call_with_caller(
        &mut self,
        caller: Address,
        system_contract_address: Address,
        data: Bytes,
    ) -> Result<Self::ExecutionResult, Self::Error>;

    // Provided methods
    fn inspect_one_system_call(
        &mut self,
        system_contract_address: Address,
        data: Bytes,
    ) -> Result<Self::ExecutionResult, Self::Error> { ... }
    fn inspect_system_call(
        &mut self,
        system_contract_address: Address,
        data: Bytes,
    ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error> { ... }
    fn inspect_system_call_with_caller(
        &mut self,
        caller: Address,
        system_contract_address: Address,
        data: Bytes,
    ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error> { ... }
    fn inspect_one_system_call_with_inspector(
        &mut self,
        system_contract_address: Address,
        data: Bytes,
        inspector: Self::Inspector,
    ) -> Result<Self::ExecutionResult, Self::Error> { ... }
    fn inspect_system_call_with_inspector(
        &mut self,
        system_contract_address: Address,
        data: Bytes,
        inspector: Self::Inspector,
    ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error> { ... }
    fn inspect_one_system_call_with_inspector_and_caller(
        &mut self,
        caller: Address,
        system_contract_address: Address,
        data: Bytes,
        inspector: Self::Inspector,
    ) -> Result<Self::ExecutionResult, Self::Error> { ... }
    fn inspect_system_call_with_inspector_and_caller(
        &mut self,
        caller: Address,
        system_contract_address: Address,
        data: Bytes,
        inspector: Self::Inspector,
    ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error> { ... }
}
Expand description

InspectSystemCallEvm is an API that allows inspecting system calls in the EVM.

It extends InspectEvm and SystemCallEvm traits to provide inspection capabilities for system transactions, enabling tracing and debugging of system calls similar to regular transactions.

Required Methods§

fn inspect_one_system_call_with_caller( &mut self, caller: Address, system_contract_address: Address, data: Bytes, ) -> Result<Self::ExecutionResult, Self::Error>

Inspect a system call with the current inspector and a custom caller.

Similar to InspectEvm::inspect_one_tx but for system calls with a custom caller.

Provided Methods§

fn inspect_one_system_call( &mut self, system_contract_address: Address, data: Bytes, ) -> Result<Self::ExecutionResult, Self::Error>

Inspect a system call with the current inspector.

Similar to InspectEvm::inspect_one_tx but for system calls. Uses SYSTEM_ADDRESS as the caller.

fn inspect_system_call( &mut self, system_contract_address: Address, data: Bytes, ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error>

Inspect a system call and finalize the state.

Similar to InspectEvm::inspect_tx but for system calls.

fn inspect_system_call_with_caller( &mut self, caller: Address, system_contract_address: Address, data: Bytes, ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error>

Inspect a system call with a custom caller and finalize the state.

Similar to InspectEvm::inspect_tx but for system calls with a custom caller.

fn inspect_one_system_call_with_inspector( &mut self, system_contract_address: Address, data: Bytes, inspector: Self::Inspector, ) -> Result<Self::ExecutionResult, Self::Error>

Inspect a system call with a given inspector.

Similar to InspectEvm::inspect_one but for system calls.

fn inspect_system_call_with_inspector( &mut self, system_contract_address: Address, data: Bytes, inspector: Self::Inspector, ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error>

Inspect a system call with a given inspector and finalize the state.

Similar to InspectEvm::inspect but for system calls.

fn inspect_one_system_call_with_inspector_and_caller( &mut self, caller: Address, system_contract_address: Address, data: Bytes, inspector: Self::Inspector, ) -> Result<Self::ExecutionResult, Self::Error>

Inspect a system call with a given inspector and caller.

Similar to InspectEvm::inspect_one but for system calls.

fn inspect_system_call_with_inspector_and_caller( &mut self, caller: Address, system_contract_address: Address, data: Bytes, inspector: Self::Inspector, ) -> Result<ExecResultAndState<Self::ExecutionResult, Self::State>, Self::Error>

Inspect a system call with a given inspector and finalize the state.

Similar to InspectEvm::inspect but for system calls.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl<CTX, INSP, PRECOMPILE> InspectSystemCallEvm for OpEvm<CTX, INSP, EthInstructions<EthInterpreter, CTX>, PRECOMPILE>
where CTX: OpContextTr + ContextSetters, <CTX as ContextTr>::Journal: JournalExt, <CTX as ContextTr>::Tx: SystemCallTx, INSP: Inspector<CTX>, PRECOMPILE: PrecompileProvider<CTX, Output = InterpreterResult>,

§

fn inspect_one_system_call_with_caller( &mut self, caller: Address, system_contract_address: Address, data: Bytes, ) -> Result<<OpEvm<CTX, INSP, EthInstructions<EthInterpreter, CTX>, PRECOMPILE> as ExecuteEvm>::ExecutionResult, <OpEvm<CTX, INSP, EthInstructions<EthInterpreter, CTX>, PRECOMPILE> as ExecuteEvm>::Error>

Implementors§

§

impl<CTX, INSP, INST, PRECOMPILES> InspectSystemCallEvm for Evm<CTX, INSP, INST, PRECOMPILES, EthFrame>
where CTX: ContextSetters + ContextTr, <CTX as ContextTr>::Journal: JournalTr<State = HashMap<Address, Account, RandomState>> + JournalExt, <CTX as ContextTr>::Tx: SystemCallTx, INSP: Inspector<CTX>, INST: InstructionProvider<Context = CTX, InterpreterTypes = EthInterpreter>, PRECOMPILES: PrecompileProvider<CTX, Output = InterpreterResult>,