CCIP v2.0.0 IPoolV1 API Reference
IPoolV1 defines the interface for CCIP V1-compatible token pools.
This interface exists for compatibility with CCIP V1 pool integrations and call flows.
If you implement this interface, you define how tokens are locked, burned, released, or minted during cross-chain transfers.
This interface represents the token movement surface used by CCIP routing components.
Most applications do not interact with this interface directly. It is implemented by pool contracts used within CCIP infrastructure.
Usage Boundary
You typically do not use this interface directly.
- CCIP pools implement this interface to define token transfer behavior.
- OnRamp and OffRamp components call these functions during cross-chain execution.
- You implement this interface only if you are building a custom token pool.
- You are responsible for validation, authorization, and correct token handling.
Contract
interfaces/IPool.sol
Import
import {IPoolV1} from "chainlink-ccip/interfaces/IPool.sol";
If you have not installed the package:
npm install @chainlink/contracts-ccip@2.0.0
Inheritance
IERC165
External API
lockOrBurn
function lockOrBurn(
Pool.LockOrBurnInV1 calldata lockOrBurnIn
) external returns (Pool.LockOrBurnOutV1 memory lockOrBurnOut)
Locks or burns tokens on the source chain as part of a cross-chain transfer.
| Parameter | Type | Description |
|---|---|---|
lockOrBurnIn | Pool.LockOrBurnInV1 calldata | Input describing the token transfer and operation. |
Returns:
| Type | Description |
|---|---|
Pool.LockOrBurnOutV1 memory | Output containing the data needed for destination-chain token handling. |
releaseOrMint
function releaseOrMint(
Pool.ReleaseOrMintInV1 calldata releaseOrMintIn
) external returns (Pool.ReleaseOrMintOutV1 memory)
Releases or mints tokens on the destination chain.
| Parameter | Type | Description |
|---|---|---|
releaseOrMintIn | Pool.ReleaseOrMintInV1 calldata | Input describing the release or mint operation. |
Returns:
| Type | Description |
|---|---|
Pool.ReleaseOrMintOutV1 memory | Result of the token release or mint. |
isSupportedChain
function isSupportedChain(uint64 remoteChainSelector) external view returns (bool)
Checks whether the pool supports a given remote chain.
| Parameter | Type | Description |
|---|---|---|
remoteChainSelector | uint64 | Identifier of the remote chain. |
Returns:
| Type | Description |
|---|---|
bool | True if the chain is supported. |
isSupportedToken
function isSupportedToken(address token) external view returns (bool)
Checks whether the pool supports a given token.
| Parameter | Type | Description |
|---|---|---|
token | address | Token address to check. |
Returns:
| Type | Description |
|---|---|
bool | True if the token is supported. |
Notes
- This interface does not enforce validation or authorization logic.
- Implementations define how tokens are locked, burned, released, or minted.
- Implementations must ensure only authorized CCIP components can trigger token movements.
- Incorrect implementation can result in loss of funds or inconsistent cross-chain state.