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

# Native Token Transfers

The native token transfers table provides a per-party, per-movement accounting view of all CC (Canton Coin) flows. Each transfer event produces multiple rows — one row per CC movement — allowing credit/debit ledger reconstruction per party. Transfer types cover all forms of CC creation (mints), destruction (burns/fees), and party-to-party movements. Summing credits minus debits per party reconstructs the nominal CC delta for each event.

Common `transfer_type` values:

* `input_consumed` — existing Amulet UTXO destroyed (debit)
* `input_returned` — sender's own CC returned as change (credit)
* `transfer` — party-to-party CC payment
* `sv_reward_mint`, `validator_reward_mint`, `app_reward_mint` — reward coupons redeemed (credits)
* `traffic_purchase` — CC burned for synchronizer bandwidth
* `dust_expire` — fully-decayed Amulet garbage collected by super validators
* `preapproval_burn`, `preapproval_renew_burn`, `setup_burn` — CC burned for protocol operations
* `holding_fee`, `sender_change_fee` — historical only; always zero post-CIP-0078 fee removal

### Table Details

| Property            | Value                                    |
| ------------------- | ---------------------------------------- |
| Table Name          | `canton.raw.native_token_transfers`      |
| Table Status        | Production-Ready                         |
| Unique Key          | `record_time`, `unique_id`               |
| Clustering Key(s)   | `to_date("record_time")`                 |
| Search Optimization | `from_address`, `to_address`, `event_id` |

### Table Columns

| Column Name      | Data Type         | Description                                                                                                                                                                                                                                                       |
| ---------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| unique\_id       | VARCHAR(16777216) | Unique row identifier, derived from event\_id and the transfer index within the event.                                                                                                                                                                            |
| transfer\_index  | NUMBER(38,0)      | Sequential index of this transfer row within the event. Multiple rows per event represent different CC movements (e.g., input consumed, change returned, receiver credited).                                                                                      |
| update\_id       | VARCHAR(16777216) | The update (transaction) this transfer belongs to. Foreign key to `canton.raw.updates`.                                                                                                                                                                           |
| event\_id        | VARCHAR(16777216) | The event that generated this transfer row. Foreign key to `canton.raw.events`.                                                                                                                                                                                   |
| record\_time     | TIMESTAMP\_NTZ(9) | The timestamp at which the synchronizer sequenced the parent update.                                                                                                                                                                                              |
| migration\_id    | NUMBER(38,0)      | Synchronizer migration epoch. Canton upgrades increment this value (currently 0–4). The active migration\_id must match the time range being queried.                                                                                                             |
| choice           | VARCHAR(16777216) | The Daml choice that generated this transfer row (e.g., `AmuletRules_Transfer`, `AmuletRules_BuyMemberTraffic`, `Amulet_Expire`).                                                                                                                                 |
| transfer\_type   | VARCHAR(16777216) | Classification of this CC movement. See table description for full list of values. Use this column to filter for specific movement types (e.g., `transfer` for party-to-party payments, or mint types for reward analysis).                                       |
| from\_address    | VARCHAR(16777216) | The party sending or losing CC in this movement, formatted as `display_name::hash`. Null for mint rows (credits with no sender). Filter by hash portion to find all rows for an entity across multiple party names.                                               |
| to\_address      | VARCHAR(16777216) | The party receiving CC in this movement, formatted as `display_name::hash`. Null for burn/fee rows (debits with no recipient). Filter by hash portion to find all rows for an entity across multiple party names.                                                 |
| amount\_str      | VARCHAR(16777216) | The CC amount of this movement as a string, preserving full decimal precision. May be in scientific notation (`"0E-10"`) for zero or near-zero values.                                                                                                            |
| amount           | FLOAT             | The CC amount of this movement as a float. Use amount\_str for accounting to avoid floating-point precision loss.                                                                                                                                                 |
| round\_number    | NUMBER(38,0)      | The Canton mining round number (\~10 minutes per round) in which this transfer occurred. Used for reward rate calculations and ExpiringAmount decay computation.                                                                                                  |
| locked           | BOOLEAN           | Whether the output Amulet created by this transfer is time-locked (a LockedAmulet contract). True for escrowed CC in multi-step transfers (e.g., Allocation\_ExecuteTransfer). Locked CC is still owned by the receiver but cannot be transferred until released. |
| output\_index    | NUMBER(38,0)      | For transfer-type rows, the position of this output in the event's outputs array. Links to the corresponding row in `canton.raw.outputs`.                                                                                                                         |
| block\_number    | NUMBER(38,0)      | Synthetic 1-second block index inherited from the parent update.                                                                                                                                                                                                  |
| block\_timestamp | TIMESTAMP\_NTZ(9) | Start timestamp of the synthetic 1-second block window for this transfer.                                                                                                                                                                                         |
| \_created\_at    | TIMESTAMP\_NTZ(9) | Timestamp of when the entry was created in the database.                                                                                                                                                                                                          |
| \_updated\_at    | TIMESTAMP\_NTZ(9) | Timestamp of when the entry was last updated in the database.                                                                                                                                                                                                     |
