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.