ETH Data Model (Beta)
Current Version : deprecated - see MCDW documentation
IMPORTANT
This data set is deprecated and has been replaced by ETH Data Model.
Read Beta Migration Guide for details on how to migrate to the new dataset.
Decoded Data
Blocks
Column | Data Type | Description |
---|---|---|
block | Integer | Block number being a primary key. Numbers start from 0 (GENESIS) and are continuous integers. New blocks are always added at the end of the chain with a new block number. |
block_hash | String(66) | Block hash is a KECCAK-256 hash of the block's content and is unique for every block. |
timestamp | Timestamp (UTC) | Timestamp of the block. Every block has a different timestamp. Currently Ethereum blocks are added roughly every 12 seconds. Everything that happens in a block (calls, events, diffs) inherits the block's timestamp. |
canonical | Boolean | Information whether the block is canonical (True) or not (False). Blocks can be canonical (included in the chain) or uncles (not included in the chain). Currently the database does not have uncles so CANONICAL is always True. |
parent_hash | String(66) | Hash of a parent block (block with NUMBER-1). It is used for assuring the consistency of the chain. For block 0, parent hash is hexadecimal 0 (it does not have a parent). |
tx_count | Integer | Transaction count - the number of transactions (successful or reverted) included in the block. Can be 0 for some blocks ('empty blocks'). |
miner | String(42) | 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 | BigInteger | The maximum amount of gas that can be included in the block, set by the network. It is expressed in gas units. |
gas_used | BigInteger | Gas actually consumed by the block execution. It is expressed in gas units. |
base_fee_per_gas | BigInteger | After the London hard fork this represents the minimum GAS_USED multiplier required for a transaction to be included in a block. It is empty for blocks before London hard fork. |
extra_data | String(66) | Arbitrary binary data included by a miner of a block. |
Transactions
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table) |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
tx_index | Integer | Sequential number of the transaction within the block (starting from 0). |
tx_hash | String(66) | Transaction hash (the primary key). |
tx_type | Integer | Transaction type. Allowed types are:
|
from_address | String(42) | Calling address (transaction sender). It is always an Externally Owned Address. |
from_name | String | Name of the calling address. The name is generated using various labeling techniques and fallbacks to plain hex address if the name cannot be found. |
nonce | Integer | Sender counter of signed transactions, used to avoid sending the same transaction twice. |
to_address | String(42) | Called address (call receiver). In case of a pure Ether transfer it can be an EOA or smart contract. In case of function calls it should be always a smart contract. |
to_name | String | Called address name. The name is generated using various labeling techniques and fallbacks to contract name or plain hex address if the name cannot be found. |
tx_value | BigInteger | Value of Ether transferred along the transaction. It is expressed in WEI so must be divided by10 to the power of 18 to be transformed to Ether units. This value can be zero if no Ether is transferred. |
function_signature | String(10) | Hex signature of the top level function call or 0x in case of pure Ether transfer. |
function_name | String | Called function name |
arguments | Object | Decoded function arguments (key: value pairs) |
raw_arguments | Array | Raw arguments (array) |
return_value | String | Transaction return value (hex) |
max_fee_per_gas | BigInteger | The maximum fee the transaction sender is willing to pay for the gas (base fee + priority fee). |
max_priority_fee_per_gas | BigInteger | Gas "tip" included in the transaction to additionally incentivise miners. |
max_priority_fee_per_data_gas | BigInteger | Maximum amount of gas paid for the blobs of data stored on-chain. |
gas_limit | BigInteger | Maximum amount of gas that can be used before the transaction is reverted. It is expressed in gas units. |
gas_price | BigInteger | The amount of Ether the transaction sender wants to pay per unit of gas as a fee to the miner. |
gas_used | BigInteger | Gas amount actually used by the transaction. It is expressed in gas units. |
gas_refund | BigInteger | Total gas amount returned after the transaction execution. It is expressed in gas units. |
exception_error | String | Error description generated by the Ethereum Virtual Machine in the case of failed transactions. Empty for successful transactions. |
revert_reason | String | Error description provided by the smart contract in case of the reverted transactions. Empty for successful transactions. |
status | Boolean | Information if the transaction execution was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
decoding_status | Boolean | Information whether the decoding proces was successful (True) or failed (False). |
decoding_error | String | Description of the decoding error. Empty for successfully decoded rows. |
Calls
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
call_id | String | Unique call identifier (primary key). It is constructed by concatenating the block number with the transaction number and the call path. |
tx_hash | String(66) | Transaction hash (foreign key used to join with the TRANSACTIONS table). |
call_path | String | Position of the call in the transaction execution tree. Top level calls have empty path. Every other call is marked as [parent call_path] underscore [sub call number starting with 0]. For example call_path '0_2_1' means second subcall of third subcall of first subcall in a transaction. |
call_type | String | Enumeration of possible call types:
|
from_address | String(42) | Calling address (call sender). For top level call it is always an Externally Owned Address. For other calls it is always a smart contract. |
from_name | String | Calling address name. The name is generated using various labeling techniques and fallbacks to contract name or plain hex address if the name cannot be found. |
to_address | String(42) | Called address (call receiver). In case of a pure Ether transfer it can be an EOA or smart contract. In case of function calls it should be always a smart contract. If the call type is DELEGATECALL this address is used as a code library that is executed in the context of a calling address. |
to_name | String | Called contract name. The name is generated using various labeling techniques and fallbacks to contract name or plain hex address if the name cannot be found. |
code_address | String(42) | Address of the contract implementation |
call_value | BigInteger | Value of Ether transferred along the call. It is expressed in WEI so must be divided by10 to the power of 18 to be transformed to Ether units. This value can be zero if no Ether is transferred. |
function_signature | String(10) | Binary signature of the called function. It is always the first 8 bytes of the CALL_DATA. Can be empty if no function is called. |
function_name | String | Decoded function name. The name is decoded using the called contract ABI if it is available. If not, it is guessed using most popular functions from other contracts that use the same signature (in such case ABI_GUESSED is set to True). It fallbacks to binary signature if cannot be decoded using any of these approaches. |
arguments | Object | Decoded function arguments in a form of key:value pairs where key is the argument name and value is its decoded value. Arguments are decoded using the called contract ABI if it is available. If not, they are decoded using most popular functions from other contracts that use the same signature (in such case ABI_GUESSED is set to True). It fallbacks to a single 'call_data' argument if cannot be decoded using any of these approaches. |
raw_arguments | Array | Decoded function arguments in a form of array where each element is the dictionary of argument's name, raw_value and decoded_value. It preserves the arguments order so can be used to get for example the first argument regardless of its name. Arguments are decoded using the same strategy as for ARGUMENTS field. |
outputs | Object | Decoded outputs of the function call in a form of key:value pairs where key is the output name and value is its decoded value. Outputs are decoded using the called contract ABI if it is available. If not, they are decoded using most popular functions from other contracts that use the same signature (in such case ABI_GUESSED is set to True). It fallbacks to a single 'output_data' argument if cannot be decoded using any of these approaches. |
raw_outputs | Array | Decoded function outputs in a form of array where each element is the dictionary of output's name, raw_value and decoded_value. It preserves the outputs order so can be used to get for example the n-th output regardless of its name. Outputs are decoded using the same strategy as for OUTPUTS field. |
created_address | String(42) | Created address in the case of CREATE call. Not used for other call types. |
created_code | String | Contract creation code for 'create' type (hex) |
storage_address | String(42) | Address of the storage affected by the call, depending of the call type. For example for DELEGATECALL it is the storage of the calling contract. |
call_gas | BigInteger | Gas staked by the call before its execution. Maximum amount that can be used before the call is reverted. It is expressed in gas units. |
gas_used | BigInteger | Gas amount actually used by the call. It is expressed in gas units. |
gas_refund | BigInteger | Gas amount returned after the call execution. It is expressed in gas units. |
exception_error | String | Error description generated by the Ethereum Virtual Machine in the case of failed calls. Empty for successful calls. |
revert_reason | String | Error description provided by the smart contract in case of the reverted calls. Empty for successful calls. |
success | Boolean | Information whether the call was successfully executed (True) or failed (False). Successfully executed calls can be reverted by the smart contract logic so this should be used in connection with the STATUS field. |
status | Boolean | Information if the calls execution was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
decoding_status | Boolean | Information whether the decoding proces was successful (True) or failed (False). |
decoding_error | String | Description of the decoding error. Empty for successfully decoded rows. |
Events
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
tx_hash | String(66) | Transaction hash (foreign key used to join with the TRANSACTIONS table). |
log_index | Integer | Index of the event within a block. All successfully emitted events of a given block are stored as a sequence starting form LOG_INDEX number 0. For reverted events they are not stored on-chain and do not have LOG_INDEX. |
call_id | Integer | Identifier of the call that emitted the event (foreign key used to join with the CALLS table). |
contract_address | String(42) | Address of the smart contract that emitted the event. In case of DELEGATECALLS event is emitted by the calling contract but the its semantics (ABI) is defined by the called contract. |
contract_name | String | Emitting contract name. The name is generated using various labeling techniques and fallbacks to contract name or plain hex address if the name cannot be found. |
code_address | String(42) | Address of the contract implementation |
event_signature | String(66) | Event signature (hex) |
event_name | String | Decoded event name. The name is decoded using the implementation contract ABI if it is available. If not, it is guessed using most popular functions from other contracts that use the same signature (in such case ABI_GUESSED is set to True). It fallbacks to binary signature if cannot be decoded using any of these approaches. |
parameters | Object | Decoded event parameters in a form of key:value pairs where key is the parameter name and value is its decoded value. Parameters are decoded using the implementation contract ABI if it is available. If not, they are decoded using most popular events from other contracts that use the same signature (in such case ABI_GUESSED is set to True). It fallbacks to 'topic_parameter_1-3' and 'data_parameter_0-n' if cannot be decoded using any of these approaches. |
raw_parameters | Array | Decoded event parameters in a form of key:value pairs where key is the parameter name and value is its decoded value. Parameters are decoded using the implementation contract ABI if it is available. If not, they are decoded using most popular events from other contracts that use the same signature (in such case ABI_GUESSED is set to True). It fallbacks to 'topic_parameter_1-3' and 'data_parameter_0-n' if cannot be decoded using any of these approaches. |
status | Boolean | Information if the calls execution was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
order_index | Integer | Technical field that can be used to properly order all actions within a block. This is an integer without any particular meaning except for preserving the sequence of actions (calls, events, diffs). For some types of actions it is the only way to get their actual order. |
decoding_status | Boolean | Information whether the decoding proces was successful (True) or failed (False). |
decoding_error | String | Description of the decoding error. Empty for successfully decoded rows. |
State_diffs
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
tx_hash | String(66) | Transaction hash (foreign key used to join with the TRANSACTIONS table). |
call_id | Integer | Call identifier (foreign key used to join with the CALLS table). |
address | String(42) | Blockchain address that the change applies to. |
state_field | String | Name of the state filed that is being changed. Allowed names are:
|
reason | String | Reason for the state change. Allowed values for BALANCE field are:
Allowed values for NONCE field are:
Allowed values for CODE HASH field are:
|
prev_value | String(66) | State field value before the change. |
curr_value | String(66) | State field value after the change. |
status | Boolean | Information if the state change was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
order_index | Integer | Technical field that can be used to properly order all actions within a block. This is an integer without any particular meaning except for preserving the sequence of actions (calls, events, diffs). For some types of actions it is the only way to get their actual order. |
Storage_diffs
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
tx_hash | String(66) | Transaction hash (foreign key used to join with the TRANSACTIONS table). |
call_id | Integer | Call identifier (foreign key used to join with the CALLS table). |
contract_address | String(42) | Address of a contract that the change applies to. |
contract_name | String | Name of a contract that the change applies to. |
code_name | String(42) | Address of the contract implementation |
raw_location | String | Pre-hashed memory location, including the slot number and keys used for mappings. |
location | String | Decoded pre-hashed memory location, including the variable name and keys used for mappings. |
variable | String | Decoded variable name. |
variable_type | String | Decoded variable type. Allowed types are:
|
slot | Integer | Memory slot number (sequential position of the variable in the smart contract code). |
key0 | String | First mapping key |
key1 | String | Second mapping key |
key2 | String | Third mapping key |
key3 | String | Fourth mapping key |
struct0 | String | First structure name |
field0 | String | First structure field |
struct1 | String | Second structure name |
field1 | String | Second structure field |
prev_value | String(66) | Value before the change (hex) |
curr_value | String(66) | Value after the change (hex) |
status | Boolean | Information if the storage change was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
order_index | Integer | Technical field that can be used to properly order all actions within a block. This is an integer without any particular meaning except for preserving the sequence of actions (calls, events, diffs). For some types of actions it is the only way to get their actual order. |
decoding_status | Boolean | Information whether the decoding proces was successful (True) or failed (False). |
decoding_error | String | Description of the decoding error. Empty for successfully decoded rows. |
Raw Data
Blocks
Column | Data Type | Description |
---|---|---|
block | Integer | Block number being a primary key. Numbers start from 0 (GENESIS) and are continuous integers. New blocks are always added at the end of the chain with a new block number. |
block_hash | String(66) | Block hash is a KECCAK-256 hash of the block's content and is unique for every block. |
timestamp | Timestamp (UTC) | Timestamp of the block. Every block has a different timestamp. Currently Ethereum blocks are added roughly every 12 seconds. Everything that happens in a block (calls, events, diffs) inherits the block's timestamp. |
canonical | Boolean | Information whether the block is canonical (True) or not (False). Blocks can be canonical (included in the chain) or uncles (not included in the chain). Currently the database does not have uncles so CANONICAL is always True. |
parent_hash | String(66) | Hash of a parent block (block with NUMBER-1). It is used for assuring the consistency of the chain. For block 0, parent hash is hexadecimal 0 (it does not have a parent). |
tx_count | Integer | Transaction count - the number of transactions (successful or reverted) included in the block. Can be 0 for some blocks ('empty blocks'). |
miner | String(42) | 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 | BigInteger | The maximum amount of gas that can be included in the block, set by the network. It is expressed in gas units. |
gas_used | BigInteger | Gas actually consumed by the block execution. It is expressed in gas units. |
base_fee_per_gas | BigInteger | After the London hard fork this represents the minimum GAS_USED multiplier required for a transaction to be included in a block. It is empty for blocks before London hard fork. |
extra_data | String(66) | Arbitrary binary data included by a miner of a block. |
Transactions
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
tx_index | Integer | Sequential number of the transaction within the block (starting from 0). |
tx_hash | String(66) | Transaction hash (the primary key). |
tx_type | Integer | Transaction type. Allowed types are:
|
from_address | String(42) | Calling address (transaction sender). It is always an Externally Owned Address. |
nonce | Integer | Sender counter of signed transactions, used to avoid sending the same transaction twice. |
to_address | String(42) | Called address (call receiver). In case of a pure Ether transfer it can be an EOA or smart contract. In case of function calls it should be always a smart contract. |
tx_value | BigInteger | Value of Ether transferred along the transaction, expressed in WEI. It must be divided by 10 to the power of 18 to be transformed to Ether units. This value can be zero if no Ether is transferred. |
call_data | String | Transaction call data (hex) |
return_value | String | Transaction return value (hex) |
max_fee_per_gas | BigInteger | The maximum fee the transaction sender is willing to pay for the gas (base fee + priority fee) (post London fork). |
max_priority_fee_per_gas | BigInteger | Gas "tip" included in the transaction to additionally incentivise miners (post London fork). |
max_priority_fee_per_data_gas | BigInteger | Maximum amount of gas paid for the blobs of data stored on-chain (post EIP 4844) |
gas_limit | BigInteger | Maximum amount of gas that can be used before the transaction is reverted, expressed in gas units. |
gas_price | BigInteger | The amount of Ether the transaction sender wants to pay per unit of gas as a fee to the miner, expressed in WEI. |
gas_used | BigInteger | Gas amount actually used by the transaction, expressed in gas units. |
gas_refund | BigInteger | Total gas amount returned after the transaction execution, expressed in gas units. |
exception_error | String | Error description generated by the Ethereum Virtual Machine in the case of failed transactions. Empty for successful transactions. |
revert_reason | String | Error description provided by the smart contract in case of the reverted transactions. Empty for successful transactions. |
status | Boolean | Information if the transaction execution was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
Calls
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
call_id | Integer | Unique call identifier (primary key). It is constructed by concatenating the block number with the transaction number and the call path. |
tx_hash | String(66) | Transaction hash (foreign key used to join with the TRANSACTIONS table). |
call_path | String | Position of the call in the transaction execution tree. Top level calls have empty path. Every other call is marked as [parent call_path] underscore [sub call number starting with 0]. For example call_path '0_2_1' means second subcall of third subcall of first subcall in a transaction. |
call_type | String | Enumeration of possible call types:
|
from_address | String(42) | Calling address (call sender). For top level call it is always an Externally Owned Address. For other calls it is always a smart contract. |
to_address | String(42) | Called address (call receiver). In case of a pure Ether transfer it can be an EOA or smart contract. In case of function calls it should be always a smart contract. If the call type is DELEGATECALL this address is used as a code library that is executed in the context of a calling address. |
call_value | BigInteger | Value of Ether transferred along the call, expressed in WEI. It be divided by 10 to the power of 18 to be transformed to Ether units. This value can be zero if no Ether is transferred. |
call_data | String | Call binary payload that is sent to the called contract. Typically it contains the function signature (first 8 bytes) and ABI encoded arguments. In practice it can be any binary data that is stored on the blockchain (e.g. L2 rollup data or just an 'Ethereum grafitti'). It can also be empty if no function is called (e.g. for a pure Ether transfer) |
return_value | String | |
created_address | String(42) | Created address in the case of CREATE call. Not used for other call types. |
created_code | String | |
storage_address | String(42) | Address of the storage affected by the call, depending of the call type. For example for DELEGATECALL it is the storage of the calling contract. |
call_gas | BigInteger | Gas staked by the call before its execution. Maximum amount that can be used before the call is reverted. It is expressed in gas units. |
gas_used | BigInteger | Gas amount actually used by the call. It is expressed in gas units. |
gas_refund | BigInteger | Gas amount returned after the call execution. It is expressed in gas units. |
exception_error | String | Error description generated by the Ethereum Virtual Machine in the case of failed calls. Empty for successful calls. |
revert_reason | String | Error description provided by the smart contract in case of the reverted calls. Empty for successful calls. |
success | Boolean | Information whether the call was successfully executed (True) or failed (False). Successfully executed calls can be reverted by the smart contract logic so this should be used in connection with the STATUS field. |
status | Boolean | Information if the calls execution was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
order_index | Integer | Technical field that can be used to properly order all actions within a block. This is an integer without any particular meaning except for preserving the sequence of actions (calls, events, diffs). For some types of actions it is the only way to get their actual order. |
Events
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
tx_hash | String(66) | Transaction hash (foreign key used to join with the TRANSACTIONS table). |
log_index | Integer | Index of the event within a block. All successfully emitted events of a given block are stored as a sequence starting form LOG_INDEX number 0. For reverted events they are not stored on-chain and do not have LOG_INDEX. |
call_id | Integer | Identifier of the call that emitted the event (foreign key used to join with the CALLS table). |
contract | String(42) | Address of the smart contract that emitted the event. In case of DELEGATECALLS event is emitted by the calling contract but the its semantics (ABI) is defined by the called contract. |
log_data | String | Raw hexadecimal content of the event. |
topic0 | String | Raw hexadecimal indexed content of the event. For standard events Topic 0 is an event signature. |
topic1 | String | Raw hexadecimal indexed content of the event. |
topic2 | String | Raw hexadecimal indexed content of the event. |
topic3 | String | Raw hexadecimal indexed content of the event. |
status | Boolean | Information if the calls execution was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
order_index | Integer | Technical field that can be used to properly order all actions within a block. This is an integer without any particular meaning except for preserving the sequence of actions (calls, events, diffs). For some types of actions it is the only way to get their actual order. |
State_diffs
Column | Data Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
tx_hash | String(66) | Transaction hash (foreign key used to join with the TRANSACTIONS table). |
call_id | Integer | Call identifier (foreign key used to join with the CALLS table). |
address | String(42) | Blockchain address that the change applies to. |
state_field | String | Name of the state filed that is being changed. Allowed names are:
|
reason | String | Reason for the state change. Allowed values for BALANCE field are:
Allowed values for NONCE field are:
Allowed values for CODE HASH field are:
|
prev_value | String(66) | State field value before the change. |
curr_value | String(66) | State field value after the change. |
status | Boolean | Information if the state change was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
order_index | Integer | Technical field that can be used to properly order all actions within a block. This is an integer without any particular meaning except for preserving the sequence of actions (calls, events, diffs). For some types of actions it is the only way to get their actual order. |
Storage_diffs
Column | Type | Description |
---|---|---|
block | Integer | Block number (foreign key used to join with the BLOCKS table). |
timestamp | Timestamp (UTC) | Block timestamp inherited from the BLOCKS table. |
tx_hash | String(66) | Transaction hash (foreign key used to join with the TRANSACTIONS table). |
call_id | Integer | Call identifier (foreign key used to join with the CALLS table). |
contract | String(42) | Address of a contract that the change applies to. |
location | String | Pre-hashed memory location, including the slot number and keys used for mappings. |
prev_value | String(66) | Raw storage value before the change. |
curr_value | String(66) | Raw storage value after the change. |
status | Boolean | Information if the storage change was persistent (True) or reverted (False). Reverts can originate from technical failures (code errors), gas limits (more gas needed than was staked) or contract logic. |
order_index | Integer | Technical field that can be used to properly order all actions within a block. This is an integer without any particular meaning except for preserving the sequence of actions (calls, events, diffs). For some types of actions it is the only way to get their actual order. |
Last updated