EVM Calls

The core EVM blockchain data collection

Availability

This collection is available for the Ethereum, Polygon, Arbitrum and Base.

Points-of-PresenceTables

eu-west-1

evm_calls_ethereum_mainnet_v1 evm_calls_arbitrum_mainnet_v1 evm_calls_polygon_mainnet_v1 evm_calls_base_mainnet_v1

Mapping rules

The table is wide and sparse. Each call's input and output is stored in a column named after its index in the input list and its derived type.

The column's name for a given input is derived as such: input_index_value_type.

The column's name for a given output is derived as such: output_index_value_type

We support calls with up to 12 inputs and 3 outputs.

The mapping rules used to derive an input type from an ABI type are specified in the table below.

ABI TypeDerived Type

address

address

string

string

bytes

string

bytes<M> where 0 < M <= 32

string

bool

uint8

uint8

uint8

uintX where 8 < X <= 32

uint32

uintX where 32 < X <= 64

uint64

uintX where 64 < X <= 256

uint256

int8

int8

intX where 8 < X <= 32

int32

intX where 32 < X <= 64

int64

intX where 64 < X <= 256

int256

address[]

address_array

string[]

string_array

bool[]

uint8_array

uint8[]

uint8_array

uintX[] where 8 < X <= 32

uint32_array

uintX[] where 32 < M <= 64

uint64_array

uintX[] where 64 < M <= 256

uint256_array

int8[]

int8_array

intX[] where 8 < X <= 32

int32_array

intX[] where 32 < X <= 64

int64_array

intX[] where 64 < X <= 256

int256_array

Here is how we store the various inputs and outputs of the transfer function:

transfer(recipient address, amount uint256)(ok bool)

  • recipient value is stored in the column input_0_value_address

  • amount value is stored in the column input_1_value_uint256

  • ok value is stored in the column output_0_value_uint8

Table Schema

Column NameColumn TypeDescription

chain_name

string

Name of the chain (ethereum, arbitrum, polygon, ...).

chain_network_name

string

name of the network (mainnet).

block_hash

string

Block hash encoded as binary string

block_number

uint64

Block height

block_index

uint32

Index of the call in the block

transaction_index

uint32

Index of the transaction in the block

transaction_status

uint32

Status of the transaction

timestamp

datetime

UNIX timestamp for when the block was collated

signature

string

Signature of the event as defined per the ABI spec (transfer(address,uint256))

fullsig

string

Signature of the event as defined per the ABI spec with the addition of the indexed modifier (transfer(address,uint256)(bool))

from

string

Address of the caller

gas

uint32

Number of gas used during the call

value

uint256

Amount of native token sent to the contract

call_type

string

The type of method used (call, delegatecall, staticcall, ...)

subcalls

uint32

The number of traces below this one in the call stack

call_address

uint32[]

The position of this trace in the call stack

error

string

The error returned during the execution of the method, if any

input_index_value_type

Content of the input at index

output_index_type

string

ABI type of the output at index

output_index_value_type

Content of the output at index

Usage

The below query make use of the evm_events_ethereum_mainnet_v1 table to report on gas usage per each method of the ShibaInu-ETH Uniswap V2 pair.

We compute the total gas used and average gas used for each method called since genesis.

The result is sorted by decreasing total gas used value.

select 
    signature,
    sum(gas) as total_gas,
    avg(gas) as avg_gas,
    count(*) as total_calls,
    countIf(error <> '') as total_errors
from evm_calls_ethereum_mainnet
where to = '0x811beEd0119b4AfCE20D2583EB608C6F7AF1954f'
group by signature
order by total_gas DESC

Last updated