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 withaddress_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. Filterbalance > 0 when counting holders.