Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dune.com/llms.txt

Use this file to discover all available pages before exploring further.

The stablecoins_solana.balances_enriched table extends Solana stablecoin balances with address classification, whale flags, and a circulating supply flag.

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 (solana)
dayDATEBalance date (partition column)
addressVARCHARWallet address
token_symbolVARCHARToken symbol
token_addressVARCHARToken mint address
token_standardVARCHARToken standard (spl_token or token2022)
token_idVARCHARAlways NULL
balance_rawUINT256Raw balance
balanceDOUBLEDecimals-adjusted balance
balance_usdDOUBLEUSD value
currencyVARCHARISO 4217 code
address_categoryVARCHARAddress category (see below)
address_subcategoryVARCHARAddress subcategory (nullable)
address_projectVARCHARProject/entity name (nullable)
address_versionVARCHARProject version (nullable)
address_labelVARCHARLabel value (nullable)
is_whaleBOOLEANAddress holds >= $10M total stablecoins that day
is_circulatingBOOLEANtrue when the balance contributes to circulating supply. false for bridge escrows (lock-and-mint, rollup-escrow, check-balance, non-minting subcategories), issuer bridge escrow, and CEX locked-token wallets. Use WHERE is_circulating = true to compute circulating supply.
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: >= $10M balance → 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
bridgebridge_liquidityStablecoins escrowed or locked for cross-chain transfers.
dexdex_liquidity, dex_executionStablecoins in decentralized exchange pools and routing contracts.
lendinglending_liquidity, lending_executionStablecoins deployed as credit in lending protocols.
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_whaleunidentified_whaleUnlabeled addresses 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_solana.balances.
  2. Join curated Solana address labels to assign category, subcategory, and project metadata where available.
  3. Derive is_whale (>= $10M total stablecoin balance) and is_circulating (true unless the address is a bridge escrow / issuer bridge escrow / CEX locked-token wallet) 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_solana.balances_enriched AS b
WHERE 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.
  • For circulating supply, filter WHERE is_circulating = true. For bridge exposure, filter WHERE address_category = 'bridge'. Both are intentionally retained in the table.