Skip to main content
rwa_multichain.balances_enriched extends balances with entity attribution, so you can tell how much of an asset sits with centralized exchanges, lending protocols, and custodians versus unattributed wallets. Grain: one row per holder per token per chain per day, same as balances.

What it answers

Raw balances tell you an address holds 40% of an asset. They do not tell you whether that address is a custodian holding on behalf of thousands of end investors, an exchange omnibus wallet, or a single whale — three very different market-structure readings of the same number. The label columns resolve that:
  • How much of supply sits with CEXs, protocols, or custodians versus unknown wallets
  • Who the labeled top holders are
  • What an asset’s DeFi exposure is, via labeled lending-protocol holdings

Table schema

Unlabeled holders are the majority

Most holder addresses carry no label, and that is expected — label coverage skews toward large, well-known entities. address_category is NULL for unlabeled holders, so treat them as a distinct bucket rather than dropping them:
Dropping NULL categories understates total supply, sometimes severely. Any concentration figure should state what share of supply is attributed versus unlabeled.

Table schema notes

balance_usd carries the same NAV-coverage caveat as balances: it is populated only where the asset has an onchain NAV feed, so NULL means missing price coverage rather than zero value. Because one row per holder per day is preserved, zero balances persist after a holder exits. Filter balance > 0 when counting holders.

Example query

Labeled top holders for one asset:
CEX-held share of an asset over time: