Skip to main content
rwa_multichain.nav records verified onchain value updates for tokenized RWAs. Grain: one row per update event, keyed on unique_key. Use it to inspect publication history and source semantics. For cross-chain AUM and point-in-time valuation, start with rwa_multichain.prices.

Why NAV rather than market price

A tokenized money-market fund does not have a meaningful market price — it has a net asset value published by its issuer or an oracle. Most tokenized RWAs either barely trade onchain or trade at a price pinned to NAV. This table reads NAV directly from the verified onchain source contract for each asset, so USD valuations do not depend on there being a liquid market. For assets that also trade as ordinary crypto tokens, prices.day and prices.hour remain the right source for market price.

Table schema

Use usd_price with value_kind and price_basis. usd_nav_price remains for backward compatibility, but not every source is an accounting NAV. quote_currency records the source quote; usd_price is normalized to USD.

Use nav_intervals for point-in-time joins

Because this table holds discrete events, valuing a balance or transfer from it means finding the most recent update at or before a given timestamp — a correlated subquery or a window function. nav_intervals precomputes exactly that as valid_from / valid_to ranges for source-level NAV analysis. Prefer prices for cross-chain activity joins; use nav when you want the update events themselves, for example to measure publication frequency or detect a stale feed.

Address representation differs by chain

The common EVM join converts native bytes to lowercase 0x hex:
That expression is EVM-only. Solana, Stellar, and XRPL store textual token_id as UTF-8 bytes, so use from_utf8(asset_address). Sui stores native package bytes. Use prices whenever you need one cross-chain join on (blockchain, token_id).

Example query

Find feeds that have gone stale: