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’sgetWrappedNative()is0x8DFa585699CB46ca2a5fA649700f09839B4b8743(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
- Protocols: the other protocols, by what they do.
- Protocols and tokens: calling a contract by its namespace, or through its ABI.
- Glossary: the words these pages use, in plain terms.
