# Upgradability (Canton)
Source: https://docs.chain.link/ccip/concepts/canton/upgradability
Last Updated: 2026-07-10

> For the complete documentation index, see [llms.txt](/llms.txt).

> **CAUTION**
>
> Addresses shown may change due to upgrades since Canton contracts are immutable. Confirm party IDs and contract addresses with [Chainlink CCIP](https://chain.link/ccip-contact).On Canton, CCIP logic ships as **Daml packages** packaged in **DAR** files. Participants load and **vet** packages on their nodes before they can interpret transactions. CCIP evolves by publishing new DAR versions — see the [chainlink-canton](https://github.com/smartcontractkit/chainlink-canton) repository for contract sources.For participant operations (uploading DARs, vetting, and unvetting packages), see the [Canton Network documentation](https://docs.canton.network/) — for example [Manage Daml packages and archives](https://docs.canton.network/global-synchronizer/production-operations/manage-packages).## Package structureCCIP on Canton is organized as a tree of Daml packages with stable **interface** packages at the top, **core** implementations in the middle, and **third-party owned** packages — such as token pools, executors, and Committee Verifier operators — at the bottom.![CCIP Canton package dependency layers: un-upgradeable base, interface packages, core packages, and third-party owned packages](/images/ccip/concepts/architecture/ccip-canton-package-dependencies.svg)*Figure 1. CCIP Canton package dependencies. Downstream packages import upstream packages.*Interface packages are not modified in place. When an implementation package is updated, any **downstream** package that imports it must be rebuilt and released. CCIP minimizes this by keeping extension points behind stable interfaces.## Upgrading DARs on your participantWhen Chainlink CCIP communicates a new version, **every validator that interacts with the updated contracts must upload and vet the new DARs**. In practice:* **Users** who send or execute CCIP messages must vet new DARs for packages their workflows depend on.
* **Third-party operators** — token pool owners, Committee Verifier operators, executors, and similar parties — must upgrade when packages they operate are updated.Typical rollout:1) Chainlink builds the new DAR and communicates it to affected parties.
2) Chainlink uploads the DAR on its validators.
3) After a coordination window, affected parties upload the DAR on their own participants.
4) Depending on urgency, operators may **unvet** the previous package version so validators still on the old DAR can no longer interpret new transactions.For low-impact enhancements, step 4 may be skipped — both versions can coexist until participants choose to upgrade.Upload new DARs on your participant using the process in [Upload a DAR](https://docs.canton.network/global-synchronizer/production-operations/manage-packages#upload-a-dar).### Token poolsIf a new DAR affecting token pools is released, **deploy a new token pool**, register it in the [Token Admin Registry](/ccip/concepts/canton/token-pools#registering-on-the-token-admin-registry), and retire the old pool once traffic has moved.> **NOTE: No liquidity migration on Canton**
>
> Canton token pools do **not** custody liquidity on-ledger — LockRelease pools use the pool owner's holdings; BurnMint pools mint and burn against instrument supply. As long as there are **no pending cross-chain messages** for the old pool, there is no on-ledger liquidity to migrate. Coordinate the cutover using the [CCIP Explorer](/ccip/tools-resources/ccip-explorer) and complete or execute any in-flight transfers before switching TAR registration to the new pool.See the [BurnMint](/ccip/tutorials/canton/cross-chain-tokens/burn-mint-token-pool) and [LockRelease](/ccip/tutorials/canton/cross-chain-tokens/lock-release-token-pool) deployment guides for pool setup and TAR registration.## Staying current* Monitor communications from Chainlink CCIP operations for required DAR versions on your lanes.
* Confirm your participant has the CCIP DARs your workflows need before sending or executing — see [Key Concepts](/ccip/concepts/canton/key-concepts) and [source prerequisites](/ccip/tutorials/canton/source/prerequisites).
* Confirm party IDs and contract addresses with [Chainlink CCIP](https://chain.link/ccip-contact) when deployments change.