smartcontractkit / smartcontractkit/ccip-tools-ts
canton: released 1.13.0 still ships the broken CCIPReceiver package plumbing that main already fixes — please cut a release
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 17
- Forks
- 19
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 51
Description
Summary
The Canton receiver package plumbing that is already fixed on main is still broken in the latest released SDK (@chainlink/ccip-sdk@1.13.0 on npm, and 1.12.0 pinned by ccip-starter-kit-canton). Could you cut a release that includes the fix — or point at the planned release date?
What is broken in 1.13.0 (verified against the pristine npm tarball)
ccipPackagesdrops the receiver package.dist/canton/index.js:89-92buildsthis.ccipPackageswith onlyperPartyRouterandccipSender; theccipReceiverkey fromcantonConfig.packagesis never copied. Every ACS lookup that goes throughbuildCcipTemplates(this.ccipPackages)(dist/canton/explicit-disclosures/acs.js:167) therefore renders the receiver template as#undefined:CCIP.CCIPReceiver:CCIPReceiver.- Receiver create and lookup disagree on the package name. Creation/updates hardcode
'#ccip-receiver:CCIP.CCIPReceiver:CCIPReceiver'(dist/canton/index.js:943,:980) while the lookup usespackages.ccipReceiver(see 1). The lookup never finds what creation created, soensureReceiverForExecutecreates a freshCCIPReceiveron every execute — on our testnet participant we accumulated 38 receiver contracts before noticing. - Aggravated by the starter kit:
config/canton-config.example.jsonships"ccipReceiver": "ccip-receiver-v2", which guarantees the mismatch with the hardcoded#ccip-receivercreation path (filed separately on the starter kit repo).
On main this is already addressed — ccip-sdk/src/canton/index.ts now includes ccipReceiver in ccipPackages (line ~277) and the hardcoded template id is gone. The fix just never shipped to npm.
Minor residue on main: explicit-disclosures/acs.ts still carries a 'ccip-receiver' default while CantonChain defaults to 'ccip-receiver-v2' — harmless for CantonChain callers, but a trap for anyone calling the ACS helpers directly.
Environment
@chainlink/ccip-sdk1.13.0 (npm latest as of 2026-09-16); starter kit pins 1.12.0 with the same defect- Canton 3.5.16, Canton TestNet, self-hosted validator participant
- Worked around locally by patching
dist/canton/index.js(addccipReceivertoccipPackages, replace the two hardcoded template ids) — with that patch the full Canton → Ethereum Sepolia flow works end to end, message0x<REDACTED-KEY>, executed in Sepolia tx0x<REDACTED-KEY>.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing src/canton/index.ts and the related explicit-disclosures/acs.ts paths cited in the issue, then inspect the repository's package and release configuration. Confirm that the existing main-branch fix is included in the built npm tarball, and verify the published version no longer drops or hardcodes the receiver package template.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- node.js, typescript
- Domain
- release
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 64/100