Links

ETH Data Model

Version : v1.0 (August-2023)
Transition Announcement: Information here is provided for preview purposes only. Ethereum Data Warehouse will be available for access in Snowflake Marketplace and will replace Ethereum Data Warehouse beta.

Blocks

Column
Data Type
Layer
Description
block_number
number
RAW
Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain.
block_hash
varchar
RAW
Hash of the block content (KECCAK-256). Unique for every block.
block_timestamp
timestamp_ntz
RAW
Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block.
uncles
object
RAW
Array of uncles hashes. It is empty if no uncles of the block.
miner
varchar
RAW
Address of the miner (for the PoW consensus mechanism) or validator (for the PoS consensus). The receiver of gas and other fees related to creation of the block.
gas_limit
number
RAW
Maximum amount of gas that can be included in the block, set by the network, expressed in gas units.
gas_used
number
RAW
Amount of gas actually consumed by the block execution, expressed in gas units.
tx_count
number
Count of transactions included in the block, successful or reverted. For empty blocks, tx_count = 0
base_fee_per_gas
number
RAW
Minimum multiplier for used gas in order to include a transaction in a block (NULL for blocks before London hard fork).
withdrawals
object
RAW
Array of block header Ether withdrawals. For every withdrawal :
  • address - address of the withdrawal receiver;
  • amount - hexadecimal representation of the withdrawal amount (in wei)
  • index - withdrawal index
  • validator_index;
difficulty
number
RAW
Amount of effort required to mine a new block, set by the network (used in PoW consensus, not used for PoS consensus (after the Shanghai hard fork).
size
number
RAW
Size of the block in bytes.
excess_data_gas
number
RAW
Running total of excess data gas consumed on chain since EIP-4844 was activated. If the total amount of data gas is below the target, excess_data_gas is capped at zero.
decoded
boolean
TECH
Technical field. Defines processing status of a block.

Calls

Column
Data Type
Layer
Description
block_number
number
RAW
Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain.
block_timestamp
timestamp_ntz
RAW
Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block.
tx_hash
varchar
RAW
Hash of the transaction (KECCAK-256). Unique for every transaction.
call_id
varchar
TECH
Identifier of the call, constructed by concatenating block number, transaction number and call path.
call_path
varchar
TECH
Position of the call in the transaction execution tree:
  • empty for top level calls
  • concatenation call_path of the parent call and number of the sub call, starting at 0 (call_path='0_2_1' means second subcall of third subcall of first subcall in a transaction)
depth
number
TECH
Depth of the call in the transaction execution tree, incremental, starting at 0 for top level calls (call_path='0_2_1' depth= 3 means three level down in the execution tree).
call_type
varchar
RAW
Possible call types. Can take one of the following values:
  • CALL - standard function call
  • CALLCODE - allows a contract to invoke a function from another contract while maintaining the context of the calling contract. Replaced by DELEGATECALL due to security concerns.
  • DELEGATECALL - executes the code of the called contract in the context of calling contract operating on its storage.
  • STATICCALL - function call that is not allowed to change the storage.
  • CREATE - deployment of a new contract (CALL_DATA contains the contract code and constructor arguments).
  • SELFDESTRUCT - contract destruction call.
from_address
varchar
RAW
Address of the call sender (calling address):
  • externally owned address for top level calls;
  • smart contract address for any other call.
from_name
varchar
DECODED
Name of the call sender (calling address) as decoded by Token Flow processes (ABI or inferred from similar functions). Contains calling address if not found.
to_address
varchar
RAW
Address of the call receiver (called address):
  • EOA or smart contract address for pure Ether transfer;
  • Smart contract address for function calls;
  • Address used as code library when call_type = ‘DELECATECALL’
to_name
varchar
DECODED
Name of the call receiver (called address) as decoded by Token Flow processes (ABI or inferred from similar functions). Contains called address if decoding was unsuccessful.
function_signature
varchar
RAW
Binary signature of the called function. Empty when no function is called.
function_name
varchar
DECODED
Name of the function, decoded by Token Flow processes (ABI or inferred from similar functions). Contains function_signature if decoding was unsuccessful.
call_value
number
RAW
Ether amount transferred, in WEI.
Division by 10^18 to obtain Ether amount.
0 if no Ether transfer happened.
arguments
object
DECODED
List of function arguments as key:value pairs as decoded by Token Flow processes (ABI or inferred from similar functions). Contains call_data if decoding was unsuccessful.
outputs
object
DECODED
List of function outputs as key:value pairs, as decoded by Token Flow processes (ABI or inferred from similar functions). Key is the output name and value is the decoded value. Contains a single output_data argument if decoding was unsuccessful.
gas_limit
number
RAW
Gas staked by the call before its execution. Maximum amount that can be used before the call is reverted, expressed in gas units.
gas_used
number
RAW
Gas amount actually used by the call, expressed in gas units.
gas_refund
number
RAW
Gas amount returned after the call execution, expressed in gas units.
created_address
varchar
RAW
Created address in the case of CREATE call. Empty for any other call type.
exception_error
varchar
RAW
Error description for failed calls, as generated by the Ethereum Virtual Machine. Empty for successful calls.
revert_reason
varchar
RAW
Error description for reverted calls, as provided by the smart contract. Empty for successful calls.
executed
boolean
RAW
Flags successfully executed (true) or failed (false) calls.
successful
boolean
RAW
Flags persistent (true) or reverted (false) calls. Reverted calls can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic.
order_index
number
TECH
Technical field. Sequence of actions (call, events, diffs) that happened in a block.
decoded
boolean
TECH
Technical field. Flags the success (true) or failure (false) of the decoding process.
abi_guessed
boolean
TECH
Flags whether the function semantics used for decoding was taken from the called contract's ABI (False) or it was inferred from other contracts (True).

Events

Column
Data Type
Layer
Description
block_number
number
RAW
Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain.
block_timestamp
timestamp_ntz
RAW
Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block.
tx_hash
varchar
RAW
Hash of the transaction (KECCAK-256). Unique for every transaction.
call_id
varchar
TECH
Identifier of the call, constructed by concatenating block number, transaction number and call path.
event_id
varchar
TECH
Identifier of the event, constructed by concatenating block number and order_index.
log_index
number
RAW
Index of the successful event within a block, stating at 0. Reverted events are not stored on-chain and do not have log_index.
contract
varchar
RAW
Smart contract address that emitted the event.
For DELEGATECALLS, events are emitted by calling contracts and the ABI is defined by the called contract.
contract_name
varchar
DECODED
Name of the smart contract that emitted the event, as decoded by Token Flow processes (ABI or inferred). Contains contract address if not found.
implementation
varchar
RAW
Smart contract address that provides the event semantics (ABI) - called contract for DELEGATECALLS or calling contract for the rest of the call types.
event_signature
varchar
RAW
Raw hexadecimal indexed content of the event (topic 0).
event_name
varchar
DECODED
Name of the event, as decoded by Token Flow processes (ABI or inferred from similar functions). Contains event_signature if not found.
parameters
object
DECODED
List of event parameters as key:value pairs, as decoded by Token Flow processes (ABI or inferred from similar functions). Key is the output name and value is the decoded value. Contains 'topic_parameter_1-3' and 'data_parameter_0-n' argument if decoding was unsuccessful.
successful
boolean
RAW
Flags persistent (true) or reverted (falls) calls. Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic.
order_index
number
TECH
Technical field. Sequence of actions (call, events, diffs) that happened in a block.
decoded
boolean
TECH
Technical field. Flags the success (true) or failure (false) of the decoding process.
abi_guessed
boolean
TECH
Flags whether the event semantics used for decoding was taken from the implementation contract's ABI (False) or it was inferred from other contracts (True).

Transactions

Column
Data Type
Layer
Descriptipn
block_number
number
RAW
Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain.
block_timestamp
timestamp_ntz
RAW
Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block.
tx_hash
varchar
RAW
Hash of the transaction (KECCAK-256). Unique for every transaction.
tx_index
number
RAW
Index of the transactions within a block, starting at 0.
tx_type
number
RAW
Transaction type. Can take one of the following values:
  • 0 - legacy transactions that use the transaction format existing before typed transactions were introduced
  • 1 - transactions introduced in EIP-2930 that contain an accessList parameter
  • 2 - transactions introduced in EIP-1559, included in London hardfork
from_address
varchar
RAW
Address of the transaction sender (calling address). It is always an Externally Owned Address.
from_name
varchar
DECODED
Name of the transaction sender (calling address) as decoded by Token Flow processes (ABI or inferred from similar functions). Contains calling address if not found.
nonce
number
RAW
Sender counter of signed transactions, used to avoid sending the same transaction twice.
to_address
varchar
RAW
Address of the transaction receiver (called address):
  • EOA or smart contract address for pure Ether transfer;
  • Smart contract address for function calls;
to_name
varchar
DECODED
Name of the transaction receiver (called address) as decoded by Token Flow processes (ABI or inferred from similar functions). Contains called address if decoding was unsuccessful.
function_signature
varchar
RAW
Binary signature of the called function. 0x in case of pure Ether transfers.
tx_value
number
RAW
Ether amount transferred, in WEI.
Division by 10^18 to obtain Ether amount.
0 if no Ether transfer happened.
gas_limit
number
RAW
Gas staked by the transaction before its execution. Maximum amount that can be used before the transaction is reverted, expressed in gas units.
gas_price
number
RAW
Ether amount the transaction sender is willing to pay per unit of gas as a fee to the miner.
gas_used
number
RAW
Gas amount actually used by the transaction, expressed in gas units.
gas_refund
number
RAW
Gas amount returned after the transaction execution, expressed in gas units.
exception_error
varchar
RAW
Error description for failed transactions, as generated by the Ethereum Virtual Machine. Empty for successful transactions.
revert_reason
varchar
RAW
Error description for reverted transactions, as provided by the smart contract. Empty for successful transactions.
successful
boolean
RAW
Flags persistent (true) or reverted (false) calls. Reverted calls can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic.
max_fee_per_gas
number
RAW
Maximum fee the transaction sender is willing to pay for the gas (base fee + priority fee).
max_fee_per_data_gas
number
RAW
Gas "tip" included in the transaction to additionally incentivise miners.
max_priority_fee_per_gas
number
RAW
Maximum amount of gas paid for the blobs of data stored on-chain.
decoded
boolean
TECH
Technical field. Flags the success (true) or failure (false) of the decoding process.

Storage_diffs

Column
Data Type
Layer
Description
block_number
number
RAW
number of the block. numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain.
block_timestamp
timestamp_ntz
RAW
Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block.
tx_hash
varchar
RAW
Hash of the transaction (KECCAK-256). Unique for every transaction.
storage_diff_id
varchar
TECH
Identifier of the storage_diff, constructed by concatenating block number, order index and sequential number of variable in a single diff.
call_id
varchar
TECH
Identifier of the call, constructed by concatenating block number, transaction number and call path.
contract
varchar
RAW
Smart contract address that the change applies to.
contract_name
varchar
DECODED
Name of the smart contract that the change applies to, as decoded by Token Flow processes (ABI or inferred). Contains contract address if not found.
implementation
varchar
RAW
Implementation address of the contract in case of proxy or implementation pattern.
location
varchar
DECODED
Pre-hashed memory location, as decoded by Token Flow processes (ABI or inferred). Includes the variable name and keys used for mappings.
variable
varchar
DECODED
Variable name, as decoded by Token Flow processes (ABI or inferred).
variable_type
varchar
DECODED
Decoded variable type. Can take one of the following values:
  • SIMPLE - simple variable that uses one memory slot
  • MAPPING - hashmap with a single key
  • MULTI MAPPING - hashmap with multiple keys
  • OTHER - other variable types
slot
varchar
RAW
Memory slot number. Sequential position of the variable in the smart contract code.
hashmap_keys
object
RAW
Array of keys used for addressing the hashmap.
structs
object
DECODED
Names of structures defined in the smart contract code.
prev_value
varchar
DECODED
Decoded storage value before the change.
curr_value
varchar
DECODED
Decoded storage value after the change.
successful
boolean
RAW
Flags persistent (true) or reverted (false) changes. Reverted changes can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic.
order_index
number
TECH
Technical field. Sequence of actions (call, events, diffs) that happened in a block.
decoded
boolean
TECH
Technical field. Flags the success (true) or failure (false) of the decoding process.

State_diffs

Column
Data Type
Layer
Description
block_number
number
RAW
number of the block. numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain.
block_timestamp
timestamp_ntz
RAW
Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block.
tx_hash
varchar
RAW
Hash of the transaction (KECCAK-256). Unique for every transaction.
state_diff_id
varchar
TECH
Identifying of the state_diff, constructed by concatenating the block number, the call path and order index fields.
call_id
varchar
TECH
Identifier of the call, constructed by concatenating block number, transaction number and call path.
address
varchar
RAW
Blockchain address that the change applies to.
state_field
varchar
DECODED
Name of the state field that is being changed. Can take one of the following values:
  • BALANCE - Ether balance of the address
  • NONCE - number starting form 0 and increased with every new signed transaction
  • CODEHASH - hash of a bytecode in case if a contract is deployed at the address
reason
varchar
DECODED
Reason for the state change. This field should be used in combination with state_field. Can take one of the following values, depending on the name of the state field:
  • state_field = BALANCE.
    • genesis - balance changes introduced at the genesis block
    • eth transfer - transfers of Ether
    • gas stake - staking gas before transaction
    • unused gas - returned gas after transaction
    • miner gas - gas feed paid to the miner
    • block reward - Ether minted for the miner as a reward for a block
    • uncle reward - Ether minted for the miner as a reward for an uncle
    • withdrawal - Ether withdrawn from the beacon chain
  • state_field = NONCE
    • nonce change - nonce increase due to a signed transaction
    • contract creation - nonce change from 0 to 1 for a newly created contract
  • state_field = CODEHASH
    • contract creation - storing code due to a contract creation
    • contract destruction - removing code due to a contract destruction
prev_value
varchar
DECODED
State field value before the change.
curr_value
varchar
DECODED
State field value after the change.
successful
boolean
RAW
Flags persistent (true) or reverted (false) calls. Reverted calls can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic.
order_index
number
TECH
Technical field. Sequence of actions (call, events, diffs) that happened in a block.