CCIP v2.0.0 Pool API Reference

Pool defines the canonical data structures used for token movement across CCIP.

These structs are used to:

  • represent token transfer intent on the source chain
  • carry token transfer data across chains
  • execute token release or minting on the destination chain

They form the interface between OnRamp, TokenPool implementations, and OffRamp execution.

This library provides reusable helper functions and is not deployed as a standalone application-facing contract.

Usage Boundary

You do not call this library directly.

  • OnRamp constructs LockOrBurn inputs when initiating token transfers.
  • TokenPool implementations process these inputs and produce outputs.
  • OffRamp consumes ReleaseOrMint inputs to complete token delivery.
  • You interact with these structs indirectly through CCIP contracts.

Contract

libraries/Pool.sol

Import

import {Pool} from "chainlink-ccip/libraries/Pool.sol";

Source Chain (Lock/Burn)

LockOrBurnInV1

Represents a token transfer request on the source chain.

FieldType
receiverbytes
remoteChainSelectoruint64
originalSenderaddress
amountuint256
localTokenaddress

LockOrBurnOutV1

Represents encoded token transfer data for cross-chain transmission.

FieldType
destTokenAddressbytes
destPoolDatabytes

Destination Chain (Release/Mint)

ReleaseOrMintInV1

Represents a token transfer request received on the destination chain.

FieldType
originalSenderbytes
remoteChainSelectoruint64
receiveraddress
sourceDenominatedAmountuint256
localTokenaddress
sourcePoolAddressbytes
sourcePoolDatabytes
offchainTokenDatabytes

ReleaseOrMintOutV1

Represents the result of token release or minting.

FieldType
destinationAmountuint256

Errors

No new custom errors declared.

Notes

  • Each transfer follows a single flow: lock/burn → transmit → release/mint.
  • Source and destination structs must be interpreted consistently across chains.
  • Amounts must be preserved across lock/burn and release/mint operations.
  • Fields encoded as bytes represent cross-chain addresses in chain-specific formats.
  • Incorrect struct data may cause token transfers to fail or result in mismatched execution.

Usage context

Used by OnRamp, TokenPool implementations, and OffRamp.

Get the latest Chainlink content straight to your inbox.