Traces
Traces keep track of the actions that modify the internal state of the EVM.
Typically, trace_id
for traces are unique, unless there are duplicate transactions on the blockchain. Which may occur for edge cases. Unless otherwise specified, all the EVM-trace data is fetched from debug_traceBlockByNumber
from geth client.
Table Columns
Unique Key: trace_id
Column Name | Data Type | Description |
---|---|---|
block_number | NUMBER(38,0) | The length of the chain, in blocks. |
block_timestamp | TIMESTAMP_NTZ(9) | The time when the block that contains this trace was included on the blockchain. |
block_hash | VARCHAR(66) | Unique identifier of the block that includes this trace. |
transaction_hash | VARCHAR(66) | Unique identifier of the transaction that this trace belongs to. |
transaction_index | NUMBER(38,0) | The position of this transaction in the block that it belongs to. The first transaction has index 0. |
from_address | VARCHAR(42) | The address of the sending party of this transaction. |
to_address | VARCHAR(42) | The address of the receiving party of this transaction, typically a contract address for traces. |
value | VARCHAR(16777216) | The amount of gas token moved from the from_address to to_address. |
selector | VARCHAR(10) | 4-bytes of the input data. |
input | VARCHAR(16777216) | The bytecode of the call that is made to another smart contract. |
output | VARCHAR(16777216) | The bytecode answer the smart contract that was called gives back. |
trace_type | VARCHAR(16777216) | The value of the method such as call, create, create2, suicide. |
call_type | VARCHAR(16777216) | The type of method such as call, delegatecall, staticcall. Learn more here. |
reward_type | VARCHAR(16777216) | Populated when trace_type =reward. Possible values: block, uncle. |
gas | NUMBER(38,0) | Gas provided with the trace call, in wei. |
gas_used | NUMBER(38,0) | The amount of gas consumed, in wei. |
subtraces | NUMBER(38,0) | Number of children traces. |
error | VARCHAR(16777216) | Human readable developer error message. Examples: “Out of gas”, “Reverted”, “Bad instruction”, “Bad jump destination” |
status | NUMBER(38,0) | Success status of the trace. Either 1 (success) or 0 (failure). |
trace_id | VARCHAR(16777216) | Unique identifier for this trace. Generated by combining the trace_type, transaction_hash and trace_address. |
trace_address | VARCHAR(16777216) | The address of the trace within the call graph. |
before_evm_transfers | VARIANT | EVM transfers state before the trace execution. (Only applicable for Arbitrum Orbit Chains) |
after_evm_transfers | VARIANT | EVM transfers state after the trace execution. (Only applicable for Arbitrum Orbit Chains) |
_created_at | TIMESTAMP_NTZ(9) | Timestamp of the entry creation. |
_updated_at | TIMESTAMP_NTZ(9) | Timestamp of the entry update. |
Additional Info
Trace Address field different from Etherscan/Explorers
The number of traces Allium has indexed for this transaction is 12, whereas if you count the number of traces that Etherscan has on this page, you’ll notice that it is 11. Etherscan has chosen to leave out certain types of traces and coupled with how trace addresses are generated, it will result in a different trace address numbering scheme.
In the example above, the trace in the example as indexed by Allium is {0,0,2,0}
whereas on Etherscan/Block Explorer it’s as follows:
