Skip to main content
The stablecoins_evm.balances_enriched table extends EVM stablecoin balances with address classification, entity tags, and whale flags.

Premium dataset access

This dataset is part of a premium offering and requires additional access. Contact the Dune enterprise team to request access.

Why these enriched tables matter

Stablecoin analysis comes down to two fundamental questions:
  1. Where are stablecoins right now? (balances)
  2. How did they get there? (activity)
This balances-enriched table answers the first question by going beyond raw balances and adding attribution for where capital sits: CEX, lending, treasury, yield, bridge, whale concentration, and more.

Table schema

ColumnTypeDescription
blockchainVARCHARChain name
dayDATEBalance date (partition column)
addressVARBINARYHolder address
token_symbolVARCHARToken symbol
token_addressVARBINARYToken contract address
token_standardVARCHARToken standard (erc20)
token_idVARCHARAlways NULL
balance_rawUINT256Raw balance
balanceDOUBLEDecimals-adjusted balance
balance_usdDOUBLEUSD value
currencyVARCHARISO 4217 code
address_categoryVARCHARAddress category (see below)
address_subcategoryVARCHARAddress subcategory
address_projectVARCHARProject/entity name (nullable)
address_versionVARCHARProject version (nullable)
address_labelVARCHARLabel value (nullable)
is_smart_contractBOOLEANContract flag
is_whaleBOOLEANAddress holds >= $10M total stablecoins that day
last_updatedTIMESTAMPLast balance update time

Address categories

Every address receives exactly one address_category — no double counting is possible by construction. When an address matches a curated label, that label wins. Unlabeled addresses fall through: smart contract → unidentified_smart_contract, EOA with >= $10M → unidentified_whale, otherwise → unidentified. When an address appears in multiple label sets, a fixed priority order resolves the conflict (table is ordered by priority, highest first):
address_categoryAllowed address_subcategory valuesDescription
erc20_contracterc20_contractCanonical stablecoin token contracts defining supply. Not deployed capital.
dexdex_liquidity, dex_executionStablecoins in decentralized exchange pools and routing contracts.
lendinglending_liquidity, lending_executionStablecoins deployed as credit in lending protocols.
bridgebridge_liquidityStablecoins escrowed or locked for cross-chain transfers.
yieldyield_liquidity, yield_executionStablecoins in strategy or wrapper contracts earning passive yield.
issuerissuer_operations, issuer_treasuryStablecoin monetary infrastructure — minting, redemption, peg management.
treasury_or_governancetreasury, treasury_collector, governanceProtocol-controlled capital for governance, reserves, or fees.
cexcexKnown exchange-controlled wallets (hot and cold). Not user deposit addresses.
burnburnIrrecoverable token sinks (dead/burn addresses).
unidentified_smart_contractunidentified_smart_contractContracts detected onchain but not yet categorized.
unidentified_whaleunidentified_whaleUnlabeled EOAs holding >= $10M total stablecoin balance that day. Recalculated daily.
unidentifiedunidentifiedAddresses with no known classification.
As label coverage expands, new values may be added in backward-compatible fashion.

Methodology

  1. Start from daily rows in stablecoins_evm.balances.
  2. Join curated address labels to assign address_category, subcategory, and project metadata where a label exists.
  3. Derive is_smart_contract (from creation traces) and is_whale (>= $10M total stablecoin balance) flags per address per day.
  4. Apply the priority waterfall for unlabeled addresses to maintain complete coverage.
Category totals should be interpreted as “where balances sit” rather than ownership or liability accounting. Labels represent the best-known economic function of an address and can evolve as coverage improves.

Sample query

SELECT
    b.address_category
    , b.token_symbol
    , SUM(b.balance_usd) AS total_usd
FROM stablecoins_evm.balances_enriched AS b
WHERE b.blockchain = 'ethereum'
    AND b.day = CURRENT_DATE
    AND b.balance > 0
GROUP BY b.address_category, b.token_symbol
ORDER BY total_usd DESC

Notes

  • For performance, filter by blockchain and day.
  • Bridge balances are intentionally retained. Filter with address_category = 'bridge' to exclude them.

Interpreting balances vs circulating supply

  • This table represents onchain balances, which is different from circulating supply.
  • Bridge-locked funds are intentionally included in balances. For example, more than $4B USDT can appear in the Tether USDT0Adapter contract on Ethereum while representing circulating USDT0 on other chains.
  • We are not subtracting bridge balances at this stage because exclusions are not objective across bridge designs, and some bridge-held balances represent liquidity for chains not covered elsewhere.
  • Bridge exposure is directly analyzable with address_category = 'bridge'.
  • We will continue to work toward a more reliable total supply measure.