Methodology
Published estimates of the tokenized real-world-asset market disagree by wide margins, because they make different assumptions about what counts, usually silently. twenty47 makes its assumptions explicit, switchable, and attached to the data. Every value on this page is read back out of the database, not typed, so it cannot drift from what the pipeline actually did.
Start here if you want to check a number
- Find its date. Every figure on this site belongs to a day, and the day is printed beside it. The footer of every page says which day’s reading the page was built from and when the database was built.
- Get the same number as data. The day’s headline figures are served as JSON at /data/market_state.json and /data/today.json, with the date they describe inside each file. Every day is also kept at its own permanent URL, for example pub-851bd9b040a64306a75733cafce51b66.r2.dev/snapshots/2026/09/29/market_state.json, so two days can be diffed and nothing published is ever revised silently.
- See the rows behind it. The audit console at twenty47.io carries the same numbers as full tables you can filter, down to the protocol, the chain and the block.
- Read the definition. The metric library in the repository has one entry per published metric, and the “is NOT” sections carry the weight.
- Reproduce a chain read. For any protocol on the how we count page, the contract, the block and the price basis are recorded on every row; the same call to a public node returns the same supply.
What produced the current headline number
| As of | Market size | Chains counted | Chains excluded | Noise floor (USD) | Built at |
|---|---|---|---|---|---|
| 29 Sep 2026 | $26.2B | 41 | none | 0 | 2026-09-30T23:24:01Z |
Where the headline number comes from
Since 27 September 2026 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. Everywhere else the value is DefiLlama’s per-chain figure, 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 the headline carries the share that is ours on each day.
Why two sources: in August 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 8 August 2026, 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%, and a test keeps that comparison running on every build.
Measured now, 29 September 2026: $26.2B across 41 chains carrying value, Ethereum 49.6%, 82.5% read from chain by this project, multi-chain exposure share 67.1% (protocols reported on more than one chain, as of 29 Sep 2026). The single-source series read $27.7B across 56 chains on 8 August 2026, its last complete day.
Some of what we read, no aggregator tracks at all. Since 29 September 2026 the registry includes Franklin Templeton’s BENJI, a tokenized government money fund on seven chains that DefiLlama has no entry for. Its value is in the total like everything else read from chain, and it is reported separately, $663M on 29 Sep 2026, so that anyone comparing this total with an aggregator’s can subtract it.
The composed series has a step on 27 September 2026. Solana, Stellar, XRPL and Aptos have no public archive node, so their legs are read at head and written for the current day only. 27 September is the first day with the full registry read, and it carries about $2.7B on those chains that no earlier day has. A move across that date is coverage, not flow, and the headline chart marks it.
What this does not yet cover: 105 (protocol, chain) legs worth $646M on 8 August, mostly chains without an endpoint this project can reach. Their value is absent from the total, not estimated.
Where we have replayed supply directly from chain events, we use it to validate history, not to replace it. 1,913 points are chain-derived today, against 231,307 in total, so 0.827% of the series. 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 the history on 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 value, 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 the total currently inherits its sources’ treatment of bridged supply. Measured 27 July 2026: 79.0% of the total sat 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, and BlackRock BUIDL is natively issued and separately backed per chain. We publish the bound rather than an estimate we cannot support.
- Net flow. Mints minus redemptions, read from chain events. Computed for 17 tokens of 2 protocols on the flows page, and deliberately absent everywhere else. Handing a reader yield accrual labelled as inflow is the most damaging thing this site could do, so a flow is published only where the event trail reconciles to the change in supply and any yield paid as new tokens is found and subtracted. 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 against their peers; the comparison against the real share was withdrawn on 31 July 2026 because the daily close is up to a session old.
Why price is not the spine
Most tokenized value sits in treasury funds, 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, holder count, chain distribution and net flows. Price is one column, and it only carries signal for commodities and equities.
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 row of every published table 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.
| Confidence | Observations | Distinct addresses | Sources |
|---|---|---|---|
| verified | 6 | 3 | 2 |
| corroborated | 68 | 34 | 2 |
| sourced | 60 | 53 | 2 |
| conflicted | 6 | 6 | 2 |
- 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.
| Asset | Chain | Address | Source |
|---|---|---|---|
| brickken | Ethereum | 0x0a638f07acc6969abf392bb009f216d22adea36d | defillama |
| brickken | ethereum | 0xfc209eeba3d744aa741cc5c2a73ebf9c977b5f82 | coingecko |
| propbase | aptos | 0x6dba1728c73363be1bdd4d504844c40fbb893e368ccbeff1d1bd83497dbc756d | defillama |
| propbase | aptos | 0xe50684a338db732d8fb8a3ac71c4b8633878bd0193bca5de2ebc852a83b35099::propbase_coin::props | coingecko |
| stobox | Binance | 0xa6422e3e219ee6d4c1b18895275fe43556fd50ed | defillama |
| stobox | binance-smart-chain | 0xb0c4080a8fa7afa11a09473f3be14d44af3f8743 | coingecko |
Ingestion health
The dangerous failure for a data product is not a crash. It is a source quietly going stale while the site keeps rendering confident numbers built on inputs that stopped moving. So freshness is published, and a test fails the build if any asset above $100M goes stale.
| Status | Protocols | Value |
|---|---|---|
| current | 124 | $4.57B |
| stale | 41 | $20.9M |
| missing | 16 | — |
- 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 value comes from our own chain reads where we have them and from DefiLlama’s feed elsewhere; the headline says how much is ours on each day.
- Holder counts are not ingested. Mint and redeem events are, for the tokens on the flows page.
- 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 value, not net capital flow. A yield-accruing treasury gains value with no new money entering.
- The current snapshot and the daily history disagree by roughly 0.09%, because a handful of abandoned protocols linger in the current list with a frozen value while their history stopped. 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.