CCIP v2.0.0 BurnToAddressMintTokenPool API Reference

BurnToAddressMintTokenPool is a TokenPool implementation that transfers tokens to a designated burn address on the source chain and mints tokens on the destination chain.

If you use this pool, tokens are not burned through the token contract. Instead, they are transferred to a specified address that serves as a burn address.

This approach does not rely on token-level burn functionality and instead depends on the properties of the chosen burn address to remove tokens from circulation.

Use this variant when your token does not support burn or burnFrom, and you need to remove tokens from circulation by sending them to a designated address.

This contract is not intended to be called directly by applications. It is used by CCIP infrastructure during token transfers.

Usage Boundary

You do not call this contract directly.

  • The Router and OnRamp/OffRamp contracts invoke this pool during cross-chain token transfers.
  • You choose this pool when configuring how a token is bridged across chains.
  • Use this pool only if your token does not support direct burn mechanisms.
  • Prefer BurnMintTokenPool or BurnFromMintTokenPool if your token supports burn or burnFrom.
  • You are responsible for selecting a burn address that correctly removes tokens from circulation.

Contract

pools/BurnToAddressMintTokenPool.sol

Import

import {BurnToAddressMintTokenPool} from "chainlink-ccip/pools/BurnToAddressMintTokenPool.sol";

If you have not installed the package:

npm install @chainlink/contracts-ccip@2.0.0

Inheritance

  • BurnMintTokenPoolAbstract
  • ITypeAndVersion

Constructor

constructor(
  IBurnMintERC20 token,
  uint8 localTokenDecimals,
  address advancedPoolHooks,
  address rmnProxy,
  address router,
  address burnAddress
) TokenPool(
  token,
  localTokenDecimals,
  advancedPoolHooks,
  rmnProxy,
  router
)
ParameterTypeDescription
tokenIBurnMintERC20Token being bridged.
localTokenDecimalsuint8Number of decimals used by the token on the local chain.
advancedPoolHooksaddressOptional hook contract for custom pool behavior.
rmnProxyaddressRMN proxy used for curse checks.
routeraddressAddress of the CCIP Router that interacts with this pool.
burnAddressaddressAddress that receives tokens and acts as the burn address.

External API

getBurnAddress

function getBurnAddress() public view returns (address burnAddress)

Returns the configured burn address.

Returns:

TypeDescription
addressAddress used as the burn sink.

typeAndVersion

function typeAndVersion() external pure virtual override returns (string memory)

Returns:

TypeDescription
string memoryContract type and version identifier.

Events

No new events declared.

For a cross-contract event index, see Events.

Errors

No new custom errors declared.

For a cross-contract error index, see Errors.

Internal Functions

_lockOrBurn

function _lockOrBurn(
  uint64 /* remoteChainSelector */,
  uint256 amount
) internal override

Transfers tokens from the sender to the configured burn address.

  • Tokens are transferred to the configured burn address instead of being burned by the token contract.

_releaseOrMint

Inherited from BurnMintTokenPoolAbstract.

Mints tokens to the receiver on the destination chain.

Security model

  • Tokens are only effectively burned if the configured burn address is irrecoverable.
  • If the burn address is externally controlled or recoverable, tokens can be reclaimed and are not permanently removed from circulation.
  • Only authorized CCIP components (OnRamp and OffRamp) can trigger token movements.

Notes

  • Tokens are transferred to the burn address rather than burned via the token contract.
  • The burn address is a critical configuration decision and cannot be changed without deploying a new pool.
  • You must choose a burn address that cannot access or recover the tokens (for example, a provably unspendable address).
  • Common burn addresses include 0x000000000000000000000000000000000000dEaD.
  • If your token supports direct burn(amount) or burnFrom, prefer BurnMintTokenPool or BurnFromMintTokenPool.

Get the latest Chainlink content straight to your inbox.