A single recorded step: one opcode execution in the trace. Every field
except error describes the machine before the opcode runs.
| Field | Description |
|---|---|
pc | Program counter of the opcode in its frame's code |
op | Opcode name as an atom, such as :SSTORE; :UNKNOWN for an undefined byte |
op_byte | The opcode byte |
gas_remaining | Gas left in the frame |
gas_cost | The gas the opcode charged, static and dynamic, as geth's gasCost reports it: a CALL counts the gas it forwards, a CREATE does not (see "Gas cost" in EEVM.Tracer) |
stack | The stack, top first (to_json/1 writes it bottom first, as EIP-3155 does) |
memory_size | Memory size in bytes |
depth | Call depth, 0 for the top-level frame (to_json/1 writes it 1-based, as EIP-3155 does) |
refund | The gas refund counter |
return_data | The return-data buffer: the output of the frame's last sub-call |
error | The halt reason (an EEVM.Error.halt_reason/0) when this opcode halted the frame, else nil |
Summary
Types
@type t() :: %EEVM.Tracer.TraceStep{ depth: non_neg_integer(), error: atom() | nil, gas_cost: non_neg_integer(), gas_remaining: non_neg_integer(), memory_size: non_neg_integer(), op: atom(), op_byte: non_neg_integer(), pc: non_neg_integer(), refund: integer(), return_data: binary(), stack: [non_neg_integer()] }