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

# rwa_multichain.product_reference_data

> Product-grain RWA catalog — legal wrapper, issuer, eligibility, and a deployments array of chain identities.

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>;

`rwa_multichain.product_reference_data` is the product catalog behind tokenized RWAs. Grain: one row per `product_id`. `deployments` is an array of `(chain, token_address)` pairs from the product token registry — empty (never null) when the product has no registered on-chain identity yet.

<PremiumDatasetAccessCard />

This is the inverse of [`tokens_reference_data`](/data-catalog/curated/rwa/registry/tokens-reference-data): that table is token grain with product fields attached; this table is product grain with chain deployments nested. Join the two on `product_id`.

## Table schema

**Product identity**

| Column                          | Type                                                   | Description                                                                      |
| ------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------- |
| `product_id`                    | `VARCHAR`                                              | Stable lowercase product identifier. Unique. Join key to `tokens_reference_data` |
| `product_name`                  | `VARCHAR`                                              | Official name as used by the issuer or platform                                  |
| `issuer_id` / `issuer_name`     | `VARCHAR`                                              | Legal issuing entity                                                             |
| `platform_id` / `platform_name` | `VARCHAR`                                              | Tokenization or distribution platform                                            |
| `deployments`                   | `ARRAY(ROW("chain" VARCHAR, "token_address" VARCHAR))` | `(chain, token_address)` pairs. Empty array when none are registered             |

**Asset classification**

| Column                                      | Type      | Description                                                 |
| ------------------------------------------- | --------- | ----------------------------------------------------------- |
| `asset_class`                               | `VARCHAR` | Product asset class. Same vocabulary as Hyperliquid markets |
| `asset_type`                                | `VARCHAR` | Product subtype                                             |
| `underlying_asset`                          | `VARCHAR` | What backs the token                                        |
| `underlying_ticker` / `underlying_exchange` | `VARCHAR` | Independent market ticker and venue                         |
| `denomination_currency`                     | `VARCHAR` | ISO 4217 currency of account, not the investment currency   |

**Mechanics and legal structure**

| Column                                        | Type      | Description                                                     |
| --------------------------------------------- | --------- | --------------------------------------------------------------- |
| `transfer_restriction`                        | `VARCHAR` | `NONE`, `ALLOWLIST`, `PLATFORM_INTERNAL`, `NON_TRANSFERABLE`    |
| `acquisition_access`                          | `VARCHAR` | `PERMISSIONLESS`, `KYC_ONBOARDING`, `PLATFORM_ACCOUNT_ONLY`     |
| `transfer_model`                              | `VARCHAR` | Free-text detail behind the two columns above                   |
| `product_status`                              | `VARCHAR` | Lifecycle state                                                 |
| `issuance_date`                               | `VARCHAR` | Product issuance date where known                               |
| `jurisdiction_country` / `jurisdiction_iso2`  | `VARCHAR` | Domicile of the issuing legal entity                            |
| `legal_wrapper_type`                          | `VARCHAR` | Legal form through which holders obtain exposure                |
| `asset_manager_entity`                        | `VARCHAR` | Portfolio manager when distinct from the issuer                 |
| `custodian_entity`                            | `VARCHAR` | Institution holding the underlying                              |
| `transfer_agent_entity`                       | `VARCHAR` | Appointed transfer agent for this product                       |
| `regulatory_framework` / `regulator`          | `VARCHAR` | Offering regime and supervising authority                       |
| `issuer_entity` / `issuer_lei` / `issuer_cik` | `VARCHAR` | Exact legal registrant and identifiers                          |
| `eligible_investors`                          | `VARCHAR` | Investor class permitted to hold the product                    |
| `redemption_mechanism`                        | `VARCHAR` | `INSTANT_ONCHAIN`, `T_PLUS_N_OFFCHAIN`, `SECONDARY_MARKET_ONLY` |
| `last_updated`                                | `DATE`    | Date another cell on this row last changed                      |

### Blank versus NOT\_APPLICABLE

* **Blank** means the value is unknown or not yet verified.
* **`NOT_APPLICABLE`** means the field has been shown not to apply — a basket product has no single `underlying_ticker`, a non-SEC issuer has no `issuer_cik`.

No other placeholder appears. `WHERE custodian_entity <> ''` gives products with a known custodian; `WHERE custodian_entity = 'NOT_APPLICABLE'` gives products that genuinely have none.

### asset\_class values

Shared with [`rwa_hyperliquid.markets`](/data-catalog/curated/rwa/registry/hyperliquid-markets):

| Value             | Meaning                                                                    |
| ----------------- | -------------------------------------------------------------------------- |
| `credit`          | Credit-sector debt: corporates, agencies, securitizations, private lending |
| `fixed_income`    | Sovereign debt whose stated maturity exceeds one year                      |
| `cash_equivalent` | Debt maturing in one year or less — T-bills and money-market instruments   |
| `equities`        | Public or private company shares, or equity funds                          |
| `multi_asset`     | Allocation spanning more than one asset class                              |
| `commodities`     | Physical or commodity-linked goods                                         |
| `real_estate`     | Property or property-backed interests                                      |
| `fx`              | Currency exposure itself, not the currency a product is priced in          |
| `other`           | Exposure that does not fit the preceding classes                           |

`cash_equivalent` is a maturity test, not a credit-quality test. A 20-year Treasury is `fixed_income`. `fx` is the currency pair or index; denomination is `denomination_currency`.

### Selected asset\_type values

`asset_type` is validated independently of `asset_class`. Common pairings:

| Parent class      | Values                                                                                                                                                                                                     |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `credit`          | `corporate_bonds_high_yield`, `corporate_bonds_investment_grade`, `credit_fund`, `private_credit`, `private_credit_fund`, `private_credit_senior_secured_loans`, `securitized_products`                    |
| `equities`        | `equities_cash`, `equities_exchange_traded_funds`, `equities_fund`, `equities_index`, `equities_index_fund`, `equities_preferred`, `equities_synthetic`, `private_equity`, `venture_capital_fund_interest` |
| `commodities`     | `agriculture`, `carbon_credits`, `energy`, `gemstones`, `metals`                                                                                                                                           |
| `cash_equivalent` | `government_debt_us`, `government_debt_non_us`, `money_market_fund`                                                                                                                                        |
| `fixed_income`    | `government_debt_us`, `government_debt_non_us`, `fixed_income_diversified`                                                                                                                                 |
| `real_estate`     | `residential_real_estate`                                                                                                                                                                                  |
| `fx`              | `cash_fx`                                                                                                                                                                                                  |
| `other`           | `crypto_hedge_fund`, `fine_art`, `hedge_fund`, `insurance_linked_securities`                                                                                                                               |

`energy` and `fixed_income_diversified` can appear under more than one parent. Filter on the pair when that matters.

### legal\_wrapper\_type values

`DIRECT_TOKENIZED_EQUITY`, `LEDGER_BASED_SECURITY`, `SPECIAL_PURPOSE_VEHICLE`, `REGISTERED_FUND`, `UNREGISTERED_FUND`, `ETF_PASSTHROUGH_WRAPPER`, `STRUCTURED_NOTE`, `STRUCTURED_CREDIT_TRANCHE`, `DERIVATIVE_CONTRACT`, `CUSTODIAL_RECEIPT`, `WRAPPED_RWA_TOKEN`, `DEFI_VAULT_SHARE`, `OTHER`.

### eligible\_investors values

`UNRESTRICTED`, `US_RETAIL`, `US_ACCREDITED`, `US_QUALIFIED_PURCHASER`, `PROFESSIONAL_QUALIFIED`, `NON_US_PERSON`, `INSTITUTIONAL_ONLY`.

`PROFESSIONAL_QUALIFIED` is jurisdiction-neutral (MiFID II, Swiss CISA, UK FCA, and similar tests). Which regime supplies the test is a `regulatory_framework` fact.

## Issuer, platform, and asset manager

* **`issuer_name`** is the legal entity that issues the product. Attribute AUM here for asset-manager rankings.
* **`platform_name`** is the venue that brought it onchain. Ondo Global Markets is the platform for tokenized iShares ETFs whose issuer is BlackRock.
* **`asset_manager_entity`** runs the underlying portfolio when that is a third party.

## Example queries

**Issuer league table for tokenized money market funds:**

```sql theme={null}
SELECT
  p.issuer_name,
  p.platform_name,
  p.custodian_entity,
  COUNT(DISTINCT p.product_id) AS products,
  SUM(s.supply_usd) AS aum_usd
FROM rwa_multichain.supply AS s
INNER JOIN rwa_multichain.tokens_reference_data AS r
  ON r.blockchain = s.blockchain
  AND r.token_id = s.token_id
INNER JOIN rwa_multichain.product_reference_data AS p
  ON p.product_id = r.product_id
WHERE s.day = CURRENT_DATE - INTERVAL '1' DAY
  AND p.asset_type = 'money_market_fund'
GROUP BY 1, 2, 3
ORDER BY 5 DESC NULLS LAST
LIMIT 25
```

**Products a US retail investor can hold, by legal wrapper:**

```sql theme={null}
SELECT
  legal_wrapper_type,
  regulator,
  jurisdiction_iso2,
  COUNT(*) AS products
FROM rwa_multichain.product_reference_data
WHERE eligible_investors = 'US_RETAIL'
  AND legal_wrapper_type <> ''
GROUP BY 1, 2, 3
ORDER BY 4 DESC
```
