Transfers

ERC-20 and native token transfers enriched with symbols and USD pricing across 7 chains.

7 tables — one per chain.

TableChainNotable
agent.ethereum_transfersEthereumBillions of rows
agent.base_transfersBase7.5B+ rows
agent.arbitrum_transfersArbitrum
agent.bsc_transfersBSCBNB is native token (18 decimals)
agent.tron_transfersTron4.6B rows, base58 addresses, USDT-heavy
agent.robinhood_transfersRobinhood ChainEvent-based ERC-20 + NFT transfers, extended schema (see below)
agent.tempo_transfersTempoTIP-20 stablecoin transfers, different schema (see below)

Schema

Engine: MergeTree | Partition: toYYYYMM(block_date) | ORDER BY: contract_address, block_number, tx_hash, evt_index

ColumnTypeDescription
blockchainStringChain name
block_dateDateAlways filter on this — tables are billions of rows
block_timeDateTime64(3)UTC timestamp
block_numberUInt64
tx_hashStringTransaction hash
evt_indexUInt32Event log index
trace_addressArray(Int64)Non-empty for native transfers, empty for ERC-20
token_standardString'erc20' or 'native'
tx_fromStringTransaction sender (EOA)
tx_toStringTransaction recipient
tx_indexUInt32
fromStringTransfer sender
toStringTransfer recipient
contract_addressStringToken contract. Zero address for native token.
symbolStringToken symbol
amount_rawUInt256Raw amount — divide by 10^decimals
amountFloat64Decimal-adjusted amount
price_usdFloat64USD price at transfer time
amount_usdNullable(Float64)USD value

Good to Know

  • These are the largest tables in the catalog. Always use tight block_date filters.
  • token_standard is 'erc20' or 'native' — filter accordingly.
  • Native transfers come from traces and include internal contract-to-contract transfers.
  • Does not include ERC-721 (NFT) or ERC-1155 (multi-token) transfers.
  • For net flows: SUM(amount WHERE to=addr) - SUM(amount WHERE from=addr).

Tempo Transfers Schema

agent.tempo_transfers uses a different schema. Tempo is a stablecoin payment chain — all tokens are USD-pegged, so amounts are pre-computed in USD with no need for price lookups.

Engine: MergeTree | Partition: toYYYYMM(block_date) | ORDER BY: block_date, token_address, transfer_from, block_number, log_index

ColumnTypeDescription
block_dateDatePartition key
block_numberUInt64
transaction_indexUInt32
log_indexUInt32
transaction_hashString
transfer_fromStringSender address
transfer_toStringRecipient address
amount_usdFloat64Transfer amount in USD (all Tempo tokens are USD stablecoins)
token_addressStringTIP-20 token contract
token_symbolStringToken symbol (e.g., pathUSD, USDC)

Robinhood Chain Transfers Schema

agent.robinhood_transfers has every column of the EVM schema above, plus the columns below. It requires a block_date lower bound.

ColumnTypeDescription
unique_keyStringUnique row identifier
item_indexUInt32Item position within a batch transfer event
from_address / to_addressStringSame values as from / to
token_idUInt256NFT token ID
has_token_idBoolTrue for ERC-721 / ERC-1155 rows
token_nameNullable(String)Token name
decimalsNullable(Int64)Token decimals
metadata_availableUInt81 when token metadata was resolved
price_availableUInt81 when amount_usd is populated
price_sourceNullable(String)Price source (e.g., coingecko, dex_vwap)
amount_usd_semanticsStringper_event_valuation_not_volume
coverage_semanticsStringevent_only_no_traces
  • token_standard is 'erc20', 'erc721', or 'erc1155' — unlike the other chains, NFT transfers are included. Filter to 'erc20' for fungible flows.
  • Built from transfer events only (no traces), so native ETH transfers are not included.
  • amount_usd values each event; summing it is not trading volume. Only part of ERC-20 transfers are priced — filter on price_available = 1.
AskSurf (Surf AI) — Market Intelligence for AI Agents