Token Transfers: Canton as Destination

This tutorial demonstrates how to transfer tokens from Ethereum Sepolia to Canton: burn TEST on Sepolia and receive LINK on Canton after manual execution.

Introduction

The prod testnet lane maps Sepolia TEST to Canton LINK. Token delivery on Canton happens only after you:

  1. Send the token transfer from Sepolia (any2canton:token).
  2. Wait for source finality and Committee Verifier proofs on the indexer.
  3. Execute on Canton (any2canton:manual-exec) — the SDK processes TokenReceiveTicket and issues a TransferInstruction for your party to accept.

What You Will Build

In this tutorial, you will:

  • Fund your Sepolia wallet with TEST tokens.
  • Send 1 TEST from Sepolia to your Canton party.
  • Execute on Canton and verify LINK balance.

Understanding Token Transfers (any2canton)

Key points:

  • Burn and mint: TEST is burned on Sepolia; LINK is minted on Canton after execution.
  • Manual execution required: Unlike canton2any default auto-exec on Sepolia, all any2canton token transfers require any2canton:manual-exec on Canton.
  • Token pool disclosures: Execution fetches disclosures from Global CCIP EDS and the token pool operator EDS.

See the Canton as Destination flowTokenReceiveTicket and token pool release steps.

Running the Tutorial

Prerequisites Check

  1. Complete prerequisites.

  2. Mint TEST on Sepolia:

    Terminal
    npm run faucet:evm-test
    
  3. Note your Canton LINK balance before the transfer:

    Terminal
    npm run check-balance -- --chain canton --token link
    

Step 1: Send TEST from Sepolia

Terminal
npm run any2canton:token -- --amount 1

Faster finality (32 block confirmations):

Terminal
npm run any2canton:token -- --amount 1 --finality 32

Expected send output

🪙 Sending 1 TEST from Sepolia → Canton
   Receiver party: yourParty::1220…
   LINK is minted on Canton only after manual execution.
🆔 CCIP Message ID: 0x…
🔗 CCIP Explorer: https://ccip.chain.link/#/side-drawer/msg/0x…

⚙️  Execute on Canton once the message is finalized on Sepolia:
   npm run any2canton:manual-exec -- 0x<sepoliaTxHash>

Step 2: Execute on Canton

Wait for the requested finality and Committee Verifier proofs on the indexer, then:

Terminal
npm run any2canton:manual-exec -- <sepoliaTxHash>

Execution typically takes 1–3 minutes on the ledger after you run the command.

Verification

Terminal
npm run check-balance -- --chain canton --token link

Your LINK balance should increase after successful execution and TransferInstruction acceptance.

CCIP Explorer

Confirm the message reached SUCCESS and inspect the Canton execution update in Lighthouse.

Verbose holdings (optional)

Terminal
npm run check-balance -- --chain canton --token link --show-holdings

Get the latest Chainlink content straight to your inbox.