Skip to main content
Cross-Chain Interoperability Protocol by Chainlink. Cross-chain messaging with DON (Decentralized Oracle Network) security and token transfers.

Notes

  • Uses CCIP chain selectors (uint64), NOT EVM chain IDs. Each supported chain has a unique selector
  • Fees can be paid in native token (ETH) or LINK token
  • Use getFee() to estimate costs before sending
  • Supports both message-only and message+token transfers in a single call
  • DON-based security with Chainlink oracle network — no external validators needed
  • Finality: typically 5-20 minutes depending on source chain finality
  • Rate limits apply per lane (source-destination pair)
  • On Arc (5042) a native-paid fee is USDC at 18 decimals, from the same balance as the USDC ERC-20 0x3600…0000. The router’s getWrappedNative() is 0x8DFa585699CB46ca2a5fA649700f09839B4b8743 (CCIP_USDC, a WETH9-style wrapper over native USDC), CCIP’s own fee token rather than a canonical wrapped native

Its names in a program

On Ethereum, ChainlinkCcip is a namespace: its contracts need no import.

Deployments

ABI

CCIPRouterABI

import CCIPRouterABI from "./protocols/chainlink-ccip/CCIPRouterABI.json"; Speaks for: router.
  • ccipSend(uint64 destinationChainSelector, (bytes receiver, bytes data, (address token, uint256 amount)[] tokenAmounts, address feeToken, bytes extraArgs) message) payable returns (bytes32 messageId)
  • getFee(uint64 destinationChainSelector, (bytes receiver, bytes data, (address token, uint256 amount)[] tokenAmounts, address feeToken, bytes extraArgs) message) view returns (uint256 fee)
  • isChainSupported(uint64 chainSelector) view returns (bool)

Next steps