Skip to content

feat: add CCIP helper#51

Merged
0xTimepunk merged 7 commits into
mainfrom
feat/ccip-helper
May 8, 2026
Merged

feat: add CCIP helper#51
0xTimepunk merged 7 commits into
mainfrom
feat/ccip-helper

Conversation

@0xTimepunk
Copy link
Copy Markdown
Collaborator

Adds a Foundry test helper for Chainlink CCIP that simulates cross-chain message and token delivery across forked mainnets, mirroring the HyperlaneHelper / AcrossV3Helper pattern. The helper detects both 1.5 CCIPSendRequested and 1.6 CCIPMessageSent events, resolves the destination OffRamp via Router.getOffRamps() (newest-first), reads the destination ERC-20 from the source emission, credits it via deal(), and pranks as the OffRamp to call Router.routeMessage so ccipReceive runs under realistic onlyOffRamp semantics. Tests run against real ETH↔ARB forks and cover data-only, funds-only, funds + data, multi-destination, fee estimates, and log filtering.

0xTimepunk added 3 commits May 5, 2026 19:45
Adds a Foundry test helper for Chainlink CCIP that simulates cross-chain
message and token delivery across forked mainnets, mirroring the
HyperlaneHelper / AcrossV3Helper pattern. Detects both 1.5
CCIPSendRequested and 1.6 CCIPMessageSent events, resolves the
destination OffRamp via Router.getOffRamps(), credits dest tokens via
deal(), and pranks as the OffRamp to call routeMessage so ccipReceive
runs under realistic onlyOffRamp semantics. Tests cover data-only,
funds-only, funds + data, multi-destination, and fee estimates against
real ETH<->ARB forks.
Mirrors the src/across pattern: only the structs and interfaces the
helper actually uses are kept under src/ccip/interfaces/ (Client,
Internal, IRouter, IRouterClient, IAny2EVMMessageReceiver). Drops the
lib/chainlink-ccip submodule and the @chainlink-ccip/ remapping so the
helper is self-contained, the repo clones faster, and CCIP support
follows the same conventions as every other helper.
Adds a Foundry test helper for Aave Delivery Infrastructure that
composes pigeon's existing CCIP, LayerZero V2, and Hyperlane helpers
plus a new ArbitrumNativeHelper primitive. Two entry points cover the
shipping a.DI lanes: helpEthToArb relays through the Arbitrum native
inbox (decoding the packed retryable, pranking the Inbox-aliased L1
sender on L2), and helpMultiBridge relays through any subset of
CCIP/LZ V2/Hyperlane on a multi-bridge consensus lane. The
ArbitrumNativeHelper is a standalone primitive reusable for any L1
contract that wraps Inbox.createRetryableTicket. Funding the CCC is
the test author's responsibility; the helper does not fund. Tests run
against real Eth+Arb forks with the Aave Labs forked deployment.
@0xTimepunk 0xTimepunk mentioned this pull request May 6, 2026
Comment thread src/ccip/CcipHelper.sol Outdated
Comment thread src/ccip/CcipHelper.sol
Comment thread src/ccip/CcipHelper.sol
@0xTimepunk 0xTimepunk merged commit dde8c8a into main May 8, 2026
2 checks passed
@0xTimepunk 0xTimepunk deleted the feat/ccip-helper branch May 8, 2026 14:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants