Repository navigation
Releases
Releases · smartcontractkit/ccip-tools-ts
v1.17.0 - Stable
Highlights
- EVM: read multi-token pools with a
{ token }option; preflights catch paused or incomplete lanes - EVM: ERC-8056 (Scaled UI Amount) tokens:
uiMultiplier,toUIAmount/fromUIAmount; CLI shows UI amounts - Solana: 2.0 Routers serving 1.6 and 2.0 lanes side by side; new
lane --lane-version - CCIP 2.0:
getVerificationscomposes missing USDC/LBTC verifier data from issuer attestations - CLI:
send/show --waitpoll pending USDC/LBTC attestations (CCTP v2 too) - EVM: send preflight simulates source pool
lockOrBurn, catching hook, blocklist and curse reverts before signing - SDK: tokens without
decimals()get their decimals from their pool, or from the chain default - CCT-SDK (EVM): pool query ops,
simulateEVMTx, lockbox ownership,CrossChainPoolTokenand more deployable pool types - Canton:
CantonChainuses the dApp SDK provider; CCT-SDK registry pool ops - Sui: gRPC endpoint support, because public fullnodes no longer serve JSON-RPC
- Fixes:
show --no-apiexecutions on Arbitrum Nitro chains; faster Solana OffRamp discovery; HTTP 429 errors are retried ⚠️ Breaking:discoverOffRamptakes the lane, andcct/evmexports only the public ops
What's Changed
- Support Sui gRPC endpoints and improve fixtures rate limiting in SDK by @andrevmatos in #512
- feat(sdk): support tokens without the optional ERC-20 decimals() view via pool-declared and family-default decimals by @SyedAsadKazmi in #504
- Chore/deps by @andrevmatos in #515
- cct/canton: improve submission idempotency + ledger-effects responses by @stackman27 in #514
- feat(cct-sdk): Deploy BurnToAddressTokenPool 2.0.0 by @apedrob in #497
- feat(cct-sdk): Deploy BurnMintWithLockReleaseFlagTokenPool 2.0.0 by @apedrob in #499
- refactor(cct-sdk): Derive pool interfaces from ABI table by @apedrob in #500
- chore(cct-sdk): Vendor USDC pool ABIs by @apedrob in #505
- feat(cct-sdk): Read USDC pools in getTokenPoolState by @apedrob in #506
- fix(cct-sdk): Dedupe rate limit updates per lane and fastFinality by @apedrob in #507
- feat(cct-sdk): Support all pool types in token pool factory by @mervin-link in #510
- feat(cct-sdk): Add simulateEVMTx for CCT writes by @apedrob in #511
- feat(cct-sdk): Support set rate limit admin on v2.0.0 pools by @apedrob in #508
- feat(cct-sdk): Make sender optional on transfer + accept admin by @apedrob in #509
- feat(sdk): Token verifier fallback for CCIP v2.0 manual execution by @andrevmatos in #520
- feat(sdk)!: Select the OffRamp by lane version (Solana 2.0 Router serving 1.6 + 2.0 lanes) by @andrevmatos in #531
- chore: bump deps by @andrevmatos in #532
- fix(cli): poll pending attestations without delaying execution receipts by @andrevmatos in #533
- feat(cct-canton): registry pool ops, holdings-label default, and preapproval auto-wire by @stackman27 in #516
- feat(cct-sdk): Support CrossChainPoolToken 2.0.0 by @apedrob in #519
- fix(cct-canton): detach caller-owned transferTimeout in deploy prepare by @stackman27 in #534
- feat(sdk): Read multi-token pools through their PoolConfigManager by @andrevmatos in #521
- feat(cct-sdk): Add lockbox ownership transfer + accept ops by @apedrob in #522
- fix(cct-sdk): Add poolProgramAddress to Solana pool deploy ops by @apedrob in #523
- fix(sdk): treat Solana 2.0 lanes in testing as 1.6 in every method by @andrevmatos in #537
- Add fork test support for solana 2.0 token onboarding flow by @PabloMansanet in #525
- Remove canAcceptLiquidity for 2.0 Solana token pools by @PabloMansanet in #527
- docs(api-ref): add API v1 to v2 migration guide and retirement dates by @aelmanaa in #530
- feat(cct-sdk): Add token pool query ops on EVM by @apedrob in #513
- feat(sdk): Return ERC-8056 UI multipliers in getTokenInfo by @andrevmatos in #535
- Switch Canton Chain to use dApp SDK Provider by @friedemannf in #498
- chore: bump deps, v1.17 by @andrevmatos in #540
Full Changelog: v1.16.1...v1.17.0
v1.16.1 - Fixes
What's Changed
- fix(canton): remove canton url filter by @rodrigombsoares in #501
New Contributors
- @rodrigombsoares made their first contribution in #501
Full Changelog: v1.16.0...v1.16.1
v1.16.0 - Stable
Highlights
- CCT-SDK: full
SiloedLockReleaseTokenPoollifecycle:- deploy it at v2.0.0 and bind per-lane lockboxes:
configureSiloedLockboxes,getSiloedLockbox,getAllSiloedLockboxConfigs - manage v1.6.x silos:
provideSiloedLiquidity,withdrawSiloedLiquidity,setSiloRebalancer,updateSiloDesignations, with theisSiloed/getChainRebalancer/getAvailableTokensreads
- deploy it at v2.0.0 and bind per-lane lockboxes:
- CCT-SDK: operations resolve on-chain state themselves —
applyChainUpdatesandregisterAdmintake a single version-less params shape (pool/module version detected on-chain), AdvancedPoolHooks ops accept a pool's address and resolve its hooks, Solana ops resolve the pool program fromtokenAddress, and Canton ops derive pool type, owners and TokenAdminRegistry from the ledger - CCT-SDK: unified
prepareoperation lifecycle (validation + parsing in one hook), typed CCT errors importable from the SDK root, and pool-type registries exported — EVMDEPLOYABLE_TOKEN_POOL_TYPESand SolanaSOLANA_TOKEN_POOL_TYPESwith type guards, ready for runtime validation and things likez.enum(...) - Solana: CCIP 2.0
manualExec— 2.0 pool IDL decoding, faster-than-finality rate limits and per-chain finality surfaced in pool reads, allowlisted lanes consistently reported as unsupported (sogetFeeandsendMessagealways agree, and quotes no longer needsender), and separate buffering/execution stages so oversized manual executions can be staged unsigned (Ledger-friendly) - EVM: the nonce cache no longer replaces pending or in-flight transactions (TOB-CLCCT-12): safe rollback on inconclusive failures, and no re-prompt after a user rejection
- EVM:
getLogshonors RPC-stated block-range limits below 100 blocks (e.g. Alchemy's free plan), fixingccip-cli show --waiton such endpoints - EVM: admin-transfer ops (
beginDefaultAdminTransfer/accept/cancel) now also work on v1FactoryBurnMintERC20tokens - Canton: per-service HTTP protocol selection, with automatic h2 → HTTP/1.1 fallback
What's Changed
- solana: fix v2.0.0-dev offramp by @andrevmatos in #469
- feat(cct-sdk): auto-resolve version on applyChainUpdates by @aelmanaa in #467
- chore: bump deps, fix some npm audits by @andrevmatos in #478
- feat(cct-sdk)!: resolve registerAdmin module version on-chain by @andrevmatos in #471
- feat(cct-sdk): version-transparent EVM token ownership transfer by @andrevmatos in #472
- feat(cct-sdk): address AdvancedPoolHooks directly or through a pool by @andrevmatos in #473
- feat(cct-sdk)!: derive Solana pool program on-chain by @andrevmatos in #474
- feat(cct-sdk)!: derive Canton pool params, parse remote addresses by @andrevmatos in #475
- fix(cct-sdk): Reserve EVM nonces from pending state by @apedrob in #454
- Remove sender address requirement from getFee by @PabloMansanet in #481
- fix(sdk): honor RPC-stated getLogs limits below 100 blocks instead of… by @Genesis3800 in #484
- [Feat] Support manual exec with solana 2.0 as destination by @PabloMansanet in #477
- [feat] Solana 2.0 support for supported-tokens by @PabloMansanet in #487
- Support separate stages for buffering and execution by @PabloMansanet in #493
- feat(cct-sdk): Deploy SiloedLockReleaseTokenPool 2.0.0 by @apedrob in #486
- chore: bump deps by @andrevmatos in #494
- feat(cct-sdk): Add per-silo liquidity ops by @apedrob in #491
- chore(cct-sdk): Refactor EVM CCT lifecycle and operation exports by @mervin-link in #468
- fix(canton): per-service HTTP protocol selection with h2 -> HTTP/1.1 auto-fallback by @SyedAsadKazmi in #490
- chore(cct-sdk): Unify validation and parsing in prepare by @mervin-link in #479
- feat(cct-sdk): Export deployable token-pool types by @mervin-link in #483
- feat(cct-sdk): Add siloed lockbox ops by @apedrob in #492
- chore: bump v1.16 by @andrevmatos in #495
New Contributors
- @Genesis3800 made their first contribution in #484
Full Changelog: v1.15.0...v1.16.0
v1.15.0 - CCT SDK
Highlights
- CCT-SDK:
@chainlink/ccip-sdk/cct/{evm,solana,canton}entrypoints with whole new child classes for managing TokenPools!! - Solana: v2 (preview)
sendsupport
What's Changed
- feat: Support account resolution for Solana 2.0 by @PabloMansanet in #446
- Support Solana 2.0 sendMessage by @PabloMansanet in #450
- fix(docs): prevent container horizontal overflow below 992px by @aelmanaa in #462
- fix(cct-sdk): Support SiloedLockReleaseTokenPool v1.6.0 by @apedrob in #461
- feat(cct-sdk): CCT SDK integration branch by @apedrob in #304
- chore: bump v1.15.0, deps by @andrevmatos in #464
- fix lint by @andrevmatos in #465
- fix ci by @andrevmatos in #466
Full Changelog: v1.14.0...v1.15.0
v1.14.0 - Stable
Highlights
- Solana support for V1 txs (show, send, exec)
- SDK support for fetching v2 verifications directly from verifiers (passed/asked explicitly), bypassing indexer
- CLI has grpc support, SDK defaults to assuming a webGrpc proxy in front
- Aptos, Sui: support for querying and streaming failed executions
- Canton: Ledger hardwallet support on CLI, OIDC on config
- CLI: arbitrary chain-selectors injection/override support (for testing/private chains)
- Better bundler tree-shaking
What's Changed
- fix(sdk): stop flaking TON live scans on a mid-run degraded v3 index by @andrevmatos in #378
- tool: replace prettier with oxfmt by @andrevmatos in #381
- set ccip-platform as codeowners by @andrevmatos in #383
- ton: fix yet another internal unbound long-lived cache by @andrevmatos in #388
- fix(canton): resolve CCIPReceiver package + CCV raw address for manual-exec by @SyedAsadKazmi in #392
- CCIP-13438: detect Aptos/Sui failed execs by @andrevmatos in #398
- chore: bump v1.13.1 by @andrevmatos in #400
- feat(ccip-sdk): OIDC authentication for Canton Ledger API by @SyedAsadKazmi in #368
- fix(canton-auth): stop Okta browser opening twice per ccipSend by @SyedAsadKazmi in #408
- fix(sdk): leaks caused by AbortSignal and add Solana V1 tx support by @andrevmatos in #404
- feat(sdk): ctx overrides for secondary indexer endpoints by @andrevmatos in #418
- feat(canton): add Ledger signing support by @friedemannf in #409
- fix(cli): accept an empty keystore password as valid, not missing by @aelmanaa in #391
- fix(sdk): move lane fixtures off Sep-2026 2.0-migrated CCIP lanes by @andrevmatos in #440
- fix(sdk): Add Solana transaction split modes by @mervin-link in #417
- feat(cli): fetch CCV attestations directly from a verifier's aggregator by @aelmanaa in #390
- fix(sdk): wire Solana split modes; fix v1 resource limits by @andrevmatos in #441
- fix(canton): explicitly handle (Raw)InstanceAddresses by @friedemannf in #437
- chore: prepare v1.14 by @andrevmatos in #444
- feat: support local devnet and fork chains by @aelmanaa in #389
- fix(sdk): bundler-safe chain registration and Solana Borsh coders by @andrevmatos in #448
Full Changelog: v1.13.0...v1.14.0
v1.13.0 - Stable
Highlights
- Performance: Fixed several memory leaks and spikes, which hindered ccip-sdk usage on long-lived, continuously polling services (e.g. through
chain.getLogs) - Tooling: migrated to TypeScript 7 and Oxlint (from eslint)
- SDK:
chain.getLogsgain a new filter:since, which receives aChainLogfrom a previous call, and can then resume from it (i.e. fetching logs since this given cursor) more efficiently in many chains than the usualstartBlock/startTime
What's Changed
- fix: caches by @andrevmatos in #366
- feat: getLogs
sinceresume hint by @andrevmatos in #367 - test: classify networked suites and lock live-network runs by @andrevmatos in #372
- tooling: migrate to typescript v7, oxlint by @andrevmatos in #373
- follow-up: coverage comment noise by @andrevmatos in #374
- chore: bump lock by @andrevmatos in #375
Full Changelog: v1.12.0...v1.13.0
v1.12.0 - Stable
Highlights
- SDK: support a new
typeAndVersions?: (string | RegExp)[]filter option forgetLogs, emitting only logs from addresses matching type string or typeAndVersion regexp - EVM: gracefully handle RPCs limiting the number of
topicsfilters in getLogs - EVM: improve
USDCTokenPoolProxy 2.0.0multiplegetPools()support - Aptos: support multiple topics in
getLogs - Aptos: always format addresses as short hex (strip leading zeros)
- Solana: preview support for latest v2 contracts
- TON: improve logs masterchain blockNumber fetching
- Canton: support v2 apis
What's Changed
- Canton: pass message sender/receiver to EDS endpoints by @friedemannf in #355
- feat: multi-topic aptos sui, getLogs.typeAndVersions by @andrevmatos in #357
- fix(sui/aptos): canonical short-form Move addresses, format-safe byte codecs by @andrevmatos in #362
- Update Canton CCIP to v2 by @friedemannf in #363
- chore: prepare v1.12 release by @andrevmatos in #364
New Contributors
- @friedemannf made their first contribution in #355
Full Changelog: v1.11.1...v1.12.0
v1.11.1 - Fixes
Highlights
- Destination-denominated amounts in
checkExecuteare now compared consistently across chains. - Sui
SuiExtraArgsV1codec now correctly round-trips to/from Solana. - Aptos
typeAndVersionnow accepts a bare package address.
What's Changed
v1.11.0 - Stable
Highlights
- SDK:
sendMessageandexecutemethods now acceptopts.txGasLimit, skips estimation - CLI:
sendandmanual-exec --tx-gas-limitoption to force gas limit for txs - SDK/CLI: add
qfree-text filter tosearchMessagesand-qtosearch messages; matches token and pool addresses, tx hashes, messageId, sender and receiver - SDK:
searchAllMessagesacceptsoptions.cursorto resume from a previous page - CLI:
search messages --cursorresumes an earlier run; when--limitcaps the results, the next cursor is printed to stderr - SDK/CLI:
CCIPAPIClient.getLaneLatencyacceptsoptions.sourceTokenAddress, exposed aslane-latency --source-token - SDK: Breaking: lane latency
INSUFFICIENT_DATAnow throwsCCIPLaneLatencyInsufficientDataErrorinstead ofCCIPHttpError - SDK:
estimateReceiveExecutionnow preflights the whole delivery pre-send: requested finality via the destination OffRamp'sgetCCVsForMessage, OffRamp lane gates, inbound rate limits, and, for token transfers, each destination pool'sreleaseOrMint- catches unregistered tokens, mis-wired source pools, missing mint/burn authority, RMN curses and insufficient liquidity, which previously only surfaced after the message stranded on the destination
- source pools are simulated too, so the check consumes the same post-fee amount and
destPoolDatathe OnRamp would emit - new
simulateReleaseOrMint,simulateLockOrBurn,classifyPoolRevert,isTransientReleaseOrMintRevert, and errorsCCIPDestExecutionRevertError,CCIPDestSimulationUnavailableError,CCIPSourcePoolRevertError
- CLI:
sendwarns and continues when the preflight is inconclusive (destination RPC failure, attestation-consuming pool) instead of failing;--estimate-gas-limit/--only-estimatestill make it fatal - CLI:
send --only-ccvsprints the destination-required CCV set (requiredCCVs,optionalCCVs,optionalThreshold) and exits, without sending - SDK:
getRequiredCCVsexported to read that set programmatically, plusencodeMessageV1/encodeTokenTransferV1for the message encoding it uses - EVM:
getOffRampConfignow also returnsrmn, when the OffRamp's RMNProxy is set
What's Changed
- Show TON and Canton chain families in Multi-Chain Support by @SyedAsadKazmi in #299
- Misc by @andrevmatos in #308
- Misc by @andrevmatos in #314
- sui: fix, remove graphql by @andrevmatos in #320
- feat(evm): pre-send CCV/finality preflight via getCCVsForMessage by @aelmanaa in #288
- fix(docs): hamburger menu layered behind content on small screens by @SyedAsadKazmi in #326
- feat(sdk): add pre-send destination-liquidity preflight that mandatorily simulates the destination pool's releaseOrMint for token transfers by @aelmanaa in #301
- Misc by @andrevmatos in #325
- fix(sdk): fix dead RMN zero-address guard in getOffRampConfig and haden getARM() result by @aelmanaa in #327
- fix(sdk): normalize finality via encodeFinality before CCTP fast/standard tier comparison by @aelmanaa in #330
- docs: explain JSON integer precision loss in --format=json and how to read it correctly by @aelmanaa in #331
- Ton, Sui<->Solana, Solana v2 fixes by @andrevmatos in #338
- feat(api): add q search filter, cursor resume, and token-specific lane latency by @aelmanaa in #343
Full Changelog: v1.10.3...v1.11.0
v1.10.3 - Fixes
What's Changed
- Enable manual exec by message ID (v2 execution inputs + CCV fallback by @SyedAsadKazmi in #292
- chore: bump v1.10.3, selectors, deps by @andrevmatos in #295
Full Changelog: v1.10.2...v1.10.3