> ## Documentation Index
> Fetch the complete documentation index at: https://tokenterminal.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Registry

> Asset names, where each is issued, and what each one tracks.

Three registry tables describe the assets we track. Every other asset table, daily or event by event, joins to them.

* `dimensions.assets`: one row per curated asset.
* `dimensions.asset_tokens`: one row per onchain deployment, one token contract on one chain.
* `dimensions.reference_assets`: one row per thing an instrument tracks or wraps.

## Tables

<Tabs>
  <Tab title="Assets">
    `dimensions.assets` contains one row per curated tokenized asset. The row belongs to no particular chain: it carries the asset's name, what kind of instrument it is, and what it tracks. The per-chain contracts live in `dimensions.asset_tokens`.

    <table>
      <thead>
        <tr>
          <th width="280">Column</th>
          <th width="130">Type</th>
          <th>Description</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>asset\_id</code></td>
          <td><code>STRING</code></td>
          <td>Identifier of the asset, for example <code>usdc</code>.</td>
        </tr>

        <tr>
          <td><code>reference\_asset\_id</code></td>
          <td><code>STRING</code></td>
          <td>What the asset tracks or wraps. Joins <code>dimensions.reference\_assets</code>.</td>
        </tr>

        <tr>
          <td><code>name</code></td>
          <td><code>STRING</code></td>
          <td>Display name of the asset.</td>
        </tr>

        <tr>
          <td><code>symbol</code></td>
          <td><code>STRING</code></td>
          <td>Ticker symbol of the asset.</td>
        </tr>

        <tr>
          <td><code>asset\_type</code></td>
          <td><code>STRING</code></td>
          <td>What kind of instrument it is: <code>stablecoin</code>, <code>tokenized-stocks</code>, <code>tokenized-funds</code>, <code>lending-token</code>, <code>tokenized-commodities</code>, <code>liquid-staking-token</code>, <code>tokenized-cryptoasset</code> or <code>wrapped\_native</code>.</td>
        </tr>

        <tr>
          <td><code>description</code></td>
          <td><code>STRING</code></td>
          <td>Short description of the asset.</td>
        </tr>

        <tr>
          <td><code>created\_at</code></td>
          <td><code>TIMESTAMP</code></td>
          <td>When the asset entered the registry.</td>
        </tr>

        <tr>
          <td><code>metrics\_verified\_at</code></td>
          <td><code>TIMESTAMP</code></td>
          <td>When the asset's published metrics were last verified. Null while unverified.</td>
        </tr>

        <tr>
          <td><code>peg\_currency</code></td>
          <td><code>STRING</code></td>
          <td>ISO currency code of the peg, set when the asset tracks a national currency. Empty otherwise: a fund strategy, a share or a commodity is not a peg.</td>
        </tr>

        <tr>
          <td><code>mica\_indicator</code></td>
          <td><code>STRING</code></td>
          <td>Which MiCA category the peg implies: <code>e\_money\_token\_candidate</code> for single-currency stablecoins, <code>asset\_referenced\_token\_candidate</code> for other stablecoins, <code>undetermined</code> for everything else. An indicator, not a regulatory ruling.</td>
        </tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="Deployments">
    `dimensions.asset_tokens` contains one row per onchain deployment of a curated asset. A deployment is one token contract on one chain, and it is what every supply, holder and transfer measure is counted per.

    <table>
      <thead>
        <tr>
          <th width="280">Column</th>
          <th width="130">Type</th>
          <th>Description</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>asset\_token\_id</code></td>
          <td><code>STRING</code></td>
          <td>Identifier of the deployment, formatted <code>\{asset\_id}-\{token\_address}-\{chain\_id}</code>.</td>
        </tr>

        <tr>
          <td><code>asset\_id</code></td>
          <td><code>STRING</code></td>
          <td>Asset the deployment belongs to. Joins <code>dimensions.assets</code>.</td>
        </tr>

        <tr>
          <td><code>token\_id</code></td>
          <td><code>STRING</code></td>
          <td>Key of the deployment in <code>dimensions.tokens</code>, formatted <code>\{token\_address}-\{chain\_id}</code>.</td>
        </tr>

        <tr>
          <td><code>chain\_id</code></td>
          <td><code>STRING</code></td>
          <td>Chain the contract is deployed on.</td>
        </tr>

        <tr>
          <td><code>token\_address</code></td>
          <td><code>STRING</code></td>
          <td>Address of the token contract.</td>
        </tr>

        <tr>
          <td><code>is\_bridged</code></td>
          <td><code>BOOL</code></td>
          <td>Raw registry flag: bridged in rather than issued natively. Always present, so <code>false</code> means native or unstated. Filter on <code>bridged\_status</code> instead.</td>
        </tr>

        <tr>
          <td><code>bridged\_status</code></td>
          <td><code>STRING</code></td>
          <td>The classification supply measures split on: <code>native</code>, <code>bridged</code> or <code>unclassified</code>.</td>
        </tr>
      </tbody>
    </table>

    The table keeps deployments that have no row in `dimensions.tokens`: a deployment our price feed does not cover has no row there, and dropping it would under-report what exists. So `token_id` is not guaranteed to match a row in `dimensions.tokens`.

    Filter supply on `bridged_status`. A stated registry flag is taken as given; an unstated one reads `native` when the asset has no confirmed bridged deployment anywhere, and `unclassified` when it does.
  </Tab>

  <Tab title="Reference assets">
    `dimensions.reference_assets` contains one row for each thing an instrument can track or wrap: national currencies, stocks, commodities, funds and cryptoassets. This is what a tokenized instrument or a perpetual market points at, and it is not the same thing as the tokenized asset itself.

    <table>
      <thead>
        <tr>
          <th width="280">Column</th>
          <th width="130">Type</th>
          <th>Description</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>reference\_asset\_id</code></td>
          <td><code>STRING</code></td>
          <td>Identifier of the thing being tracked.</td>
        </tr>

        <tr>
          <td><code>linked\_asset\_id</code></td>
          <td><code>STRING</code></td>
          <td>Its own tokenized asset in <code>dimensions.assets</code>, where one exists.</td>
        </tr>

        <tr>
          <td><code>name</code></td>
          <td><code>STRING</code></td>
          <td>Display name.</td>
        </tr>

        <tr>
          <td><code>symbol</code></td>
          <td><code>STRING</code></td>
          <td>Ticker symbol.</td>
        </tr>

        <tr>
          <td><code>type</code></td>
          <td><code>STRING</code></td>
          <td>What kind of thing it is: <code>stock</code>, <code>crypto</code>, <code>fiat</code>, <code>pendle\_pt</code>, <code>etf</code>, <code>commodity</code>, <code>fund\_strategy</code>, <code>bond</code> or <code>other</code>.</td>
        </tr>

        <tr>
          <td><code>currency\_code</code></td>
          <td><code>STRING</code></td>
          <td>ISO currency code, filled in only on the <code>fiat</code> rows.</td>
        </tr>

        <tr>
          <td><code>unit</code></td>
          <td><code>STRING</code></td>
          <td>The physical unit a commodity is quoted in, for example <code>troy ounce</code> or <code>barrel</code>. Empty on everything else.</td>
        </tr>

        <tr>
          <td><code>aliases</code></td>
          <td><code>ARRAY\<STRING></code></td>
          <td>Other names it is known by.</td>
        </tr>
      </tbody>
    </table>

    `type = 'fiat'` is what makes something a currency peg. `peg_currency` on `dimensions.assets` is empty for everything else, so an asset that tracks a fund strategy or a share carries no peg, even though it does track something.
  </Tab>
</Tabs>

## Sample queries

<Tabs>
  <Tab title="Assets by type">
    **Count assets by type.** `asset_type` says what kind of instrument it is.

    ```sql theme={null}
    select
        asset_type,
        count(*) as assets
    from `dimensions.assets`
    group by asset_type
    order by assets desc
    ```
  </Tab>

  <Tab title="Deployments of one asset">
    **List every deployment of one asset.** `bridged_status` says whether each contract was issued natively on its chain or bridged in from another.

    ```sql theme={null}
    select
        asset_token_id,
        chain_id,
        token_address,
        bridged_status
    from `dimensions.asset_tokens`
    where asset_id = 'usdc'
    order by chain_id
    ```
  </Tab>

  <Tab title="What an asset tracks">
    **Find out what an asset tracks.** Tracking a national currency is what makes an asset a currency-pegged stablecoin, and `assets.peg_currency` comes from it.

    ```sql theme={null}
    select
        assets.asset_id,
        reference_assets.reference_asset_id,
        reference_assets.type,
        reference_assets.currency_code
    from `dimensions.assets` as assets
    join `dimensions.reference_assets` as reference_assets
        using (reference_asset_id)
    where assets.asset_id in ('usdc', 'usdt', 'dai')
    order by assets.asset_id
    ```
  </Tab>
</Tabs>
