> ## 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.

# Reader's manual

> How the catalog is organized, how its tables are named, and how to read a page.

The catalog is a set of BigQuery tables. These docs describe every one of them, and every page follows the same shape. This page explains the organization, the table names, the parts of a page and the marks on it.

## Organization

The catalog is one set of tables, presented three ways.

<table>
  <thead>
    <tr>
      <th width="170">Band</th>
      <th>What it is</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><a href="/docs/catalog/index#core-entities">Core entities</a></td>
      <td>The model of the system and the actors in it: Projects, Chains, Assets, Tokens and Accounts. Every table in the catalog is keyed to one or more of these. A project runs apps on chains and issues assets; an asset is deployed as tokens; tokens move between accounts. Each entity section holds the registry of those actors, the events they take part in, and their daily numbers.</td>
    </tr>

    <tr>
      <td><a href="/docs/catalog/index#market-verticals">Market verticals</a></td>
      <td>A cross-chain slice into one market: Stablecoins, Tokenized assets, DEX, Perpetuals, Lending, Bridges and the rest. A market is the entity tables with one filter applied, so its pages point back at the tables the entities own.</td>
    </tr>

    <tr>
      <td><a href="/docs/catalog/chain-verticals/index">Chain verticals</a></td>
      <td>One chain's slice across every market: its raw blocks and transactions, then every entity and market layer with data on that chain. Each chain page lists the layers the chain carries and the date each one starts.</td>
    </tr>
  </tbody>
</table>

## Dataset types

Every catalog table lives in one of five datasets, and the dataset says what kind of table it is. Each kind has its own icon in the sidebar.

<Tabs>
  <Tab title="Dimensions">
    <Icon icon="table-list" /> **Dimensions** are the registry. A dimension is the metadata of every thing of one kind, one row per thing: its name, its identifiers and its classifications. `dimensions.assets` is every asset, `dimensions.chains` every chain, `dimensions.dex_pools` every trading pool. Nothing on a dimension row changes from day to day. Every other table joins a dimension on its id. The Registry page of each section documents them.

    <CardGroup cols={3}>
      <Card title="Assets ▸ Registry" icon="table-list" href="/docs/catalog/assets/registry">
        Asset names, where each is issued, and what each one tracks.
      </Card>

      <Card title="Projects ▸ Registry" icon="table-list" href="/docs/catalog/projects/registry">
        Project and app names, market sectors, and who runs what.
      </Card>

      <Card title="DEX ▸ Registry" icon="table-list" href="/docs/catalog/dex/registry">
        Pool identity, the fee it charges, its tokens, and who runs it.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Facts">
    <Icon icon="bolt" /> **Facts** are events. A fact is one row per thing that happened onchain, at the time it happened: the block, the transaction, the accounts involved, the amount and the ids of the dimensions it belongs to. `facts.token_transfers` is every token transfer, `facts.bridge_transfers` every cross-chain transfer, `facts.lending_market_deposits` every deposit into a lending market. Amounts are in the token's own units; a USD value is a join to prices. Facts are the record every metric is built from. Each fact table has its own page, named by its event: Transfers, Trades, Deposits.

    <CardGroup cols={3}>
      <Card title="Tokens ▸ Transfers" icon="bolt" href="/docs/catalog/tokens/transfers">
        Every fungible token transfer.
      </Card>

      <Card title="Bridges ▸ Transfers" icon="bolt" href="/docs/catalog/bridges/transfers">
        Cross-chain bridge transfers, with the sending and arriving sides matched.
      </Card>

      <Card title="Perpetuals ▸ Trades" icon="bolt" href="/docs/catalog/perpetuals/trades">
        Individual perpetual and order-book trades.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Metrics">
    <Icon icon="chart-line" /> **Metrics** are aggregates over a period. A metric table is one row per thing per period, with that thing's measures for the period: daily for most tables, hourly for prices. `metrics.assets_daily` is every asset on every day with supply, holders, transfer volume and price; `metrics.tokens_prices_hourly` is every token's price every hour. Metrics are built from the facts and keyed to the same dimensions, so a metric row joins its registry row on the same id. The Metrics page of each section documents them, and [Metric definitions](/docs/catalog/metric-definitions) holds the unit and the combination rule of every measure.

    <CardGroup cols={3}>
      <Card title="Assets ▸ Metrics" icon="chart-line" href="/docs/catalog/assets/metrics">
        Daily asset tables: supply, holders, transfers, price, yield and the gap from peg.
      </Card>

      <Card title="Projects ▸ Metrics" icon="chart-line" href="/docs/catalog/projects/metrics">
        TVL, Fees, Revenue, Token incentives, Active users and sector-specific volume at four levels.
      </Card>

      <Card title="Tokens ▸ Prices" icon="chart-line" href="/docs/catalog/tokens/prices">
        One USD price per token per day, and per hour.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Screeners">
    <Info>
      **In progress.** Screeners are not served yet. Stay tuned!
    </Info>

    <Icon icon="ranking-star" /> **Screeners** are rankings. A screener is a stock screener over the catalog: every thing of one kind in one table, with its current level and its change over the last day, week and month, ready to filter and rank. `screeners.dex_pools` is every live trading pool with its TVL now and its volume and fees over 1, 7 and 30 days. A screener reads the last month of the daily metrics and stores the result, so ranking thousands of pools is one small read. It holds no history; the metrics table beneath it does.
  </Tab>

  <Tab title="Functions">
    <Icon icon="function" /> **Functions** are calculations on request. A function runs when you call it, for figures too numerous to store. `functions.calculate_latest_token_balances` returns every holder of a token and their balance, worked out from the token's balance changes at query time. Function pages document them.

    <CardGroup cols={2}>
      <Card title="Tokens ▸ Balances" icon="function" href="/docs/catalog/tokens/balances">
        Holder balances on any past date, computed at query time.
      </Card>

      <Card title="Stablecoins ▸ Balances" icon="function" href="/docs/catalog/stablecoins/balances">
        Stablecoin holder balances at any past date, computed at query time.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Raw chain">
    <Icon icon="cube" /> **Raw chain datasets** stand apart from the five. Each chain has its own dataset named after it, holding the chain's own record in a standardized shape: `ethereum.transactions` is every Ethereum transaction, `solana.blocks` every Solana block. Chains of the same kind share one shape, so a query written for one EVM chain runs on another with the dataset name swapped. [Chain verticals](/docs/catalog/chain-verticals/index) document them.

    <CardGroup cols={3}>
      <Card title="Ethereum ▸ Raw" icon="cube" href="/docs/catalog/chain-verticals/evm/ethereum/raw">
        The standardized Ethereum blocks, transactions, logs and internal calls.
      </Card>

      <Card title="Base ▸ Raw" icon="cube" href="/docs/catalog/chain-verticals/evm/base/raw">
        The standardized Base blocks, transactions, logs and internal calls.
      </Card>

      <Card title="Solana" icon="cube" href="/docs/catalog/chain-verticals/solana">
        Standardized Solana blocks, transactions, instructions, account activity and rewards.
      </Card>
    </CardGroup>
  </Tab>
</Tabs>

## Table names

A table name is `dataset.table`. The dataset says what kind of table it is. The table part is built from the same words in every dataset: the things it holds, plural, and for facts and metrics what about them. Things are plural in a table name and singular in the identifier column that joins them: `facts.lending_market_deposits` carries `lending_market_id`, which joins `dimensions.lending_markets`.

<Tabs>
  <Tab title="Dimensions">
    `dimensions.<things>`: the things, plural. One row per thing.

    <table>
      <thead>
        <tr>
          <th width="280">Table</th>
          <th>Reads as</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>dimensions.assets</code></td>
          <td>The registry of assets.</td>
        </tr>

        <tr>
          <td><code>dimensions.asset\_tokens</code></td>
          <td>The registry of asset tokens: one asset on one chain.</td>
        </tr>

        <tr>
          <td><code>dimensions.dex\_pools</code></td>
          <td>The registry of DEX pools.</td>
        </tr>

        <tr>
          <td><code>dimensions.lending\_markets</code></td>
          <td>The registry of lending markets.</td>
        </tr>

        <tr>
          <td><code>dimensions.metrics</code></td>
          <td>The registry of measures: the unit and combination rule of every one.</td>
        </tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="Facts">
    `facts.<thing>_<events>`: the thing the event happens to, then the event, plural. One row per event. The thing's identifier column joins its dimension.

    <table>
      <thead>
        <tr>
          <th width="250">Table</th>
          <th width="120">Thing</th>
          <th width="120">Event</th>
          <th>Reads as</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>facts.token\_transfers</code></td>
          <td>Token</td>
          <td>Transfer</td>
          <td>Transfers of tokens, one row per transfer.</td>
        </tr>

        <tr>
          <td><code>facts.token\_balance\_changes</code></td>
          <td>Token</td>
          <td>Balance change</td>
          <td>Balance changes of tokens, two rows per transfer: one per side.</td>
        </tr>

        <tr>
          <td><code>facts.bridge\_transfers</code></td>
          <td>Bridge</td>
          <td>Transfer</td>
          <td>Transfers across bridges, one row per cross-chain transfer with both legs paired.</td>
        </tr>

        <tr>
          <td><code>facts.lending\_market\_deposits</code></td>
          <td>Lending market</td>
          <td>Deposit</td>
          <td>Deposits into lending markets, one row per deposit.</td>
        </tr>

        <tr>
          <td><code>facts.perp\_trades</code></td>
          <td>Perp market</td>
          <td>Trade</td>
          <td>Trades on perpetual markets, one row per leg of a fill.</td>
        </tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="Metrics">
    `metrics.<things>_<measure>_<period>`: three parts, in order. The **level** names the things, plural; two things joined means one row per pair, and every level rolls up to the one above it. The **measure** names what is measured, and is absent when the table holds every measure for its level. The **period** is the row's time step.

    <table>
      <thead>
        <tr>
          <th width="270">Table</th>
          <th>Level</th>
          <th width="130">Measure</th>
          <th width="90">Period</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>metrics.assets\_daily</code></td>
          <td>One asset</td>
          <td>Every measure</td>
          <td>Day</td>
        </tr>

        <tr>
          <td><code>metrics.asset\_tokens\_daily</code></td>
          <td>One asset on one chain</td>
          <td>Every measure</td>
          <td>Day</td>
        </tr>

        <tr>
          <td><code>metrics.projects\_daily</code></td>
          <td>One project</td>
          <td>Every measure</td>
          <td>Day</td>
        </tr>

        <tr>
          <td><code>metrics.projects\_chains\_daily</code></td>
          <td>One project on one chain</td>
          <td>Every measure</td>
          <td>Day</td>
        </tr>

        <tr>
          <td><code>metrics.dex\_pool\_pairs\_daily</code></td>
          <td>One pool, one traded pair</td>
          <td>Every measure</td>
          <td>Day</td>
        </tr>

        <tr>
          <td><code>metrics.tokens\_prices\_daily</code></td>
          <td>One token</td>
          <td>Price</td>
          <td>Day</td>
        </tr>

        <tr>
          <td><code>metrics.tokens\_prices\_hourly</code></td>
          <td>One token</td>
          <td>Price</td>
          <td>Hour</td>
        </tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="Screeners">
    `screeners.<things>`: the things, plural, same word as their dimension and their metrics table. One row per thing as it stands now. **In progress.**

    <table>
      <thead>
        <tr>
          <th width="280">Table</th>
          <th>Reads as</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>screeners.dex\_pools</code></td>
          <td>The ranking of DEX pools: TVL now, volume and fees over 1, 7 and 30 days.</td>
        </tr>

        <tr>
          <td><code>screeners.perp\_markets</code></td>
          <td>The ranking of perpetual markets.</td>
        </tr>

        <tr>
          <td><code>screeners.lending\_markets</code></td>
          <td>The ranking of lending markets.</td>
        </tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="Functions">
    `functions.calculate_<result>`: `calculate_`, then what comes back. Called with arguments, in place of a table name.

    <table>
      <thead>
        <tr>
          <th width="340">Function</th>
          <th>Reads as</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>functions.calculate\_latest\_token\_balances</code></td>
          <td>Calculates the latest balance of every holder of one token.</td>
        </tr>

        <tr>
          <td><code>functions.calculate\_historical\_eod\_token\_balances</code></td>
          <td>Calculates every holder's balance of one token at the end of a past day.</td>
        </tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="Raw chain">
    `<chain>.<table>`: the chain's `chain_id` as the dataset, then the record type, plural. One row per block, transaction, log or call.

    <table>
      <thead>
        <tr>
          <th width="280">Table</th>
          <th>Reads as</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>ethereum.blocks</code></td>
          <td>Ethereum's blocks, one row per block.</td>
        </tr>

        <tr>
          <td><code>ethereum.transactions</code></td>
          <td>Ethereum's transactions, one row per transaction.</td>
        </tr>

        <tr>
          <td><code>base.logs</code></td>
          <td>Base's event logs, one row per log.</td>
        </tr>

        <tr>
          <td><code>solana.account\_activity</code></td>
          <td>Solana's account activity, one row per account touched per transaction.</td>
        </tr>
      </tbody>
    </table>
  </Tab>
</Tabs>

## Page kinds

Every page is one of eight kinds. Each kind has a fixed flow of parts, top to bottom.

<Tabs>
  <Tab title="Overview">
    The first page of a section.

    <table>
      <thead>
        <tr>
          <th width="160">Part</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>Intro</td>
          <td>What the entity or the market is, in a few sentences.</td>
        </tr>

        <tr>
          <td>Pages</td>
          <td>One card per page in the section.</td>
        </tr>
      </tbody>
    </table>

    <CardGroup cols={3}>
      <Card title="Stablecoins ▸ Overview" icon="circle-info" href="/docs/catalog/stablecoins/index">
        Every stablecoin: supply, holders, transfers and off-peg, across every chain.
      </Card>

      <Card title="Projects ▸ Overview" icon="circle-info" href="/docs/catalog/projects/index">
        Protocols, the apps they run, and financial metrics at four levels.
      </Card>

      <Card title="Chain verticals ▸ Overview" icon="circle-info" href="/docs/catalog/chain-verticals/index">
        Everything the catalog holds for one chain, family by family.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Registry">
    The dimension tables of a section.

    <table>
      <thead>
        <tr>
          <th width="160">Part</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>Intro</td>
          <td>What the tables describe; with several tables, one bullet per table with its grain.</td>
        </tr>

        <tr>
          <td>Columns</td>
          <td>Every column, its type and one line on what it holds. With several tables this is Tables: one tab per table, each with its own column table.</td>
        </tr>

        <tr>
          <td>Sample queries</td>
          <td>One tab per question, each opening with a bold sentence saying what the query answers.</td>
        </tr>
      </tbody>
    </table>

    <CardGroup cols={3}>
      <Card title="Assets ▸ Registry" icon="table-list" href="/docs/catalog/assets/registry">
        Asset names, where each is issued, and what each one tracks.
      </Card>

      <Card title="Projects ▸ Registry" icon="table-list" href="/docs/catalog/projects/registry">
        Project and app names, market sectors, and who runs what.
      </Card>

      <Card title="Lending ▸ Registry" icon="table-list" href="/docs/catalog/lending/registry">
        Every lending market: one asset inside one lending pool.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Facts">
    One fact table, named by its event: Transfers, Trades, Deposits.

    <table>
      <thead>
        <tr>
          <th width="160">Part</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>Intro</td>
          <td>What the table records and what one row stands for: "one row per transfer".</td>
        </tr>

        <tr>
          <td>Columns</td>
          <td>Every column, its type and one line on what it holds.</td>
        </tr>

        <tr>
          <td>Sample queries</td>
          <td>A yellow box naming the timestamp column to bound, then one tab per question.</td>
        </tr>

        <tr>
          <td>Notes</td>
          <td>Caveats: what the table does not hold, or a rule that is easy to get wrong.</td>
        </tr>
      </tbody>
    </table>

    <CardGroup cols={3}>
      <Card title="Tokens ▸ Transfers" icon="bolt" href="/docs/catalog/tokens/transfers">
        Every fungible token transfer.
      </Card>

      <Card title="Bridges ▸ Transfers" icon="bolt" href="/docs/catalog/bridges/transfers">
        Cross-chain bridge transfers, with the sending and arriving sides matched.
      </Card>

      <Card title="Perpetuals ▸ Trades" icon="bolt" href="/docs/catalog/perpetuals/trades">
        Individual perpetual and order-book trades.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Metrics">
    The metrics tables of a section.

    <table>
      <thead>
        <tr>
          <th width="160">Part</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>Intro</td>
          <td>What is measured, one bullet per table with its level and period.</td>
        </tr>

        <tr>
          <td>Tables</td>
          <td>One tab per level, each with its own column table. Projects ▸ Metrics adds Measures before it: one tab per measure family.</td>
        </tr>

        <tr>
          <td>Sample queries</td>
          <td>One tab per question, each bounded on <code>timestamp</code>.</td>
        </tr>

        <tr>
          <td>Notes</td>
          <td>Caveats: which measures do not add up, and what an empty cell means.</td>
        </tr>
      </tbody>
    </table>

    <CardGroup cols={3}>
      <Card title="Assets ▸ Metrics" icon="chart-line" href="/docs/catalog/assets/metrics">
        Daily asset tables: supply, holders, transfers, price, yield and the gap from peg.
      </Card>

      <Card title="Projects ▸ Metrics" icon="chart-line" href="/docs/catalog/projects/metrics">
        TVL, Fees, Revenue, Token incentives, Active users and sector-specific volume at four levels.
      </Card>

      <Card title="DEX ▸ Metrics" icon="chart-line" href="/docs/catalog/dex/metrics">
        Daily volume, TVL, fees and flash-loan volume per pool and per pair.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Functions">
    The functions of a section.

    <table>
      <thead>
        <tr>
          <th width="160">Part</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>Intro</td>
          <td>What the functions compute and from which table.</td>
        </tr>

        <tr>
          <td>Functions</td>
          <td>One tab per function: its parameters, what it returns, and what the result means.</td>
        </tr>

        <tr>
          <td>Sample queries</td>
          <td>One tab per question, each calling a function in place of a table.</td>
        </tr>

        <tr>
          <td>Notes</td>
          <td>Caveats: cost, and what a missing row means.</td>
        </tr>
      </tbody>
    </table>

    <CardGroup cols={2}>
      <Card title="Tokens ▸ Balances" icon="function" href="/docs/catalog/tokens/balances">
        Holder balances on any past date, computed at query time.
      </Card>

      <Card title="Stablecoins ▸ Balances" icon="function" href="/docs/catalog/stablecoins/balances">
        Stablecoin holder balances at any past date, computed at query time.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Worked view">
    A market's page over a table another section owns.

    <table>
      <thead>
        <tr>
          <th width="160">Part</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>Intro</td>
          <td>The filter that selects the market, and the pointer to the owning page: "Every column is documented at ...".</td>
        </tr>

        <tr>
          <td>Sample queries</td>
          <td>One tab per question, with the filter applied.</td>
        </tr>

        <tr>
          <td>Notes</td>
          <td>Caveats specific to the market.</td>
        </tr>
      </tbody>
    </table>

    <CardGroup cols={3}>
      <Card title="Stablecoins ▸ Transfers" icon="bolt" href="/docs/catalog/stablecoins/transfers">
        Every stablecoin transfer.
      </Card>

      <Card title="Stablecoins ▸ Metrics" icon="chart-line" href="/docs/catalog/stablecoins/metrics">
        Daily supply, holders, transfers and off-peg, per stablecoin and per deployment.
      </Card>

      <Card title="Tokenized assets ▸ Metrics" icon="chart-line" href="/docs/catalog/tokenized-assets/metrics">
        Daily tokenized asset supply, holders, transfer activity and price.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Chain overview">
    The first page of a chain section.

    <table>
      <thead>
        <tr>
          <th width="160">Part</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>Intro</td>
          <td>What the catalog holds for the chain and the dataset the chain's own record sits in.</td>
        </tr>

        <tr>
          <td>Layers</td>
          <td>One row per layer with data on the chain, with the date the layer starts.</td>
        </tr>

        <tr>
          <td>Filtering</td>
          <td>The <code>chain\_id</code> filter that selects the chain in every catalog table, with one query.</td>
        </tr>
      </tbody>
    </table>

    <CardGroup cols={3}>
      <Card title="Ethereum ▸ Overview" icon="circle-info" href="/docs/catalog/chain-verticals/evm/ethereum/index">
        Everything the catalog holds for Ethereum, from raw blocks to project activity.
      </Card>

      <Card title="Base ▸ Overview" icon="circle-info" href="/docs/catalog/chain-verticals/evm/base/index">
        Everything the catalog holds for Base, from raw blocks to project activity.
      </Card>

      <Card title="Solana" icon="cube" href="/docs/catalog/chain-verticals/solana">
        Standardized Solana blocks, transactions, instructions, account activity and rewards.
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Chain layer">
    One layer on one chain: a worked view of that layer with the chain filter applied.

    <table>
      <thead>
        <tr>
          <th width="160">Part</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td>Intro</td>
          <td>What the layer holds on this chain, and the pointer to the page that owns the columns.</td>
        </tr>

        <tr>
          <td>Tables</td>
          <td>On the Raw page only: the chain's own tables, one line each.</td>
        </tr>

        <tr>
          <td>Sample queries</td>
          <td>One tab per question, with <code>chain\_id</code> fixed.</td>
        </tr>

        <tr>
          <td>Notes</td>
          <td>Caveats specific to the chain.</td>
        </tr>
      </tbody>
    </table>

    <CardGroup cols={3}>
      <Card title="Ethereum ▸ Raw" icon="cube" href="/docs/catalog/chain-verticals/evm/ethereum/raw">
        The standardized Ethereum blocks, transactions, logs and internal calls.
      </Card>

      <Card title="Ethereum ▸ DEX" icon="arrows-rotate" href="/docs/catalog/chain-verticals/evm/ethereum/dex">
        Ethereum trading pools, their daily volume, value locked and fees.
      </Card>

      <Card title="Base ▸ Stablecoins" icon="sack-dollar" href="/docs/catalog/chain-verticals/evm/base/stablecoins">
        Every stablecoin issued on Base: supply, holders and transfers.
      </Card>
    </CardGroup>
  </Tab>
</Tabs>

## Marks

<table>
  <thead>
    <tr>
      <th width="200">Mark</th>
      <th>Meaning</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><strong>In progress</strong></td>
      <td>A tag beside a page title, a banner at the top of a page, or bold text on a card. The table is documented ahead of serving: the page is its spec, and there is no table to query until it lands.</td>
    </tr>

    <tr>
      <td>Since</td>
      <td>A date in a chain page's Layers table: the earliest day that layer holds for the chain.</td>
    </tr>

    <tr>
      <td>Warning box</td>
      <td>The table is large and split by day. The box names the column to bound. A query with no bound reads the whole table, and the whole table is billed to you.</td>
    </tr>

    <tr>
      <td>Your BQ Project ID</td>
      <td>The field at the right end of the top bar. Write your project id there and the browser keeps it. Every sample query on every page rewrites itself to run in your project.</td>
    </tr>
  </tbody>
</table>

## Identifiers

Simple identifiers are lowercase names. Combined identifiers join their parts with dashes.

<table>
  <thead>
    <tr>
      <th width="170">Identifier</th>
      <th width="320">Shape</th>
      <th>Example</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>chain\_id</code></td>
      <td>Chain name</td>
      <td><code>ethereum</code></td>
    </tr>

    <tr>
      <td><code>asset\_id</code></td>
      <td>Asset name</td>
      <td><code>usdc</code></td>
    </tr>

    <tr>
      <td><code>project\_id</code></td>
      <td>Project name</td>
      <td><code>uniswap</code></td>
    </tr>

    <tr>
      <td><code>app\_id</code></td>
      <td>Project name and version</td>
      <td><code>uniswap-v3</code></td>
    </tr>

    <tr>
      <td><code>token\_id</code></td>
      <td><code>\{token\_address}-\{chain\_id}</code></td>
      <td><code>0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48-ethereum</code></td>
    </tr>

    <tr>
      <td><code>asset\_token\_id</code></td>
      <td><code>\{asset\_id}-\{token\_address}-\{chain\_id}</code></td>
      <td><code>usdc-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48-ethereum</code></td>
    </tr>
  </tbody>
</table>

An asset is one identity across chains and a token is one contract on one chain: USDC is one row in `dimensions.assets` and one row per chain in `dimensions.asset_tokens`. EVM addresses are stored lowercase: wrap an address copied from a block explorer in `lower()` before matching it. Solana addresses are base58 and case-sensitive: stored and matched verbatim. [Accounts](/docs/catalog/accounts/index) covers the address rules.

## Numbers

* **An empty cell is not zero.** It means no figure exists for that measure, for that thing, on that day.
* **Units live in the metric definition.** `dimensions.metrics` names the unit of every measure: `usd`, `count`, `ratio` or `pct`. Ratios are fractions: an `apy` of `0.05` is five percent, and an `off_peg` of `-0.02` is two percent below peg.
* **Every measure is additive, semi-additive or non-additive.**

  * **Additive**: flows, such as Fees or Trading volume. They add up across days and across things: a week is seven days added together, a project is its apps added together.
  * **Semi-additive**: balances, such as TVL or Supply. They add up across things but not across days: a week's figure is the last day's.
  * **Non-additive**: rates and counts of distinct addresses, such as APY or Active users. They add up neither way.

  [Metric definitions](/docs/catalog/metric-definitions) holds the class and the rule for every measure.

## Running a query

<Steps>
  <Step title="Get the share">
    The catalog arrives in your own Google Cloud project as a BigQuery share, and compute is billed to you. [Contact us](/docs/contact) to arrange it.
  </Step>

  <Step title="Write your project id">
    Type your BigQuery project id into the field at the right end of the top bar. Every sample query on every page carries it.
  </Step>

  <Step title="Copy a sample query">
    Open the page for the table, pick the tab whose bold sentence matches your question, and copy the query.
  </Step>

  <Step title="Run it in BigQuery">
    Paste the query into the BigQuery console and run it. Keep the date bound the query came with, and widen it once the result looks right.
  </Step>
</Steps>
