Methodology

Published estimates of the RWA market disagree by wide margins. CoinGecko has reported roughly $19.3B, rwa.xyz roughly $31B, Yellow roughly $33.5B. That spread is not arithmetic error, it is different assumptions about what counts, usually made silently.

twenty47 makes its assumptions explicit, switchable, and attached to the data. The values below are read back out of the marts, not typed onto this page, so they cannot drift from what the pipeline actually did.

What produced the current headline number

No Results

Where the headline number comes from

The market total is DefiLlama's per-chain TVL, aggregated by us under the toggles below, after filtering out DefiLlama's derived series (borrowed, staking, pool2, treasury) which are not chains. It is not computed from our own supply readings.

Where we have replayed supply directly from chain events, we use it to validate that history, not to replace it. 1,821 points are chain-derived today, against roughly 202,000 in total. That is a validation sample, and calling it coverage would be a lie.

Definitions

Some of these describe what we compute now. Some define a term for a capability that is not built yet. Which is which is marked, because a definition is not an implementation.

  • Provenance tier. 0 chain, 1 indexer, 2 explorer, 3 aggregator. Computed. Most of this site is tier 3 and says so.
  • Chain-scoped comparison. When supply is read on one chain, the only comparable aggregator figure is that chain's TVL, never the token's multi-chain total. Computed. Getting this wrong overstated one figure here by 0.813% before it was fixed.
  • Canonical supply. Supply of deployments marked canonical, excluding bridged and wrapped copies, because counting both sides of a bridge is the single easiest way to inflate a headline figure. Not computed yet. The mechanism exists but the registry behind it is empty, so our total currently inherits DefiLlama's treatment of bridged supply. Measured 2026-07-27: $21.01B of the $26.61B total, 79.0%, sits in protocols reported on more than one chain. That is an exposure bound and not an error estimate. A protocol on eight chains is double counted only if one pool of collateral backs copies on several of them; BlackRock BUIDL is natively issued and separately backed per chain, so its eight chains are eight real books rather than one counted eight times. A bridged token is the opposite case, and our sources do not distinguish them. So 79.0% is where double counting cannot be ruled out, and the true error is somewhere between zero and large. We would rather publish the bound than an estimate we cannot support.
  • TVL / AUM. Canonical supply multiplied by NAV for NAV-priced assets, or by market price for market-priced assets. Not computed yet. No published figure on this site is produced this way.
  • Net flow. Mints minus redemptions, read from chain events. Computed for 2 tokens, and deliberately absent everywhere else. Handing an allocator yield accrual labelled as inflow is the most damaging thing this site could do, so a flow is published only where three things hold at once: the event replay reconciles to live supply, the token is a non-yield-bearing asset so a mint means deposited capital rather than a dividend, and it lives on a single chain so a bridge-out cannot look like a redemption. Tether Gold reconciles perfectly and is still excluded, because it is multi-chain on 228 of 748 observed dates. For everything else this site says "growth", which is a different and weaker claim.
  • Premium / tracking error. Only meaningful for market-priced assets: commodities against spot, tokenized equities against the listed share. Computed for tokenized equities in the peer comparison; not yet for commodities.

Why price is not the spine

Most RWA value sits in tokenized treasuries, which are NAV-priced and redeem at par. Their price chart is a flat line by construction, so a price-first dashboard would be a dashboard of nothing. The variables that actually move are supply, AUM, yield, holder count, chain distribution, and net flows. Price is one column, and it only carries signal for two categories.

Toggleable assumptions

Each is a dbt variable, overridable per run without editing any SQL:

dbt build --vars '{"excluded_chains": ["Provenance"], "min_tvl_usd": 1000000}'
Variable Default Effect when changed
excluded_chains none Drops named chains from every total, for example permissioned books
min_tvl_usd 0 Noise floor, removes dust positions from the headline

Every mart row carries the settings that produced it, which is what the table at the top of this page is reading.

Contract address confidence

Contract addresses are public data and we want them. What travels with each one is how strongly it is attested, because a wrong address does not produce obviously broken output. It produces confidently wrong output: a clean, plausible supply reading taken from the wrong contract.

No Results
  • sourced — one source asserts it. Fine for analysis, never for on-chain reads.
  • corroborated — two independent sources agree.
  • verified — read back on-chain and matched. Only these may drive supply reads.
  • conflicted — sources disagree. Quarantined.

Currently quarantined

Where two sources name different addresses for the same asset and chain, neither is trusted. Disagreement is information, and publishing it is more honest than silently picking a winner.

No Results

Ingestion health

The dangerous failure for a data product is not a crash. It is a source quietly going stale while the dashboard keeps rendering confident numbers built on inputs that stopped moving. Nothing errors, everything looks fine, and the figure is wrong.

So freshness is published rather than kept in the database, and a test fails the build if any asset above $100M goes stale.

No Results
  • current — updated through the latest market date.
  • lagging — 2 to 7 days behind. Usually a weekend or a source revision, tolerated.
  • stale — more than 7 days behind. Fails the build for material assets.
  • missing — present in the current snapshot but absent from history.

Known limitations

  • Chain-level TVL currently comes from DefiLlama rather than our own on-chain reads. The Multicall3 reader is written and gated behind address verification; it starts contributing once an RPC endpoint is configured.
  • Holder counts are not ingested. Mint and redeem events ARE, as of 2026-07-27: 912 chain-replayed events behind fct_true_net_flows, covering PAXG (back to 2019-08-29) and CANA. Scoped hard, and the scope is the honest part: a token qualifies only if its replay reconciles to live supply, it pays no yield in new tokens, and it is single-chain, because otherwise a dividend or a bridge-out would read as a flow.
  • Permissioned-chain books are not included, and are not currently reachable.
  • Asset-class categories are our own keyword heuristic, not source-provided, and today's labels are applied backwards over history.
  • Growth figures are change in reported TVL, not net capital flow. TVL already reflects NAV, so a yield-accruing treasury gains value with no new money entering.
  • The current snapshot and the daily history disagree by roughly 0.09% ($25M on $26.6B), because a handful of abandoned protocols linger in the current list with a frozen value while their history stopped. The largest, Vesta Equity, has read exactly $20,634,337 since February 2025. A reconciliation test fails the build if the gap exceeds 1%.
  • Incremental models use a 3-day revision window, so a correction to an older day is caught by a drift test and a weekly full rebuild rather than immediately.

Back to market overview