Skip to main content
rwa_multichain.balances is the cross-chain holder snapshot table. Grain: one row per holder per token per chain per day, keyed on (blockchain, day, address, token_id). Use it to measure holder counts, concentration, and AUM.

Table schema

USD coverage is partial

balance_usd is populated only where the asset has an onchain NAV feed. NAV currently covers 366 assets across 18 chains from 48 issuers, which is roughly 14% of balance rows. Treat balance_usd IS NULL as missing price coverage, not zero value — summing balance_usd without checking coverage will understate AUM. To see coverage explicitly:
If you need a NAV source other than the default, or want to price a day the pipeline has not backfilled, join nav_intervals yourself. Note the address type mismatch — nav_intervals.asset_address is VARBINARY while token_address here is VARCHAR:

Non-EVM balances are reconstructed

On EVM chains, balances come from balance-update streams. On several non-EVM chains they are reconstructed by accumulating transfers, which means a chain that started tracking mid-history can carry a different starting point than a full-history rebuild would produce. Treat cross-chain holder totals for non-EVM chains as directional rather than exact.

Zero balances are retained

Rows persist after a holder empties a position, so balance = 0 rows appear in the snapshot. Filter balance > 0 when counting holders, or you will count every address that ever held the asset.

Example query

Top holders across all chains: