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

ColumnData TypeLayerNullableDefinition

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

ColumnData TypeLayerNullableDefinition

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

ColumnData TypeLayerNullableDefinition

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

ColumnData TypeLayerNullableDefinition

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 NameData TypeLayerNullableDefinition

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 NameData TypeLayerNullableDefinition

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

ColumnData TypeLayerNullableDefinition

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

ColumnData TypeLayerNullableDefinition

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

ColumnData TypeLayerNullableDefinition

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