CCIP v2.0.0 Token Pools
Token pools are the onchain contracts that custody, burn, mint, and/or route tokens as part of CCIP transfers. Your choice of pool determines the token custody model, required token permissions, and operational assumptions.
Choose a pool model
Lock / Release
Use this model when tokens are bridged by escrowing liquidity on the source chain and releasing escrowed liquidity on the destination chain.
Pick this when:
- You cannot mint/burn the token.
- You want a custody-based bridge model with explicit pool liquidity.
Start here:
- LockReleaseTokenPool: Standard lock-and-release pool for most ERC20 tokens.
- SiloedLockReleaseTokenPool: Lock-and-release with additional isolation constraints (use when you need stricter separation semantics).
Related:
- ERC20LockBox: Helper contract used in some lock/release setups.
Links:
Burn / Mint
Use this model when the token supports controlled supply changes and your pool can be granted burner and minter permissions.
Pick this when:
- The token implements a burn/mint interface compatible with the pool variant.
- You want a model that does not require destination-side liquidity escrow.
Start here:
- BurnMintTokenPool: Standard burn-on-source and mint-on-destination pool.
- If you need a specific burn signature or mint target behavior, choose one of the variants below.
Variants (choose based on token interface and desired behavior):
- BurnFromMintTokenPool
- BurnWithFromMintTokenPool
- BurnToAddressMintTokenPool
- BurnMintWithLockReleaseFlagTokenPool
Reference base:
- BurnMintTokenPoolAbstract: Abstract base that implements shared mint-side logic and optional behaviors for burn/mint pools.
Links:
- BurnMintTokenPool
- BurnMintTokenPoolAbstract
- BurnFromMintTokenPool
- BurnWithFromMintTokenPool
- BurnToAddressMintTokenPool
- BurnMintWithLockReleaseFlagTokenPool
Operational notes:
- You must plan role management for mint/burn permissions (grant, rotate, revoke).
- Failures in mint/burn permissions manifest as execution failures on the destination chain.
USDC (CCTP-backed)
Use these pools when bridging USDC via Circle’s CCTP message flow (as wired by CCIP).
Pick this when:
- You are bridging USDC and want CCTP semantics.
- You need the CCIP-managed pool implementations for USDC.
Start here:
- USDCTokenPoolProxy: Proxy pool for USDC integrations.
- CCTPThroughCCVTokenPool: Token pool that routes through CCV verification for CCTP-based transfers.
- CCTPMessageTransmitterProxy: Proxy used to interface with the CCTP MessageTransmitter in supported setups.
- SiloedUSDCTokenPool: USDC pool variant with additional isolation constraints.
Links:
Specialized
Use these pools only when you specifically need their underlying integration model.
Links:
Base contract reference
TokenPool is the shared base implementation used by multiple pool types. Most builders will use a concrete pool above rather than deploying TokenPool directly.
Link: