rwa_multichain.token_metadata describes the real-world product behind each token in rwa_multichain.tokens: what backs it, who issues it, which platform brought it onchain, and the legal and regulatory structure holders actually buy into. Grain: one row per token per chain, keyed on (blockchain, token_id). It covers roughly 2,300 products from 218 issuers across 125 tokenization platforms.
Why it is separate from tokens
tokens answers “does this token exist and what is its identifier on each chain”. token_metadata answers “what is the product, and how is it structured”. Keeping them apart means the registry can add a chain deployment without waiting on research, and research can be revised without rewriting the registry.
A product and a token are not the same thing. One product — say Franklin Templeton’s BENJI fund — has a row per chain it is deployed on, and the product-level columns repeat identically across those rows. Deduplicate on product_id when you are counting products rather than deployments.
Table schema
Token identity
Product identity
Asset classification
Product mechanics and lifecycle
Jurisdiction and legal structure
Research provenance
Blank versus NOT_APPLICABLE
Two sentinels carry different meanings and you should filter on them differently:- Blank means the value is not currently known for this product.
NOT_APPLICABLEmeans the field has been shown not to apply — a basket product has no singleunderlying_ticker, a non-SEC issuer has noissuer_cik.
N/A, UNKNOWN, or UNDISCLOSED in this table. So WHERE custodian_entity <> '' gives you products with a known custodian, and WHERE custodian_entity = 'NOT_APPLICABLE' gives you products that genuinely have none.
asset_class and asset_type are populated for effectively every product. The deep legal fields are populated where a primary source confirms them, so expect blanks on custodian_entity, issuer_lei, and issuer_cik for long-tail products.
asset_class values
By product count,
credit and equities dominate — private credit facilities and tokenized stock lineups both run to hundreds of products each — while cash_equivalent holds far fewer products but most of the AUM.
asset_type values
asset_type is constrained by its parent class:
Two values are deliberately cross-class, assigned from the product’s actual exposure rather than inferred from the value alone:
energy appears under both commodities and credit, and fixed_income_diversified under cash_equivalent, credit, and other. Filter on the pair when this matters, not on asset_type alone.
legal_wrapper_type values
This is one axis only. It is distinct from
regulatory_framework (which regime the offering relies on) and jurisdiction_country (where the issuer is domiciled) — a BVI-domiciled fund can be a REGISTERED_FUND under SEC oversight.
eligible_investors values
UNRESTRICTED, US_RETAIL, US_ACCREDITED, US_QUALIFIED_PURCHASER, NON_US_REG_S, EU_PROFESSIONAL_QUALIFIED, KYC_GATED_GENERAL.
Two products from the same issuer can differ here, because eligibility follows each offering’s own terms rather than the issuer. A direct government-bills fund distributed broadly under Reg S and that same issuer’s swap-based fund restricted to EU professional investors will not share a value.
The sources array
sources holds the evidence behind the row, ordered and capped at ten records per product. Each record has these fields:
Because
verifies is scoped per column, you can check whether a specific field on a specific product is backed by a primary legal source rather than trusting the row-level confidence alone.
Issuer, platform, and asset manager
Three separate entities, and they diverge often enough that picking the wrong one skews a league table:issuer_nameis the legal entity that issues the product. Attribute AUM here for asset-manager rankings.platform_nameis the venue that brought it onchain. Attribute here when measuring tokenization-infrastructure market share. Ondo Global Markets is the platform for tokenized iShares ETFs whose issuer is BlackRock.asset_manager_entityruns the underlying portfolio when that is a third party — Amundi manages the Spiko funds, Franklin Advisers manages BENJI.
Do not join on symbol
Token symbols are not a safe product key. The same product carries different tickers across access channels, unrelated products share tickers, and scam tokens squat real tickers on other chains.token_id resolves each onchain instance to exactly one product, so join on (blockchain, token_id) and never on symbol or underlying_ticker.