metrics.assets_daily has one row per asset per day. metrics.asset_tokens_daily has one row per deployment per day. A deployment is one token contract on one chain, so USDC gets one row a day in the first table and one row a day for each chain it is issued on in the second.
metrics.assets_daily: one row per asset per day.metrics.asset_tokens_daily: one row per deployment per day, breaking the same measures down by chain.
Tables
- Asset
- Deployment
One row per
(asset_id, timestamp). Price, yield and the gap from peg live here, because they belong to the asset itself rather than to any single contract. Everything else on the row is the asset’s deployments added together.| Column | Type | Description |
|---|---|---|
timestamp | TIMESTAMP | Day of the row. The partition column. |
asset_id | STRING | Asset the row describes. Joins dimensions.assets. |
symbol | STRING | Ticker symbol of the asset. |
asset_type | STRING | Classification of the asset. |
price | FLOAT64 | The asset’s price in USD, one figure per asset per day. Where more than one source has a price, we take them in a fixed order of preference. |
price_source | STRING | Where the day’s price came from. It labels price rather than being a measure of its own. |
agentic_user_dau | INT64 | Distinct addresses making agentic (x402) payments in the asset on the day, across every deployment. The asset table carries no native or bridged split of this figure. |
agentic_user_mau | INT64 | Distinct addresses making agentic (x402) payments in the asset over the trailing month, across every deployment. |
agentic_user_wau | INT64 | Distinct addresses making agentic (x402) payments in the asset over the trailing week, across every deployment. |
apy | FLOAT64 | The asset’s yield over the past year, written as a fraction: 0.05 means five percent. Measured once per asset per day, and never added up. |
holders_bridged | INT64 | Addresses holding a non-zero balance, summed across the asset’s bridged deployments. |
holders_native | INT64 | Addresses holding a non-zero balance, summed across the asset’s natively-issued deployments. |
market_cap_circulating_bridged | FLOAT64 | Circulating market cap of the asset’s bridged deployments, USD. A bridged deployment is a wrapper standing in for supply issued natively on another chain. |
market_cap_circulating_native | FLOAT64 | Circulating market cap of the asset’s natively-issued supply, USD. This is the measure that answers how much of the asset exists. It includes anything the issuer reports as held off-chain. |
market_cap_circulating_offchain | FLOAT64 | The part of circulating market cap an issuer reports as held off-chain, USD. Part of the native figure, published on its own as well. Only issuers who report one appear here; the rest are empty. |
market_cap_circulating_total | FLOAT64 | Circulating market cap across every form of the asset, USD: native issuance plus bridged wrappers. Counts tokens outstanding rather than economic value. |
mints_bridged | FLOAT64 | Value minted on the day, USD, summed across the asset’s bridged deployments. |
mints_native | FLOAT64 | Value minted on the day, USD, summed across the asset’s natively-issued deployments. |
mints_total | FLOAT64 | Value minted on the day, USD, summed across every deployment. A genuine total: minting on a bridged deployment is its own event, not a second view of a native one. |
off_peg | FLOAT64 | How far the asset’s price sits from its peg, as a fraction: (price - reference) / reference. -0.02 means two percent below peg. |
redemptions_bridged | FLOAT64 | Value redeemed on the day, USD, summed across the asset’s bridged deployments. |
redemptions_native | FLOAT64 | Value redeemed on the day, USD, summed across the asset’s natively-issued deployments. |
redemptions_total | FLOAT64 | Value redeemed on the day, USD, summed across every deployment. A genuine total. |
transfer_count_agentic_bridged | FLOAT64 | Number of agentic (x402) transfers on the day, summed across the asset’s bridged deployments. |
transfer_count_agentic_native | FLOAT64 | Number of agentic (x402) transfers on the day, summed across the asset’s natively-issued deployments. |
transfer_count_agentic_total | FLOAT64 | Number of agentic (x402) transfers on the day, summed across every deployment. A genuine total. |
transfer_count_bridged | FLOAT64 | Number of transfers on the day, summed across the asset’s bridged deployments. |
transfer_count_native | FLOAT64 | Number of transfers on the day, summed across the asset’s natively-issued deployments. |
transfer_count_total | FLOAT64 | Number of transfers on the day, summed across every deployment. A genuine total. |
transfer_volume_agentic_bridged | FLOAT64 | Value transferred by agentic (x402) flows on the day, USD, summed across the asset’s bridged deployments. |
transfer_volume_agentic_native | FLOAT64 | Value transferred by agentic (x402) flows on the day, USD, summed across the asset’s natively-issued deployments. |
transfer_volume_agentic_total | FLOAT64 | Value transferred by agentic (x402) flows on the day, USD, summed across every deployment. A genuine total. |
transfer_volume_bridged | FLOAT64 | Value transferred on the day, USD, summed across the asset’s bridged deployments. |
transfer_volume_native | FLOAT64 | Value transferred on the day, USD, summed across the asset’s natively-issued deployments. |
transfer_volume_total | FLOAT64 | Value transferred on the day, USD, summed across every deployment. A genuine total. |
user_dau | INT64 | Distinct addresses sending the asset on the day, across every deployment. The asset table carries no native or bridged split of this figure. |
user_mau | INT64 | Distinct addresses sending the asset over the trailing month, across every deployment. |
user_wau | INT64 | Distinct addresses sending the asset over the trailing week, across every deployment. |
Sample queries
- Asset daily read
- Tokenized stocks ranking
- Deployment breakdown
- One deployment's series
Read one asset’s daily supply, price, senders and peg deviation.
Notes
market_cap_circulating_native answers how much of an asset exists. market_cap_circulating_total adds the bridged wrappers on top, and answers how much of it is out there in some form. The total counts tokens outstanding rather than economic value, because a bridged wrapper is backed by native supply that the same figure already counts.
Never add the _native and _bridged columns together on an asset row. Doing that repeats the same double count by hand. In the deployment table a row is one or the other, so those two sets of columns never overlap and the question does not arise.
The native figure on an asset row is larger by design than its deployment rows added together. Some issuers report supply held off-chain that no token contract represents, and the asset row includes it. market_cap_circulating_offchain publishes that part on its own, on asset rows only, so the gap between the two tables is always explainable.
Transfer, mint and redemption totals carry no such caveat. A transfer on a bridged deployment is its own event, not a second view of a native one, so transfer_count_total, transfer_volume_total, mints_total and redemptions_total on an asset row are genuine totals.
apy is a rate, and rates cannot be added up. It is measured once per asset per day, on the deployment with the largest circulating market cap, and that single figure is copied onto the asset’s other deployments. Every deployment row for an asset therefore carries the same value, so adding the column up simply multiplies the rate by the number of deployments.
off_peg says how far the price sits from the peg, as a fraction, so -0.02 means two percent below.
The user_* and agentic_user_* measures on asset rows have no native or bridged split and no _total column. They count distinct addresses, worked out for the whole asset in one pass, and a count like that cannot be split apart again afterwards. Use the deployment table for a native-versus-bridged breakdown, and Assets ▸ Senders for any wider figure than these two tables publish.
An empty cell means we have no figure for that measure on that day. It is not a measured zero. How much is filled in varies a great deal from measure to measure, from the transfer measures down to the agentic ones. Filter on is not null before ranking, or a thinly covered measure will rank mostly gaps.