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

# Transactions

> Individual transactions with the fee each one paid.

<Info>
  **In progress.** This table is not served yet. The page documents it as it lands.
</Info>

`facts.chain_transactions` contains one row per transaction on a covered network, with the fee that transaction paid. Every covered network lands in this same table, so one query spans them all. `project_id` is worked out from `dimensions.chains` when the table is read, so a change of operator flows into every row.

## Columns

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

  <tbody>
    <tr>
      <td><code>block\_timestamp</code></td>
      <td><code>TIMESTAMP</code></td>
      <td>The time of the block containing the transaction. Partition column of the underlying sources.</td>
    </tr>

    <tr>
      <td><code>transaction\_hash</code></td>
      <td><code>STRING</code></td>
      <td>Hash of the transaction.</td>
    </tr>

    <tr>
      <td><code>chain\_id</code></td>
      <td><code>STRING</code></td>
      <td>Chain the transaction executed on.</td>
    </tr>

    <tr>
      <td><code>project\_id</code></td>
      <td><code>STRING</code></td>
      <td>Project running the chain, taken from <code>dimensions.chains</code>.</td>
    </tr>

    <tr>
      <td><code>from\_address</code></td>
      <td><code>STRING</code></td>
      <td>Address that sent the transaction.</td>
    </tr>

    <tr>
      <td><code>token\_address</code></td>
      <td><code>STRING</code></td>
      <td>Address of the chain's own gas token, the one the fee is charged in.</td>
    </tr>

    <tr>
      <td><code>fee\_amount</code></td>
      <td><code>FLOAT64</code></td>
      <td>Fee the transaction paid, in units of that gas token.</td>
    </tr>
  </tbody>
</table>

## Sample queries

<Warning>
  The table is partitioned on `block_timestamp`. A query bounded on that column reads only the days it needs. Bound it in every query.
</Warning>

<Tabs>
  <Tab title="Top fee payers">
    **Rank addresses by fees paid on one chain over one week.** We publish no per-address totals, so a figure per address is worked out straight from the transactions.

    ```sql theme={null}
    select
        from_address,
        sum(fee_amount) as fees_paid,
        count(*) as transactions
    from `facts.chain_transactions`
    where chain_id = 'hyperevm'
      and block_timestamp >= timestamp('2026-08-01')
      and block_timestamp < timestamp('2026-08-08')
    group by from_address
    order by fees_paid desc
    limit 20
    ```
  </Tab>

  <Tab title="One address, daily">
    **Count one address's transactions per day.**

    ```sql theme={null}
    select
        timestamp_trunc(block_timestamp, day) as day,
        count(*) as transactions,
        sum(fee_amount) as fees_paid
    from `facts.chain_transactions`
    where chain_id = 'hyperevm'
      and from_address = '0x0000000000000000000000000000000000000000'
      and block_timestamp >= timestamp('2026-08-01')
    group by day
    order by day
    ```
  </Tab>
</Tabs>

## Notes

`fee_amount` is in units of the chain's gas token rather than in USD, and `token_address` names that token. The daily fee total per chain in USD is already worked out on [Chains ▸ Metrics](/docs/catalog/chains/metrics), where reading it costs a single day of data.
