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

# Multichain Token Transfers

> Unified fungible token transfer activity across EVM, Solana, Aptos, Sui, Stellar, and XRPL.

export const TableSample = ({tableName, tableSchema}) => <>
    <div className="hidden dark:block">
      <iframe src={`https://dune.com/embeds/3419983/5785629?table_schema_t6f0df=${tableSchema}&table_name_t6f0df=${tableName}&darkMode=true`} style={{
  width: '100%',
  height: '500px',
  border: 'none',
  marginTop: '10px'
}} />
    </div>
    <div className="dark:hidden">
      <iframe src={`https://dune.com/embeds/3419983/5785629?table_schema_t6f0df=${tableSchema}&table_name_t6f0df=${tableName}`} style={{
  width: '100%',
  height: '500px',
  border: 'none',
  marginTop: '10px'
}} />
    </div>
  </>;

The `tokens_multichain.transfers` table provides a chain-agnostic view of fungible token transfer activity across EVM-compatible chains, Solana, Aptos, Sui, Stellar, and XRPL.

It normalizes the most commonly used transfer fields into one schema, so you can analyze token movement across ecosystems without writing your own `UNION ALL` query over chain-specific tables.

This dataset includes:

* Transfer activity from EVM, Solana, Aptos, Sui, Stellar, and XRPL source models
* String-based addresses and transaction identifiers for cross-ecosystem compatibility
* Chain-native token identifiers through `token_address` and `token_id`
* Normalized amount fields and USD values where source pricing is available

<Info>
  Use this table for broad cross-chain transfer analysis. Use the chain-specific transfer tables when you need source-specific details that are not part of the normalized multichain schema.
</Info>

### Utility

The multichain transfers table provides a consistent view of fungible token movement across ecosystems, enabling you to:

* Compare transfer volume and activity across chains
* Build cross-chain wallet activity views
* Track token movement by symbol, token identifier, or blockchain
* Analyze transfers across EVM and non-EVM ecosystems with one query

### Methodology

The `tokens_multichain.transfers` table is built as a normalized union of Dune's chain-level token transfer models:

* EVM transfers from `tokens_evm.transfers`
* Solana transfers from `tokens_solana.transfers`
* Aptos transfers from `tokens_aptos.transfers`
* Sui transfers from `tokens_sui.transfers`
* Stellar transfers from `tokens_stellar.transfers`
* XRPL transfers from `tokens_xrpl.transfers`

Each source model keeps its own chain-specific reconstruction logic. The multichain table maps those outputs into shared columns for time, transaction identity, sender, receiver, token identity, amount, pricing, and transfer classification.

Some chain-specific fields are nullable because not every ecosystem has the same concepts. For example, EVM has transaction indexes and event indexes, Solana has instruction indexes, Aptos has transaction versions, Sui has checkpoints, Stellar has ledger sequences and operation IDs, and XRPL has ledger indexes.

### Pricing Methodology

The `amount_usd` column is carried through from the chain-specific source models when pricing is available. Availability varies by ecosystem and token. If a token does not have a usable USD price at the transfer time, `amount_usd` stays `NULL`.

The `price_usd` column is also source-dependent. Some source models provide an hourly token price, while others only expose the final USD value.

For more details on Dune's pricing methodology, see the [Prices documentation](/data-catalog/curated/prices/overview).

## Table Schema

| Column            | Type                       | Description                                                                                                                                          |
| ----------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `unique_key`      | `VARCHAR`                  | Surrogate key to identify a unique transfer row                                                                                                      |
| `blockchain`      | `VARCHAR`                  | Blockchain identifier for the transfer                                                                                                               |
| `block_time`      | `TIMESTAMP WITH TIME ZONE` | Block, slot, checkpoint, ledger, or transaction timestamp                                                                                            |
| `block_date`      | `DATE`                     | Date derived from `block_time`                                                                                                                       |
| `block_month`     | `DATE`                     | Month bucket derived from `block_time`                                                                                                               |
| `block_number`    | `BIGINT`                   | Chain-native block or ledger number, such as EVM block number, Solana slot, Sui checkpoint, Stellar ledger sequence, or XRPL ledger index            |
| `tx_id`           | `VARCHAR`                  | Chain-native transaction identifier                                                                                                                  |
| `tx_sequence`     | `BIGINT`                   | Nullable chain-native transaction sequence, such as Aptos transaction version or Stellar transaction ID                                              |
| `tx_index`        | `BIGINT`                   | Nullable transaction index within the block or ledger unit                                                                                           |
| `event_index`     | `BIGINT`                   | Nullable primary event, instruction, or operation index                                                                                              |
| `sub_event_index` | `BIGINT`                   | Nullable secondary event, instruction, or matched-counterpart index                                                                                  |
| `from_address`    | `VARCHAR`                  | Sender owner or account address                                                                                                                      |
| `to_address`      | `VARCHAR`                  | Receiver owner or account address                                                                                                                    |
| `tx_signer`       | `VARCHAR`                  | Transaction signer or sender when available                                                                                                          |
| `token_address`   | `VARCHAR`                  | Address-like token identifier, such as an EVM contract, Solana mint, Aptos package address, Sui package address, Stellar contract ID, or XRPL issuer |
| `token_id`        | `VARCHAR`                  | Full chain-native token identifier when richer than `token_address`, such as Aptos asset type, Sui coin type, Stellar asset ID, or XRPL asset ID     |
| `token_symbol`    | `VARCHAR`                  | Token symbol                                                                                                                                         |
| `token_standard`  | `VARCHAR`                  | Source token standard or program label                                                                                                               |
| `amount_raw`      | `UINT256`                  | Raw token amount before decimal adjustment                                                                                                           |
| `amount`          | `DOUBLE`                   | Transfer amount in display units                                                                                                                     |
| `price_usd`       | `DOUBLE`                   | USD price used to calculate `amount_usd`, when provided by the source model                                                                          |
| `amount_usd`      | `DOUBLE`                   | USD value of the transfer when pricing is available                                                                                                  |
| `transfer_type`   | `VARCHAR`                  | Nullable chain-native transfer classification or action                                                                                              |
| `_updated_at`     | `TIMESTAMP`                | Timestamp when this row was last written, when provided by the source model                                                                          |

<TableSample tableSchema="tokens_multichain" tableName="transfers" />

## Sample Queries

**Compare transfer activity across ecosystems**

This query aggregates recent priced transfer volume by blockchain and token symbol:

```sql theme={null}
SELECT
    block_date,
    blockchain,
    token_symbol,
    COUNT(*) AS num_transfers,
    SUM(amount_usd) AS transfer_volume_usd
FROM tokens_multichain.transfers
WHERE block_date >= current_date - interval '30' day
    AND amount_usd IS NOT NULL
GROUP BY 1, 2, 3
ORDER BY block_date DESC, transfer_volume_usd DESC
LIMIT 100
```

**Query recent transfers for one address on one chain**

Because addresses are stored as strings, include `blockchain` when querying a specific address so the value is interpreted in the right ecosystem:

```sql theme={null}
SELECT
    block_time,
    blockchain,
    tx_id,
    token_symbol,
    token_id,
    CASE
        WHEN from_address = '9SUrE3EPBoXVjNywEDHSJKJdxebs8H8sLgEWdueEvnKX' THEN 'Outgoing'
        WHEN to_address = '9SUrE3EPBoXVjNywEDHSJKJdxebs8H8sLgEWdueEvnKX' THEN 'Incoming'
    END AS direction,
    amount,
    amount_usd
FROM tokens_multichain.transfers
WHERE blockchain = 'solana'
    AND (
        from_address = '9SUrE3EPBoXVjNywEDHSJKJdxebs8H8sLgEWdueEvnKX'
        OR to_address = '9SUrE3EPBoXVjNywEDHSJKJdxebs8H8sLgEWdueEvnKX'
    )
    AND block_date >= current_date - interval '30' day
ORDER BY block_time DESC
LIMIT 100
```

**Analyze transfer categories by chain**

This query compares source transfer classifications where they are available:

```sql theme={null}
SELECT
    blockchain,
    COALESCE(transfer_type, 'not_applicable') AS transfer_type,
    COUNT(*) AS num_rows,
    SUM(amount_usd) AS total_amount_usd
FROM tokens_multichain.transfers
WHERE block_date >= current_date - interval '30' day
GROUP BY 1, 2
ORDER BY num_rows DESC
LIMIT 100
```
