Skip to main content
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 NameData TypeDescription
transaction_hashVARCHARUnique identifier of the transaction that this trace belongs to.
transaction_indexBIGINTThe position of this transaction in the block that it belongs to. The first transaction has index 0.
from_addressVARCHARThe address of the sending party of this transaction.
to_addressVARCHARThe address of the receiving party of this transaction, typically a contract address for traces.
valueVARCHARThe amount of gas token moved from the from_address to to_address.
inputVARCHARThe bytecode of the call that is made to another smart contract.
outputVARCHARThe bytecode answer the smart contract that was called gives back.
trace_typeVARCHARThe value of the method such as call, create, create2, suicide.
call_typeVARCHARThe type of method such as call, delegatecall, staticcall. Learn more here.
reward_typeVARCHARPopulated when trace_type = reward. Possible values: block, uncle.
gasBIGINTGas provided with the trace call, in wei.
gas_usedBIGINTThe amount of gas consumed, in wei.
subtracesBIGINTNumber of children traces.
trace_addressVARCHARThe address of the trace within the call graph.
errorVARCHARHuman readable developer error message. Examples: “Out of gas”, “Reverted”, “Bad instruction”, “Bad jump destination”.
statusBIGINTSuccess status of the trace. Either 1 (success) or 0 (failure).
block_timestampTIMESTAMP_NTZ(9)The time when the block that contains this trace was included on the blockchain.
block_numberBIGINTThe length of the chain, in blocks.
block_hashVARCHARUnique identifier of the block that includes this trace.
trace_idVARCHARUnique identifier for this trace. Generated by combining the trace_type, transaction_hash and trace_address.
selectorVARCHAR4-bytes of the input data.
before_evm_transfersVARIANTEVM transfers state before the trace execution. (Only applicable for Arbitrum Orbit Chains)
after_evm_transfersVARIANTEVM transfers state after the trace execution. (Only applicable for Arbitrum Orbit Chains)
_created_atTIMESTAMP_NTZ(9)Timestamp of the entry creation.
_updated_atTIMESTAMP_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: