Cross-Chain Token (CCT) — Canton
Connect a Canton instrument to CCIP by deploying a token pool, registering on the Token Admin Registry (TAR), and enabling a cross-chain lane.
Choose your guide
| Guide | When to use |
|---|---|
| Registry Issuer Guide | Issue a new token via Digital Asset Registry and connect CCIP end to end |
| BurnMint Token Pool Deployment | Existing CIP-56 instrument with burn/mint authority |
| LockRelease Token Pool Deployment | Fixed-supply instrument with transfer pre-approvals |
Starter kit (cct:* scripts)
The ccip-starter-kit-canton automates pool deployment and TAR registration on Canton testnet. Each BurnMint and LockRelease guide includes Starter kit and Manual paths for those steps.
Setup
-
Clone and install:
Terminalgit clone https://github.com/smartcontractkit/ccip-starter-kit-canton.git cd ccip-starter-kit-canton npm install -
Configure environment — follow Canton as Source prerequisites for
.env,canton-config.json, and ledger auth. -
In
config/canton-config.json, setparty(pool owner/admin) andtransferInstructionUrl(your validator API) — see Canton as Source prerequisites.
Scripts
| Script | Command | What it does |
|---|---|---|
| Deploy BurnMint pool | npm run cct:deploy-burn-mint | Creates a BurnMintTokenPool on-ledger |
| Deploy LockRelease pool | npm run cct:deploy-lock-release | Creates a LockReleaseTokenPool on-ledger |
| Register on TAR | npm run cct:set-token | Runs ProposeAdministrator → AcceptAdminRole → SetPool on the Token Admin Registry |
Typical flow (BurnMint)
# 1. Deploy pool
npm run cct:deploy-burn-mint -- \
--instanceId acme-eur-bm-pool \
--instrument 'yourParty::1220…::token-id'
# 2. Register on TAR (poolOwner defaults to party in canton-config.json)
npm run cct:set-token -- \
--instrument 'yourParty::1220…::token-id' \
--poolInstanceId acme-eur-bm-pool
# 3. Enable lane — manual Ledger API (see guide Step 3)
On-ledger checklist (all guides)
Every CCT deployment ends with the same verification path:
- Pool deployed at
{instanceId}@{poolOwner}with the correctInstrumentId. - TAR maps the instrument to your pool; your party is token admin.
- Lane enabled — three rate limiters plus
ApplyChainUpdateson the pool. - Explicit Disclosure Service running for your pool operator.
- Test transfers — see CCIP on Canton — Overview and CCIP Explorer.
Cross-chain send and receive are validated by Chainlink operations once your token is registered and lanes are configured.
Prerequisites (all CCT guides)
- Starter kit setup for
cct:*scripts (.env,canton-config.json, ledger auth) - The token pool DAR for your pool type on your participant —
ccip-burn-mint-token-pool-2.1.0.darorccip-lock-release-token-pool-2.1.0.dar(each bundles its CCIP dependencies — the only DAR you upload). - CCIP contract references from Chainlink ops (owner party, TAR, RMNRemote, FeeQuoter) — EDS and indexer URLs are pre-filled in the starter kit
- A validator user with
can_act_asrights for your ledger parties - Understanding of token pools and explicit disclosure