> ## 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.

# Real-World Assets (RWAs)

> Curated real-world asset datasets on Dune — tokenized treasuries, equities, and commodities, plus synthetic RWA perpetuals

export const PremiumDatasetAccessCard = ({href = "https://dune.com/enterprise#contact-form", note = null}) => <Card title="Gated dataset" icon="lock" href={href}>
    Querying this dataset requires an entitlement on your workspace. See <a href="/data-catalog/overview#access-tiers-public-vs-gated-datasets">access tiers</a>, or contact the Dune team to enable access.
    {note && <><br /><br />{note}</>}
  </Card>;

Real-world assets bring offchain value onchain: tokenized treasuries and money-market funds, tokenized equities, commodities, private credit, and real estate. Dune provides curated RWA data covering both halves of the market — **tokenized RWAs**, where the asset exists as a real token you can hold and transfer, and **synthetic RWA perpetuals** on Hyperliquid HIP-3 markets, where traders get exposure to a real-world asset without any token existing.

<Info>
  **Maintained by:** Dune · **Refresh:** hourly (activity) to daily (balances, NAV) · **Chains:** 23: Ethereum, Arbitrum, Arc, Avalanche, Base, BNB, Ink, Mantle, Monad, Morph, Optimism, Plasma, Plume, Polygon, Robinhood Chain, Sei, Tempo, zkSync, plus Solana, Aptos, Sui, XRPL, and Stellar
</Info>

<PremiumDatasetAccessCard />

<CardGroup cols={2}>
  <Card title="Explore on Dune" icon="arrow-up-right-from-square" href="https://dune.com/dune/rwa-overview">
    The RWA overview dashboard: AUM by asset class, issuer league tables, and chain distribution.
  </Card>

  <Card title="Get This Data" icon="database" href="https://dune.com/enterprise?dataset=rwa">
    Access RWA data via API, Datashare, or the Dune App.
  </Card>
</CardGroup>

## Available Data

<CardGroup cols={2}>
  <Card title="Registry & Classification" icon="book" href="/data-catalog/curated/rwa/registry/tokens">
    Which assets exist, on which chains, and the product behind each one — asset class, issuer, legal wrapper, and eligibility
  </Card>

  <Card title="Holders & Supply" icon="users" href="/data-catalog/curated/rwa/holders-supply/balances">
    Daily holder balances, entity attribution, outstanding supply, and issuance flows
  </Card>

  <Card title="Valuation" icon="dollar-sign" href="/data-catalog/curated/rwa/valuation/prices">
    Token-unit USD prices, plus onchain NAV events and point-in-time windows
  </Card>

  <Card title="Activity & Trading" icon="chart-line" href="/data-catalog/curated/rwa/activity/transfers">
    Token transfers, secondary-market trades, and RWA perpetual futures activity
  </Card>

  <Card title="All Tables" icon="table" href="/data-catalog/curated/rwa/all-tables-overview">
    Complete inventory of all RWA tables
  </Card>
</CardGroup>

## When to Use These Tables

Use RWA tables when you need to:

* Track AUM, supply, and holder growth for tokenized treasuries, funds, and equities
* Measure issuer and platform market share across asset classes
* Analyze holder concentration and entity composition, including CEX and protocol holdings
* Value onchain positions using curated USD prices (NAV-backed where an oracle exists)
* Monitor issuance and redemption flows against issuer-reported figures
* Track secondary-market liquidity for RWAs on DEXs and RWA-native venues
* Compare tokenized exposure against synthetic perpetual exposure for the same underlying
* Segment products by legal wrapper, custodian, regulator, or investor eligibility

## Query Performance

Activity tables (`transfers`, `trades`, `perp_trades`) are partitioned by `block_month`. Always filter on it, and add `blockchain` when you only need one chain — Robinhood Chain and Solana dominate row counts, so unfiltered scans are expensive. `balances` is a daily snapshot, so filter `day` to a single date unless you need a trend.

```sql theme={null}
-- Good: partition-pruned and chain-scoped
SELECT * FROM rwa_multichain.transfers
WHERE block_month >= DATE_TRUNC('month', CURRENT_DATE)
  AND blockchain = 'ethereum'
```

## Methodology

**Tokenized RWAs** are built around `rwa_multichain.tokens`, the canonical identity registry of every tracked asset. `token_id` already stores each chain's native identifier as `VARCHAR`, including EVM-compatible contract addresses, Solana mint addresses, Aptos asset types, Sui coin types, and XRPL and Stellar asset ids. A single query therefore spans all 23 chains. Join `transfers`, `balances`, and `supply` on `(blockchain, token_id)`. [`tokens_reference_data`](/data-catalog/curated/rwa/registry/tokens-reference-data) attaches product classification and legal attributes to each registered token (join activity on `(blockchain, token_id)`, join [`balances_enriched`](/data-catalog/curated/rwa/holders-supply/balances-enriched) on `token_product_id`). [`product_reference_data`](/data-catalog/curated/rwa/registry/product-reference-data) publishes the same product fields at one row per `product_id`.

Tempo is EVM-compatible, but its covered RWA tokens use the native TIP-20 standard and appear as `token_standard = 'tip20'`, not `erc20`. See the [token registry](/data-catalog/curated/rwa/registry/tokens) for the canonical deployments and [transfers](/data-catalog/curated/rwa/activity/transfers) for the supported reconstruction window.

There is no `rwa_multichain.token_metadata` table. `trades` has no `token_id`; resolve the RWA leg with `rwa_side` plus `token_bought_address` / `token_sold_address`.

**Valuation.** Use [`supply.supply_usd`](/data-catalog/curated/rwa/holders-supply/supply) and `balances.balance_usd` for USD totals. [`rwa_multichain.prices`](/data-catalog/curated/rwa/valuation/prices) is USD per on-chain token unit with `[valid_from, valid_to)` windows from onchain NAV and declared NAV feeds. You do not need to join `prices` to get AUM; a token can have `supply_usd` even when it has no covering `prices` row. [`nav`](/data-catalog/curated/rwa/valuation/nav) still records each onchain NAV update; [`nav_intervals`](/data-catalog/curated/rwa/valuation/nav-intervals) forward-fills those events. The `0x` + `to_hex(asset_address)` join against `token_address` is **EVM-only**. For Solana, Stellar, and XRPL, `asset_address` is UTF-8-encoded `token_id`, not an EVM address.

**Synthetic RWA perpetuals** use a native perp schema — side, price, size, notional, funding, open interest — not a two-token swap schema. `rwa_hyperliquid.markets` is the registry of curated HIP-3 markets, `rwa_hyperliquid.perp_trades` holds taker-leg fills with per-fill trader leverage and margin mode, `perp_metrics_hourly` / `perp_metrics_daily` pre-aggregate volume, open interest, and funding, and `perp_positions_hourly` snapshots each account's open position at every hourly funding round. Perp fills keep the taker leg only, so volume matches Hyperliquid's own reported figures instead of double-counting both sides, and open interest is reported both-sides (longs plus shorts) to match the Hyperliquid UI. Metrics unique keys use `(block_month, block_hour|block_date, perp_dex, market_symbol)`, not `coin`. `perp_metrics_daily` is daily grain, hourly refresh. These five tables are the RWA-classified subset; the [Perpetuals Trading](/data-catalog/curated/perpetuals/overview) collection covers every Hyperliquid perp market, crypto included, plus per-account positions and account activity.

Tokenized products and Hyperliquid markets share the same legal asset-class vocabulary: `credit`, `fixed_income`, `cash_equivalent`, `equities`, `multi_asset`, `commodities`, `real_estate`, `fx`, `other`. For tokenized products, `asset_class` and `asset_type` are canonical product fields: use them from `tokens_reference_data` at token grain or `product_reference_data` at product grain. Separately listed ETF, ETP, and fund shares are `equities`, regardless of their underlying exposure, while direct native products retain the underlying asset class. The two halves never share token identifiers: a perpetual has no token behind it, so it never joins to `rwa_multichain.tokens`.

## Example Queries

**Largest tokenized assets by AUM and holder count:**

```sql theme={null}
SELECT
  s.token_symbol,
  s.blockchain,
  h.holders,
  s.supply_usd AS aum_usd
FROM rwa_multichain.supply AS s
LEFT JOIN (
  SELECT
    blockchain,
    token_id,
    COUNT(DISTINCT address) AS holders
  FROM rwa_multichain.balances
  WHERE day = CURRENT_DATE - INTERVAL '1' DAY
    AND balance > 0
  GROUP BY 1, 2
) AS h
  ON h.blockchain = s.blockchain
 AND h.token_id = s.token_id
WHERE s.day = CURRENT_DATE - INTERVAL '1' DAY
ORDER BY 4 DESC NULLS LAST
LIMIT 25
```

**AUM by token and issuer:**

```sql theme={null}
SELECT
  s.day,
  s.token_symbol,
  r.issuer_name,
  SUM(s.supply_usd) AS aum_usd
FROM rwa_multichain.supply AS s
LEFT JOIN rwa_multichain.tokens_reference_data AS r
  ON r.blockchain = s.blockchain
  AND r.token_id = s.token_id
WHERE s.day >= CURRENT_DATE - INTERVAL '30' DAY
GROUP BY 1, 2, 3
ORDER BY 1 DESC, 4 DESC
```

**Synthetic perp volume by asset class (do not sum open interest across days):**

```sql theme={null}
SELECT
  asset_class,
  SUM(volume_usd) AS volume_usd,
  SUM(open_interest_usd) AS open_interest_usd
FROM rwa_hyperliquid.perp_metrics_daily
WHERE block_date = CURRENT_DATE - INTERVAL '1' DAY
GROUP BY 1
ORDER BY 2 DESC
```

Summing `open_interest_usd` across markets on a single day is valid. Summing it across days is not: open interest is a stock, not a flow.

## Related Tables

* `rwa_multichain.prices` — curated USD per token unit over validity windows. AUM is `supply.supply_usd`
* `prices.day` / `prices.hour` — market prices for RWAs that also trade as ordinary crypto assets
* `tokens.transfers` — all token transfers, unfiltered by RWA scope
* `dex.trades` — full DEX trade coverage; `rwa_multichain.trades` is the RWA-scoped subset plus RWA-native venues

<CardGroup cols={2}>
  <Card title="Enterprise Data Solutions" icon="building" href="https://dune.com/enterprise">
    Need custom RWA datasets, additional chains, or dedicated support? Talk to our enterprise team.
  </Card>

  <Card title="Build Custom Models" icon="code" href="/api-reference/connectors/overview">
    Build private RWA analytics pipelines with the dbt Connector.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.