v0.2.9 Release - 19 May 2026
This release fixes the address encoding/decoding 20/32 bytes issue in ccipLocalSimulatorFork
Changelog
Dependencies
| Package | Version |
|---|---|
| @chainlink/contracts-ccip | 1.6.2 |
| @chainlink/contracts | 1.5.0 |
Fixed
CCIPLocalSimulatorFork.switchChainAndRouteMessagenow pairs the destination OffRamp with the source OnRamp by readinggetSourceChainConfig(v1.6+) andgetStaticConfig(pre-v1.6), and falls back to trying other OffRamps with the samesourceChainSelectorwhen execution fails or no deterministic match is found.CCIPLocalSimulatorFork.switchChainAndRouteMessagenow correctly decodesdestTokenAddressfor v1.6 token transfers. The 32-byteabi.encode(address)value was previously truncated via abytes20cast, yielding a garbage address and causing the destination OffRamp'sTokenAdminRegistry.getPoollookup to revert. Decoding now handles both 32-byte ABI-encoded and 20-byte packed forms, matching production OffRamp behavior, and is shared withreceiverdecoding via a single internal_decodeEVMAddresshelper.- For v1.6 token transfers,
sourcePoolAddressis now passed toInternal.Any2EVMTokenTransferasabi.encode(address)(32-byte word), matching production OnRamp output and destination pool validation. The simulator previously usedabi.encodePacked(address)(20 bytes), which caused compatible pools to revert withInvalidSourcePoolAddressduring fork testing.
Testing the release
To test this release install @chainlink-local using the following commands:
Foundry (git)
forge install smartcontractkit/chainlink-local@v0.2.9
and then set remappings to: @chainlink/local/=lib/chainlink-local/ in either remappings.txt or foundry.toml file
Hardhat (npm)
npm install @chainlink/local@v0.2.9
and then create the following contract and compile it:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {CCIPLocalSimulator} from "@chainlink/local/src/ccip/CCIPLocalSimulator.sol";Remix IDE
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {CCIPLocalSimulator} from "https://github.com/smartcontractkit/chainlink-local/blob/v0.2.9/src/ccip/CCIPLocalSimulator.sol";PRs included
- fix: remove the npm install -g step by @andrejrakic in #57
- Upgrade GitHub Actions to latest versions by @andrejrakic in #58
- Prepare repo for v0.2.9 release by @andrejrakic in #61
Full Changelog: v0.2.8...v0.2.9
