ethereum.trace

.. _trace:

EVM Trace ^^^^^^^^^

.. contents:: Table of Contents :backlinks: none :local:

Introduction

Defines the functions required for creating evm traces during execution.

  1"""
  2.. _trace:
  3
  4EVM Trace
  5^^^^^^^^^
  6
  7.. contents:: Table of Contents
  8    :backlinks: none
  9    :local:
 10
 11Introduction
 12------------
 13
 14Defines the functions required for creating evm traces during execution.
 15"""
 16
 17import enum
 18from dataclasses import dataclass
 19from typing import Optional, Union
 20
 21
 22@dataclass
 23class TransactionStart:
 24    """Trace event that is triggered at the start of a transaction."""
 25
 26    pass
 27
 28
 29@dataclass
 30class TransactionEnd:
 31    """Trace event that is triggered at the end of a transaction."""
 32
 33    gas_used: int
 34    output: bytes
 35    error: Optional[Exception]
 36
 37
 38@dataclass
 39class PrecompileStart:
 40    """Trace event that is triggered before executing a precompile."""
 41
 42    address: bytes
 43
 44
 45@dataclass
 46class PrecompileEnd:
 47    """Trace event that is triggered after executing a precompile."""
 48
 49    pass
 50
 51
 52@dataclass
 53class OpStart:
 54    """Trace event that is triggered before executing an opcode."""
 55
 56    op: enum.Enum
 57
 58
 59@dataclass
 60class OpEnd:
 61    """Trace event that is triggered after executing an opcode."""
 62
 63    pass
 64
 65
 66@dataclass
 67class OpException:
 68    """Trace event that is triggered when an opcode raises an exception."""
 69
 70    error: Exception
 71
 72
 73@dataclass
 74class EvmStop:
 75    """Trace event that is triggered when the EVM stops."""
 76
 77    op: enum.Enum
 78
 79
 80@dataclass
 81class GasAndRefund:
 82    """Trace event that is triggered when gas is deducted."""
 83
 84    gas_cost: int
 85
 86
 87TraceEvent = Union[
 88    TransactionStart,
 89    TransactionEnd,
 90    PrecompileStart,
 91    PrecompileEnd,
 92    OpStart,
 93    OpEnd,
 94    OpException,
 95    EvmStop,
 96    GasAndRefund,
 97]
 98
 99
100def evm_trace(
101    evm: object,
102    event: TraceEvent,
103    trace_memory: bool = False,
104    trace_stack: bool = True,
105    trace_return_data: bool = False,
106) -> None:
107    """
108    Create a trace of the event.
109    """
110    pass
@dataclass
class TransactionStart:
23@dataclass
24class TransactionStart:
25    """Trace event that is triggered at the start of a transaction."""
26
27    pass

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

@dataclass
class TransactionEnd:
30@dataclass
31class TransactionEnd:
32    """Trace event that is triggered at the end of a transaction."""
33
34    gas_used: int
35    output: bytes
36    error: Optional[Exception]

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

@dataclass
class PrecompileStart:
39@dataclass
40class PrecompileStart:
41    """Trace event that is triggered before executing a precompile."""
42
43    address: bytes

Trace event that is triggered before executing a precompile.

@dataclass
class PrecompileEnd:
46@dataclass
47class PrecompileEnd:
48    """Trace event that is triggered after executing a precompile."""
49
50    pass

Trace event that is triggered after executing a precompile.

@dataclass
class OpStart:
53@dataclass
54class OpStart:
55    """Trace event that is triggered before executing an opcode."""
56
57    op: enum.Enum

Trace event that is triggered before executing an opcode.

@dataclass
class OpEnd:
60@dataclass
61class OpEnd:
62    """Trace event that is triggered after executing an opcode."""
63
64    pass

Trace event that is triggered after executing an opcode.

@dataclass
class OpException:
67@dataclass
68class OpException:
69    """Trace event that is triggered when an opcode raises an exception."""
70
71    error: Exception

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

@dataclass
class EvmStop:
74@dataclass
75class EvmStop:
76    """Trace event that is triggered when the EVM stops."""
77
78    op: enum.Enum

Trace event that is triggered when the EVM stops.

@dataclass
class GasAndRefund:
81@dataclass
82class GasAndRefund:
83    """Trace event that is triggered when gas is deducted."""
84
85    gas_cost: int

Trace event that is triggered when gas is deducted.

def evm_trace( evm: object, event: Union[TransactionStart, TransactionEnd, PrecompileStart, PrecompileEnd, OpStart, OpEnd, OpException, EvmStop, GasAndRefund], trace_memory: bool = False, trace_stack: bool = True, trace_return_data: bool = False) -> None:
101def evm_trace(
102    evm: object,
103    event: TraceEvent,
104    trace_memory: bool = False,
105    trace_stack: bool = True,
106    trace_return_data: bool = False,
107) -> None:
108    """
109    Create a trace of the event.
110    """
111    pass

Create a trace of the event.