EVM Trace

Introduction

Defines the functions required for creating evm traces during execution.

Module Contents

Classes

TransactionStart

Trace event that is triggered at the start of a transaction.

TransactionEnd

Trace event that is triggered at the end of a transaction.

PrecompileStart

Trace event that is triggered before executing a precompile.

PrecompileEnd

Trace event that is triggered after executing a precompile.

OpStart

Trace event that is triggered before executing an opcode.

OpEnd

Trace event that is triggered after executing an opcode.

OpException

Trace event that is triggered when an opcode raises an exception.

EvmStop

Trace event that is triggered when the EVM stops.

GasAndRefund

Trace event that is triggered when gas is deducted.

Functions

evm_trace

Create a trace of the event.

Attributes

TraceEvent

Module Details

TransactionStart

Trace event that is triggered at the start of a transaction.

class TransactionStart

TransactionEnd

Trace event that is triggered at the end of a transaction.

class TransactionEnd
gas_used :int
output :bytes
error :Optional[Exception]

PrecompileStart

Trace event that is triggered before executing a precompile.

class PrecompileStart
address :bytes

PrecompileEnd

Trace event that is triggered after executing a precompile.

class PrecompileEnd

OpStart

Trace event that is triggered before executing an opcode.

class OpStart
op :enum.Enum

OpEnd

Trace event that is triggered after executing an opcode.

class OpEnd

OpException

Trace event that is triggered when an opcode raises an exception.

class OpException
error :Exception

EvmStop

Trace event that is triggered when the EVM stops.

class EvmStop
op :enum.Enum

GasAndRefund

Trace event that is triggered when gas is deducted.

class GasAndRefund
gas_cost :int

TraceEvent

TraceEvent
TraceEvent = Union[
    TransactionStart,
    TransactionEnd,
    PrecompileStart,
    PrecompileEnd,
    OpStart,
    OpEnd,
    OpException,
    EvmStop,
    GasAndRefund,
]

evm_trace

evm_trace(evm: object, event: TraceEvent, trace_memory: bool = False, trace_stack: bool = True, trace_return_data: bool = False)None

Create a trace of the event.

def evm_trace(
    evm: object,
    event: TraceEvent,
    trace_memory: bool = False,
    trace_stack: bool = True,
    trace_return_data: bool = False,
) -> None:
    pass