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. CommonDocumentation Index
Fetch the complete documentation index at: https://docs.allium.so/llms.txt
Use this file to discover all available pages before exploring further.
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 paymentsv_reward_mint,validator_reward_mint,app_reward_mintβ reward coupons redeemed (credits)traffic_purchaseβ CC burned for synchronizer bandwidthdust_expireβ fully-decayed Amulet garbage collected by super validatorspreapproval_burn,preapproval_renew_burn,setup_burnβ CC burned for protocol operationsholding_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 | Beta π± |
| 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. |