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

Holder attribution

Known entities carry their resolved label and category. Other rows are preserved with address_category = 'unidentified'; supported EVM contracts use unidentified_smart_contract. address_category and address_subcategory are non-null, so no COALESCE(..., 'unlabeled') is needed. token_product_id is the exact join key to tokens_reference_data. Do not join the two tables on product_id: one product may have many chain deployments.

Table schema notes

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: