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

> ## Agent Instructions
> To query the Token Terminal data catalog, read https://tokenterminal.com/docs/catalog/agents-manual.md first. It is the whole catalog as one page: table naming grammar, key columns, partition and cluster rules, units, additivity, and the tables that are documented but not served yet.
> Never query a catalog table on a time bound alone. Also filter its cluster key, which you read from INFORMATION_SCHEMA.COLUMNS; an empty result means the object is a view, whose pruning contract is on its page. Compute is billed to the caller's own Google Cloud project.

# Polkadot

> The Polkadot relay chain and its system chains, from June 2020.

Polkadot is a relay chain with a set of system chains beside it, each doing one job the relay chain does not. Every one is its own dataset, queried as `<chain_id>.<table>`, and all of them carry the same three core tables. The relay chain carries two more.

## Chains

<table>
  <thead>
    <tr>
      <th width="180">Chain</th>
      <th width="190"><code>chain\_id</code></th>
      <th width="90">Since</th>
      <th>What it holds</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Relay chain</td>
      <td><code>polkadot</code></td>
      <td>2020-06</td>
      <td>Consensus and the chains connected to it. Issues no tokens and hosts no apps, so the catalog tables built on those hold nothing for it.</td>
    </tr>

    <tr>
      <td>Asset Hub</td>
      <td><code>polkadotassethub</code></td>
      <td>2021-12</td>
      <td>Fungible and non-fungible assets. Its tokens reach the token list.</td>
    </tr>

    <tr>
      <td>Bridge Hub</td>
      <td><code>polkadotbridgehub</code></td>
      <td>2023-05</td>
      <td>Bridges from Polkadot to other networks.</td>
    </tr>

    <tr>
      <td>Collectives</td>
      <td><code>polkadotcollectives</code></td>
      <td>2022-11</td>
      <td>On-chain bodies, including the Technical Fellowship.</td>
    </tr>

    <tr>
      <td>Coretime</td>
      <td><code>polkadotcoretime</code></td>
      <td>2024-09</td>
      <td>Sales of blockspace to the chains that use it.</td>
    </tr>

    <tr>
      <td>People</td>
      <td><code>polkadotpeople</code></td>
      <td>2024-07</td>
      <td>Identities, which moved off the relay chain onto their own.</td>
    </tr>
  </tbody>
</table>

Every column is documented at [Substrate ▸ Overview](/docs/catalog/chain-verticals/substrate/index).

## Tables

Every chain above carries `blocks`, `extrinsics` and `events`. The relay chain carries two more.

<table>
  <thead>
    <tr>
      <th width="240">Table</th>
      <th width="150">Chains</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>blocks</code></td>
      <td>All</td>
      <td>One row per block, with its author and extrinsic count.</td>
    </tr>

    <tr>
      <td><code>extrinsics</code></td>
      <td>All</td>
      <td>One row per extrinsic, the Substrate equivalent of a transaction.</td>
    </tr>

    <tr>
      <td><code>events</code></td>
      <td>All</td>
      <td>One row per event emitted during block execution.</td>
    </tr>

    <tr>
      <td><code>initialize\_finalize\_events</code></td>
      <td><code>polkadot</code></td>
      <td>Events emitted while a block is initialized and finalized.</td>
    </tr>

    <tr>
      <td><code>chain\_ids</code></td>
      <td><code>polkadot</code></td>
      <td>A mapping of numeric ids to chain identifiers.</td>
    </tr>
  </tbody>
</table>

## Sample queries

<Warning>
  The tables split by day on `block_timestamp` (`blocks` on `timestamp`). Bound that column in every query; without a bound the query reads the whole table.
</Warning>

<Tabs>
  <Tab title="Event-emitting pallets">
    **Rank event-emitting pallets on the relay chain on one day.**

    ```sql theme={null}
    select
        event_pallet,
        count(*) as events
    from `polkadot.events`
    where block_timestamp >= timestamp('2026-08-20')
      and block_timestamp < timestamp('2026-08-21')
    group by event_pallet
    order by events desc
    limit 20
    ```
  </Tab>

  <Tab title="One system chain">
    **Count daily extrinsics on Asset Hub over one week.** Swap the dataset name for any other chain in the table above; the shape is the same.

    ```sql theme={null}
    select
        timestamp_trunc(block_timestamp, day) as day,
        count(*) as extrinsics
    from `polkadotassethub.extrinsics`
    where block_timestamp >= timestamp('2026-08-16')
      and block_timestamp < timestamp('2026-08-23')
    group by day
    order by day
    ```
  </Tab>

  <Tab title="Chain entry lookup">
    **Look up Polkadot's chain entry and the project it belongs to.**

    ```sql theme={null}
    select
        chains.chain_id,
        chains.name as chain_name,
        projects.name as project_name,
        projects.primary_market_sector
    from `dimensions.chains` as chains
    join `dimensions.projects` as projects using (project_id)
    where chains.chain_id = 'polkadot'
    ```
  </Tab>
</Tabs>

## Notes

`initialize_finalize_events` has the same columns as `events` and stopped receiving new rows on 2024-07-29. `chain_ids` is not split by day and carries two columns, `id` and `chain_id`.

The relay chain issues no tokens and hosts no apps, so the catalog tables built on those things hold nothing for it. Asset Hub is where its tokens live, and those do reach the token list.

[Chains](/docs/catalog/chains/index) covers the list of chains and the daily tables built on it. [Tokens](/docs/catalog/tokens/index) covers the token list.
