ETH Data Model
Current version : MCDW v1.2 (Mar 2024)
Migration to MCDW v1.2 data model 13-Mar-2024
To get access to the data see Accessing Token Flow data guides
Blocks
Column | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
base_fee_per_gas | bigint | RAW | YES | Minimum multiplier for used gas in order to include a transaction in a block. NULL for blocks before London hard fork. |
block_hash | char(66) | RAW | NO | Hash of the block content (KECCAK-256). Unique for every block. |
block_number | char(66) | RAW | NO | Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain. |
block_timestamp | timestamp | RAW | NO | Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block. |
difficulty | bigint | RAW | YES | 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). |
excess_blob_gas | integer | RAW | NO | 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_blob_gas is capped at zero. |
gas_limit | bigint | RAW | NO | Maximum amount of gas that can be included in the block, set by the network, expressed in gas units. |
gas_used | bigint | RAW | NO | Amount of gas actually consumed by the block execution, expressed in gas units. |
miner | char(42) | RAW | NO | 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. |
processed | boolean | TECH | NO | Technical field. Defines processing status of a block by the decoding ETL process. |
size | integer | RAW | NO | Size of the block in bytes. |
tx_count | bigint | RAW | NO | Count of transactions included in the block, successful or reverted. For empty blocks, tx_count = 0 |
uncles | JSON | RAW | NO | Array of uncles' hashes. Empty array if block has no uncles. |
withdrawals | JSON | RAW | YES | 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; |
Calls
Column | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
abi_inferred | boolean | TECH | YES | 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). |
arguments | JSON | DECODED | YES | 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. |
block_number | char(66) | RAW | NO | Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain. |
block_timestamp | timestamp | RAW | NO | Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block. |
call_depth | mediumint | TECH | NO | 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_id | text | TECH | NO | Technical field. Identifier of the call, constructed by concatenating block id, transaction index and call path. |
call_path | text | TECH | NO | Position of the call in the transaction execution tree: * empty string for top level calls (call_depth = 0) * 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) |
call_type | text | RAW | NO | Possible call types.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. |
call_value | decimal(38,0) | RAW | NO | Ether amount transferred, in WEI. Division by 10^18 to obtain Ether amount. 0 if no Ether transfer happened. |
created_address | char(42) | RAW | YES | Created address in the case of 'CREATE' call. Empty for any other call type. |
exception_error | text | RAW | YES | Error description for failed calls, as generated by the Ethereum Virtual Machine. Empty for successful calls. |
executed | boolean | RAW | NO | Flags successfully executed (true) or failed (false) calls. |
from_address | char(42) | RAW | NO | Address of the call sender (calling address): * externally owned address for top level calls; * smart contract address for any other call. |
from_name | text | DECODED | YES | 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. |
function_name | text | DECODED | YES | Name of the function, decoded by Token Flow processes (ABI or inferred from similar functions). Contains function_signature if decoding was unsuccessful. |
function_signature | char(10) | RAW | YES | Binary signature of the called function. 0x in case of pure Ether transfers. |
gas_limit | bigint | RAW | NO | Gas staked by the function call before its execution. Maximum amount that can be used before the function call is reverted, expressed in gas units. |
gas_refund | bigint | RAW | NO | Gas amount returned after the function call execution, expressed in gas units. |
gas_used | bigint | RAW | NO | Gas used by the execution of a specific function within a smart contract, expressed in gas units. |
order_index | mediumint | TECH | NO | Technical field. Sequence of actions (call, events, diffs) that happened in a block. |
outputs | JSON | DECODED | YES | 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. |
decoded | boolean | TECH | NO | Technical field. Defines processing status of a block by the decoding ETL process. |
revert_reason | text | RAW | YES | Error description for reverted calls, as provided by the smart contract. Empty for successful calls. |
reverted | boolean | RAW | NO | Flags persistent (false) or reverted (true) calls. Reverted diffs can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
to_address | char(42) | RAW | NO | 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 | text | DECODED | YES | 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. |
tx_hash | char(66) | RAW | NO | Hash of the transaction (KECCAK-256). Unique for every transaction. |
Events
Column | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
abi_inferred | boolean | TECH | YES | 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). |
block_number | char(66) | RAW | NO | Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain. |
block_timestamp | timestamp | RAW | NO | Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block. |
call_id | text | TECH | NO | Technical field. Identifier of the call, constructed by concatenating block id, transaction index and call path. |
contract_address | char(42) | RAW | NO | 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 | text | DECODED | YES | Name of the smart contract that generated the event, as decoded by Token Flow processes (ABI or inferred). Contains contract address if not found. |
event_id | text | TECH | NO | Technical field. Identifier of the event, constructed by concatenating block_id and order_index, separated by underscores. |
event_name | text | DECODED | YES | Name of the event, as decoded by Token Flow processes (ABI or inferred from similar functions). Contains event_signature if not found. |
event_signature | char(66) | RAW | NO | Raw hexadecimal indexed content of the event (topic 0). |
implementation | char(42) | RAW | NO | Smart contract address that provides the event semantics (ABI) - called contract for DELEGATECALLS or calling contract for the rest of the call types. |
log_index | mediumint | RAW | NO | Index of the successful event within a block, stating at 0. Reverted events are not stored on-chain and do not have log_index (empty) |
order_index | mediumint | TECH | NO | Technical field. Sequence of actions (call, events, diffs) that happened in a block. |
parameters | JSON | DECODED | YES | 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. |
decoded | boolean | TECH | NO | Technical field. Defines processing status of a block by the decoding ETL process. |
reverted | boolean | RAW | NO | Flags persistent (false) or reverted (true) calls. Reverted diffs can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
tx_hash | char(66) | RAW | NO | Hash of the transaction (KECCAK-256). Unique for every transaction. |
Transactions
Column | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
block_number | char(66) | RAW | NO | Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain. |
block_timestamp | timestamp | RAW | NO | Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block. |
exception_error | text | RAW | YES | Error description for failed transactions, as generated by the Ethereum Virtual Machine. Empty for successful transactions. |
from_address | char(42) | RAW | NO | Address of the transaction sender (calling address). It is always an Externally Owned Address. |
from_name | text | DECODED | YES | 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. |
function_signature | char(10) | RAW | YES | Binary signature of the called function. 0x in case of pure Ether transfers. |
gas_limit | bigint | RAW | NO | 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 | bigint | RAW | NO | Ether amount the transaction sender is willing to pay per unit of gas as a fee to the miner. |
gas_refund | bigint | RAW | NO | Gas amount returned after the transaction execution, expressed in gas units. |
gas_used | bigint | RAW | NO | Gas used by the execution of a transaction, expressed in gas units. |
max_fee_per_blob_gas | bigint | RAW | YES | Gas "tip" included in the transaction to additionally incentivise miners. |
max_fee_per_gas | bigint | RAW | YES | Maximum fee the transaction sender is willing to pay for the gas (base fee + priority fee). |
max_priority_fee_per_gas | bigint | RAW | YES | Maximum amount of gas paid for the blobs of data stored on-chain. |
nonce | bigint | RAW | NO | Sender counter of signed transactions, used to avoid sending the same transaction twice. |
processed | boolean | TECH | NO | Technical field. Defines processing status of a block by the decoding ETL process. |
revert_reason | text | RAW | YES | Error description for reverted transactions, as provided by the smart contract. Empty for successful transactions. |
reverted | boolean | RAW | NO | Flags persistent (false) or reverted (true) calls. Reverted diffs can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
to_address | char(42) | RAW | NO | Address of the transaction receiver (called address): * EOA or smart contract address for pure Ether transfer; * Smart contract address for function calls; |
to_name | text | DECODED | YES | 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. |
tx_hash | char(66) | RAW | NO | Hash of the transaction (KECCAK-256). Unique for every transaction. |
tx_index | bigint | RAW | NO | Index of the transactions within a block, starting at 0. |
tx_type | integer | RAW | NO | 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 (accessList parameter) 2 - transactions introduced in EIP-1559, London hardfork 3 - transactions introduced in EIP-4844, Dencun hardfork |
tx_value | decimal(38,0) | RAW | NO | Ether amount transferred, in WEI. Value must be divided by 10^18 to obtain Ether amount. 0 if no Ether transfer happened. |
blob_versioned_hashes | json | RAW | YES | List of versioned blob hashes linked to this transaction (EIP-4844) |
Transient_storage_diffs
Column Name | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
block_number | char(66) | RAW | NO | Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain. |
block_timestamp | timestamp | RAW | NO | Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block. |
call_id | text | TECH | NO | Technical field. Identifier of the call, constructed by concatenating block id, transaction index and call path. |
contract | char(42) | RAW | NO | Smart contract address that the change applies to. |
contract_name | text | DECODED | YES | 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. |
curr_value | text | DECODED | YES | Decoded storage value after the change. |
decoded | boolean | TECH | NO | Technical field. Flags the success (true) or failure (false) of the decoding process. |
hashmap_keys | JSON | RAW | NO | Array of keys used for addressing the hashmap. |
implementation | char(42) | RAW | NO | Implementation address of the contract in case of proxy or implementation pattern. |
location | text | DECODED | YES | Pre-hashed memory location, as decoded by Token Flow processes (ABI or inferred). Includes the variable name and keys used for mappings. |
order_index | mediumint | TECH | NO | Technical field. Sequence of actions (call, events, diffs) that happened in a block. |
prev_value | text | DECODED | YES | Decoded storage value before the change. |
reverted | boolean | RAW | NO | Flags persistent (false) or reverted (true) calls. Reverted diffs can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
slot | text | RAW | YES | Memory slot number. Sequential position of the variable in the smart contract code. |
transient_storage_diff_id | text | TECH | NO | Technical field. Identifier of the storage_diff, constructed by concatenating block id, order index and sequential number in a single diff (starting from 0) |
structs | JSON | DECODED | NO | Names of structures defined in the smart contract code. |
tx_hash | char(66) | RAW | NO | Hash of the transaction (KECCAK-256). Unique for every transaction. |
variable | text | DECODED | YES | Name of the variable, as decoded by Token Flow processes (ABI or inferred). |
variable_type | text | DECODED | YES | 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 |
Storage_diffs
Column Name | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
block_number | char(66) | RAW | NO | Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain. |
block_timestamp | timestamp | RAW | NO | Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block. |
call_id | text | TECH | NO | Technical field. Identifier of the call, constructed by concatenating block id, transaction index and call path. |
contract | char(42) | RAW | NO | Smart contract address that the change applies to. |
contract_name | text | DECODED | YES | 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. |
curr_value | text | DECODED | YES | Decoded storage value after the change. |
decoded | boolean | TECH | NO | Technical field. Flags the success (true) or failure (false) of the decoding process. |
hashmap_keys | JSON | RAW | NO | Array of keys used for addressing the hashmap. |
implementation | char(42) | RAW | NO | Implementation address of the contract in case of proxy or implementation pattern. |
location | text | DECODED | YES | Pre-hashed memory location, as decoded by Token Flow processes (ABI or inferred). Includes the variable name and keys used for mappings. |
order_index | mediumint | TECH | NO | Technical field. Sequence of actions (call, events, diffs) that happened in a block. |
prev_value | text | DECODED | YES | Decoded storage value before the change. |
reverted | boolean | RAW | NO | Flags persistent (false) or reverted (true) calls. Reverted diffs can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
slot | text | RAW | YES | Memory slot number. Sequential position of the variable in the smart contract code. |
storage_diff_id | text | TECH | NO | Technical field. Identifier of the storage_diff, constructed by concatenating block id, order index and sequential number in a single diff (starting from 0) |
structs | JSON | DECODED | NO | Names of structures defined in the smart contract code. |
tx_hash | char(66) | RAW | NO | Hash of the transaction (KECCAK-256). Unique for every transaction. |
variable | text | DECODED | YES | Name of the variable, as decoded by Token Flow processes (ABI or inferred). |
variable_type | text | DECODED | YES | 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 |
State_diffs
Column | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
address | char(42) | RAW | NO | Blockchain address that the change applies to. |
block_number | char(66) | RAW | NO | Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain. |
block_timestamp | timestamp | RAW | NO | Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block. |
call_id | text | TECH | NO | Technical field. Identifier of the call, constructed by concatenating block id, transaction index and call path. Empty if the state diff originated in the block. |
curr_value | char(66) | RAW | NO | State field value after the change. |
order_index | mediumint | TECH | NO | Technical field. Sequence of actions (call, events, diffs) that happened in a block. |
prev_value | char(66) | RAW | NO | State field value before the change. |
reason | text | DECODED | NO | Reason for the state change. This field should be used in combination with state_field. |
reverted | boolean | RAW | NO | Flags persistent (false) or reverted (true) calls. Reverted diffs can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
state_diff_id | text | TECH | NO | Technical field. Identifier of the state_diff, constructed by concatenating the block id and order index, separated by underscores. |
state_field | text | DECODED | NO | Name of the state field that is being changed. |
tx_hash | char(66) | RAW | NO | Hash of the transaction (KECCAK-256). Unique for every transaction. Empty if the state diff originated in the block. |
Transfers
Column | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
block_timestamp | timestamp | RAW | NO | Timestamp of the block. Unique for every block and inherited by calls, events, transactions and diffs happening in the same block. |
block_number | bigint | RAW | NO | Number of the block. Numbering is incremental, starting at 0 (Genesis) with new blocks added at the end of the chain. |
tx_hash | char(66) | RAW | NO | Hash of the transaction (KECCAK-256). Unique for every transaction. |
tx_sender | char(42) | RAW | NO | Address of the transaction sender (calling address). It is always an Externally Owned Address. |
tx_receiver | char(42) | RAW | NO | Address of the transaction receiver (called address): * EOA or smart contract address for pure Ether transfer; * Smart contract address for function calls; |
tx_function_name | text | DECODED | YES | Name of the function at the transaction top level, decoded by Token Flow processes (ABI or inferred from similar functions). Contains function_signature if decoding was unsuccessful. |
call_path | text | RAW | NO | 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) |
token_address | chr(42) | RAW | NO | Address of the Ethereum contract associated with the token. |
token_symbol | text | DECODED | NO | Symbol or ticker symbol of the token, which is a short alphanumeric code representing the token. |
token_name | text | DECODED | NO | Full name or title of the token. It provides a more descriptive name for the token beyond its symbol. |
token_standard | text | DECODED | YES | Token standard or protocol that the token adheres to. Currently supported: ERC20, ERC721, ERC1155, ERC4626. NULL if token standard could not me recognized. |
token_decimals | int | DECODED | NO | Number of decimal places the token uses (scaling factor). |
function_name | text | DECODED | NO | Name of the function that the initiated the transfer, decoded by Token Flow processes (ABI or inferred from similar functions). Contains function_signature if decoding was unsuccessful. |
sender | char(42) | RAW | NO | Address of the transfer sender. |
receiver | char(42) | RAW | NO | Address of the transfer receiver. |
amount | decimal(38,0) | DECODED | NO | Token amount transferred. For Ether it is in WEI. |
dec_amount | double | DECODED | NO | Transferred amount scaled with token decimals. |
token_id | text | DECODED | NO | Identifier of the token for fungible tokens. |
gas_used | bigint | RAW | NO | Gas amount actually used by the transfer, expressed in gas units. |
order_index | bigint | TECH | NO | Technical field. Sequence of actions (call, events, diffs) that happened in a block and can be used for proper ordering of the transfers in the block. |
Tokens
Column | Data Type | Layer | Nullable | Definition |
---|---|---|---|---|
token_address | char(42) | RAW | NO | Address of the Ethereum contract associated with the token. |
token_standard | text | DECODED | NO | Token standard or protocol that the token adheres to. Currently supported: ERC20, ERC721, ERC1155, ERC4626. NULL if token standard could not me recognized. |
token_symbol | text | DECODED | YES | Symbol or ticker symbol of the token, which is a short alphanumeric code representing the token. |
token_name | text | DECODED | NO | Full name or title of the token. It provides a more descriptive name for the token beyond its symbol. |
token_decimals | int(11) | DECODED | NO | Number of decimal places the token uses (scaling factor). |
Last updated