amount_raw is the movement in the token’s smallest unit; divide by 10^decimals from dimensions.tokens for a token amount.
Columns
| Column | Type | Description |
|---|---|---|
partition_key | TIMESTAMP | The 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_timestamp | TIMESTAMP | When the block was produced. |
block_number | INT64 | Block height, or the slot on Solana. |
transaction_hash | STRING | Transaction the movement belongs to. Null on hydradx, where a transfer can be emitted by a block hook rather than by a transaction. |
transaction_index | INT64 | Position of the transaction in its block. Solana only. |
outer_event_index | INT64 | Enclosing 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_index | INT64 | Position within the transaction: the log index, or the instruction index on Solana. |
chain_id | STRING | Chain the movement happened on. |
token_type | STRING | Token standard: erc20, spl or trc20. |
token_id | STRING | Join key to dimensions.tokens and to dimensions.asset_tokens, which is what names the stablecoin. |
token_address | STRING | The 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_type | STRING | transfer, mint or burn. |
from_address | STRING | Account debited. Null on a mint. |
to_address | STRING | Account credited. Null on a burn. |
to_owner | STRING | Holder behind to_address. Solana transfers only: null on exactly the rows where token_address is, and always null on mints and burns. |
authority_address | STRING | Account that authorised the instruction. Solana only. |
transaction_signer | STRING | Signer of the enclosing transaction. Solana only. |
executing_account | STRING | Program that executed the instruction. Solana only. |
amount_raw | STRING | Amount in the token’s smallest unit, as a decimal string, because a uint256 exceeds every BigQuery numeric type. Divide by 10^decimals. |
surrogate_key | BYTES | Row identity, a 128-bit hash of the columns that define the grain. Stable across rebuilds; nothing else needs it. |
Sample queries
- One stablecoin, one day
- Largest native movements
- Issuance in a window
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.