Skip to main content
Two tables hold the daily asset numbers. 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.
Supply of USDC is a question about the asset. Supply of USDC on Base is a question about one deployment. Where a measure is one you can add up, the asset row equals its deployment rows added together, with one deliberate exception explained below. Each table is assembled from one source table per measure, so an empty cell means we have no figure for that measure on that day. It does not mean zero. Several measures are labelled agentic. Those count payments made under the x402 standard, which lets software pay for something without a person in the loop. They are a subset of ordinary transfer activity, not a separate kind of it.

Tables

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.
ColumnTypeDescription
timestampTIMESTAMPDay of the row. The partition column.
asset_idSTRINGAsset the row describes. Joins dimensions.assets.
symbolSTRINGTicker symbol of the asset.
asset_typeSTRINGClassification of the asset.
priceFLOAT64The 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_sourceSTRINGWhere the day’s price came from. It labels price rather than being a measure of its own.
agentic_user_dauINT64Distinct 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_mauINT64Distinct addresses making agentic (x402) payments in the asset over the trailing month, across every deployment.
agentic_user_wauINT64Distinct addresses making agentic (x402) payments in the asset over the trailing week, across every deployment.
apyFLOAT64The 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_bridgedINT64Addresses holding a non-zero balance, summed across the asset’s bridged deployments.
holders_nativeINT64Addresses holding a non-zero balance, summed across the asset’s natively-issued deployments.
market_cap_circulating_bridgedFLOAT64Circulating 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_nativeFLOAT64Circulating 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_offchainFLOAT64The 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_totalFLOAT64Circulating market cap across every form of the asset, USD: native issuance plus bridged wrappers. Counts tokens outstanding rather than economic value.
mints_bridgedFLOAT64Value minted on the day, USD, summed across the asset’s bridged deployments.
mints_nativeFLOAT64Value minted on the day, USD, summed across the asset’s natively-issued deployments.
mints_totalFLOAT64Value 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_pegFLOAT64How far the asset’s price sits from its peg, as a fraction: (price - reference) / reference. -0.02 means two percent below peg.
redemptions_bridgedFLOAT64Value redeemed on the day, USD, summed across the asset’s bridged deployments.
redemptions_nativeFLOAT64Value redeemed on the day, USD, summed across the asset’s natively-issued deployments.
redemptions_totalFLOAT64Value redeemed on the day, USD, summed across every deployment. A genuine total.
transfer_count_agentic_bridgedFLOAT64Number of agentic (x402) transfers on the day, summed across the asset’s bridged deployments.
transfer_count_agentic_nativeFLOAT64Number of agentic (x402) transfers on the day, summed across the asset’s natively-issued deployments.
transfer_count_agentic_totalFLOAT64Number of agentic (x402) transfers on the day, summed across every deployment. A genuine total.
transfer_count_bridgedFLOAT64Number of transfers on the day, summed across the asset’s bridged deployments.
transfer_count_nativeFLOAT64Number of transfers on the day, summed across the asset’s natively-issued deployments.
transfer_count_totalFLOAT64Number of transfers on the day, summed across every deployment. A genuine total.
transfer_volume_agentic_bridgedFLOAT64Value transferred by agentic (x402) flows on the day, USD, summed across the asset’s bridged deployments.
transfer_volume_agentic_nativeFLOAT64Value transferred by agentic (x402) flows on the day, USD, summed across the asset’s natively-issued deployments.
transfer_volume_agentic_totalFLOAT64Value transferred by agentic (x402) flows on the day, USD, summed across every deployment. A genuine total.
transfer_volume_bridgedFLOAT64Value transferred on the day, USD, summed across the asset’s bridged deployments.
transfer_volume_nativeFLOAT64Value transferred on the day, USD, summed across the asset’s natively-issued deployments.
transfer_volume_totalFLOAT64Value transferred on the day, USD, summed across every deployment. A genuine total.
user_dauINT64Distinct addresses sending the asset on the day, across every deployment. The asset table carries no native or bridged split of this figure.
user_mauINT64Distinct addresses sending the asset over the trailing month, across every deployment.
user_wauINT64Distinct addresses sending the asset over the trailing week, across every deployment.

Sample queries

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.