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, defensible answers to "what counts", and the difference between the answers is larger than most of the assets involved.

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

Since 2026-09-27 the market total is composed from two sources at one grain. For every (protocol, chain, day) where this project has read the token contracts itself, the value is our chain read: the on-chain supply of every contract named for that protocol in DefiLlama's open-source adapters, at the block nearest 00:00 UTC on EVM chains, priced by CoinGecko, with the adapter path, the block and the price basis recorded on every row. CoinGecko keeps history for coins it lists by id; for a token it prices only by contract the price exists only for now, so a past day of such a token carries the current price and its row says so (price_same_date false), and those rows are kept out of the archive comparison. Everywhere else the value is DefiLlama's per-chain TVL, aggregated by us under the toggles below after filtering out its derived series (borrowed, staking, pool2, treasury and composite keys like Ethereum-borrowed, which are not chains). Never both for one grain, so nothing is counted twice, and mart_market_state.chain_read_share says how much of the total is ours on each day.

Why two sources: in September 2026 DefiLlama moved the largest tokenized-asset protocols behind its paid API and its free feed began reporting their value as zero. The free feed alone read $4.5B for a market it had reported at $27.7B seven weeks earlier. The chain reads replace what the feed dropped and nothing else. The evidence that a chain read may stand in for the feed: on 2026-08-08, the last day the feed carried those protocols, the two sources agree within 5% on every chain row above $1M, 20 of 22 within 1% (docs/kill-test-series-c-2026-09-27.md), and assert_chain_reads_match_archive keeps that check running.

Measured now (2026-09-29, composed series, re-measured 2026-09-30): $26.2B across 41 chains carrying value, Ethereum 49.6%, multi-chain exposure share 53.6% (was 30.9% on 09-26; the step below is why). The DefiLlama-only series read $27.7B across 56 chains on 2026-08-08, its last complete day.

Some of what we read, DefiLlama does not track at all. Since 2026-09-29 the registry includes Franklin Templeton's BENJI, a tokenized government money fund on seven chains that DefiLlama has no protocol entry for. Its value is in the total like everything else read from chain, and it is reported separately as $663.3M on 2026-09-29, the first complete day with its Stellar and Aptos legs ($222.5M on 09-28, the five EVM legs only) so that anyone comparing this total with a DefiLlama-based one can subtract it.

The composed series has a step on 2026-09-27. Solana, Stellar, XRPL and Aptos have no public archive node, so their legs are read at head and written for the current day only. 2026-09-27 is the first day with the full registry read, and it carries $2.7B on those chains that no earlier day has. A move across that date is coverage, not flow; read_basis on every chain-read row says which reads were taken at the day's block and which at head.

What this does not yet cover: 19 gated protocols whose adapters count loans, vault balances or an issuer's own API rather than a supply (Centrifuge, Hastra, Midas, DigiFT and smaller ones, $3.24B on 2026-08-08). Their value is absent from the total, not estimated. And Solana, Aptos, Stellar and XRPL legs can only be read at head, so their daily series began on 2026-09-27; on the days between 08-08 and then, those legs are absent too.

Where we have replayed supply directly from chain events, we use it to validate that history, not to replace it. 1,913 points are chain-derived today, against 231,307 in total, so 0.83% of the series. That is a validation sample, and calling it coverage would be a lie.

These three numbers are read from the marts like everything else on this page. Until 2026-07-30 this paragraph hand-typed "1,821 … roughly 202,000" while the sentence above promised nothing here could drift, which is precisely the failure this page exists to rule out. It is fixed by computing it, not by correcting it.

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 comes from our own chain reads where we have them (Series C) and from DefiLlama elsewhere; chain_read_share on the headline says how much is ours. 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.2B on 2026-09-29), 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