Skip to main content
One row per stablecoin movement: a transfer, a mint or a burn of one deployment, at the moment it happened onchain. amount_raw is the movement in the token’s smallest unit; divide by 10^decimals from dimensions.tokens for a token amount.

Columns

ColumnTypeDescription
partition_keyTIMESTAMPThe month the row belongs to. The table is partitioned on it, so a date filter is cheapest when it names this alongside block_timestamp.
block_timestampTIMESTAMPWhen the block was produced.
block_numberINT64Block height, or the slot on Solana.
transaction_hashSTRINGTransaction the movement belongs to. Null on hydradx, where a transfer can be emitted by a block hook rather than by a transaction.
transaction_indexINT64Position of the transaction in its block. Solana only.
outer_event_indexINT64Enclosing instruction position on Solana. Null on the log-shaped chains, which have one nesting level, and null on Solana wherever the instruction is top level and has nothing enclosing it.
event_indexINT64Position within the transaction: the log index, or the instruction index on Solana.
chain_idSTRINGChain the movement happened on.
token_typeSTRINGToken standard: erc20, spl or trc20.
token_idSTRINGJoin key to dimensions.tokens and to dimensions.asset_tokens, which is what names the stablecoin.
token_addressSTRINGThe token. Filter on this. Null on the Solana transfers whose token account the upstream decode could not resolve, which also leaves token_id null.
event_typeSTRINGtransfer, mint or burn.
from_addressSTRINGAccount debited. Null on a mint.
to_addressSTRINGAccount credited. Null on a burn.
to_ownerSTRINGHolder behind to_address. Solana transfers only: null on exactly the rows where token_address is, and always null on mints and burns.
authority_addressSTRINGAccount that authorised the instruction. Solana only.
transaction_signerSTRINGSigner of the enclosing transaction. Solana only.
executing_accountSTRINGProgram that executed the instruction. Solana only.
amount_rawSTRINGAmount in the token’s smallest unit, as a decimal string, because a uint256 exceeds every BigQuery numeric type. Divide by 10^decimals.
surrogate_keyBYTESRow identity, a 128-bit hash of the columns that define the grain. Stable across rebuilds; nothing else needs it.

Sample queries

This table is large and split by day. Bound block_timestamp and filter chain_id on every query, or you read the whole table and the whole table is billed to you.
Joining dimensions.asset_tokens on token_id is what keeps the stablecoin rows, and the same join names the asset. The table is clustered on token_address then chain_id, and naming the pair reads less than the address alone.