CCIP starter kit examples map

The CCIP starter kits (Foundry and Hardhat 3) teach CCIP 2.0 through examples Example01-Example10 plus two legacy examples, each with a chapter in the kit's own book and a test that runs against Chainlink Local. This page maps every example to what it teaches, its kit book chapter, and the docs.chain.link page that covers the same topic, so you can find where each feature is documented.

The kits pin Chainlink Local v0.3.1, @chainlink/contracts-ccip 2.0.0 and solc 0.8.26 with evm_version = cancun. Examples 01-10 use Ethereum Sepolia → Polygon Amoy as their primary CCIP 2.0 lane.

Local mode examples (Example01-Example05)

These tests run against the no-fork CCIPLocalSimulator: no RPC URLs needed, messages delivered synchronously inside ccipSend, with the CCIP 2.0 OnRamp and OffRamp message rules applied. Read CCIP 2.0 behavior in local mode for what is enforced.

ExampleWhat it teachesChainlink Local guideRelated CCIP docs
01 - Token Transfer + Fast TransfersToken-only transfer to an EOA with ExtraArgsV3 and non-zero block confirmationsFoundry · HardhatTransfer tokens from a contract
02 - Hello World to BasicMessageReceiverWithCCVsData-only message to a receiver with CCV config; the receiver's minBlockDepth gates Fast TransfersFoundry · HardhatSend arbitrary data
03 - Programmable Token Transfer (Fast Transfers)Data + tokens in one message to a contract receiver, with the receiver finality gateKit book chapterProgrammable token transfers
04 - Programmable Token Transfer (sender contract)Same transfer through a BasicMessageSender contract with default finalityKit book chapterProgrammable token transfers
05 - ExtraArgsV3 no-execution tagThe NO_EXECUTION_ADDRESS executor for the manual execution pathKit book chapterManual execution

Local mode does not model executors or manual execution: NO_EXECUTION_ADDRESS messages are executed immediately, so Example 05's test only verifies what the script sends. Whether the message stays pending until manually executed can only be observed on a real lane or a fork.

Fork mode examples (Example06-Example10)

These tests run against pinned forks of Ethereum Sepolia and Polygon Amoy through CCIPLocalSimulatorFork (Foundry) or the Hardhat 3 JavaScript fork helper. They need archive-capable RPC URLs and, in Foundry, FOUNDRY_PROFILE=fork. Read CCIP 2.0 behavior in fork mode for what is simulated.

ExampleWhat it teachesChainlink Local guideRelated CCIP docs
06 - CCT Burn and MintCrossChainToken + BurnMint pool deployment, TokenAdminRegistry registration, lane linking, pool finality configCCT burn and mint tutorial · fork guideRegister a Burn and Mint token from an EOA
07 - CCT Lock and ReleaseCrossChainToken + ERC20LockBox + LockRelease pool, destination lock box liquidityCCT lock and release tutorialRegister a Lock and Mint token from an EOA
08 - CCT Burn and Mint with AdvancedPoolHooksAttaching a pool hook with a sender allowlist and CCV thresholdKit book chapterConfigure a sender allowlist
09 - Pool-based CCVs on AdvancedPoolHooksPool-required CCVs consulted outbound by the OnRamp and verified inbound by the OffRamp; threshold CCVsPool-based CCVs tutorialCCV starter kit
10 - Policy engine on AdvancedPoolHooksAn ACE policy engine attached to the hook, capping transfer amountsKit book chapterEnforce ACE policies

Pool-required CCVs (Example 09) are the one CCIP 2.0 feature local mode cannot exercise: local mode has no token pools, so pool-required CCVs are not enforced there. Only the fork tests run them against the real OnRamp and OffRamp.

Legacy examples

ExampleWhat it teachesRelated CCIP docs
Legacy 01 - ExtraArgsV1 token transferThe v1.x EVMExtraArgsV1 format on an older laneUsing extraArgs
Legacy 02 - ExtraArgsV2 token transferThe GenericExtraArgsV2 format; allowOutOfOrderExecution is deprecated in CCIP 2.0Using extraArgs

Kit books and tools

Each kit ships an mdBook with one chapter per example, including the exact script and task commands for live-testnet runs:

The books also cover the CCIP API, the CCIP SDK (ccip-send, ccip-track) and the CCIP CLI, which are not Chainlink Local features.

Get the latest Chainlink content straight to your inbox.