Skip to content

Latest commit

 

History

History
243 lines (183 loc) · 15.3 KB

File metadata and controls

243 lines (183 loc) · 15.3 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[1.5.0] - 2026-04-22

  • SDK/CLI: Add sourceTokenAddress search filter to searchMessages and --source-token CLI option for filtering messages by source token
  • CLI: Clean JSON output — data on stdout, diagnostics on stderr, single JSON envelope per command
  • SDK/CLI: Add --no-interactive mode to disable all prompts for AI agents and automation, with auto-detection of non-TTY stdin
  • SDK: add Fast Confirmation Rule (FCR) / SAFE finality support to CCIP v2.0 (preview) lanes:
    • LaneFeatures.MIN_BLOCK_CONFIRMATIONS renamed to FINALITY_FAST; CUSTOM_BLOCK_CONFIRMATIONS_RATE_LIMITS renamed to FAST_RATE_LIMITS; new FINALITY_SAFE key added
    • GenericExtraArgsV3.blockConfirmations: number replaced with finality: 'finalized' | 'safe' | number
  • SDK: export encodeFinality, decodeFinalityAllowed(), and decodeFinalityRequested() for encoding/decoding the 4-byte finality field in v2.0 extraArgs

[1.4.0] - 2026-03-26

  • SDK: Add Chain.getTokenPrice({ router, token, destChainSelector }) to fetch on-chain USD token prices from FeeQuoter (v1.6+) or PriceRegistry (v1.2/v1.5) — implemented for EVM, Solana, and Aptos.
  • CLI: Show fee tokens prices in get-supported-tokens --fee-tokens output, enabled by default now (can be disabled with --no-fee-tokens, and shown alone with --only-fee-tokens)

[1.3.0] - 2026-03-19

  • SDK: Add EVMChain.getTotalFeesEstimate method, to provide a fee and tokens bps (v2.0) breakdown
  • CLI: add search messages command to query CCIP messages via API with filters (sender, receiver, chains, manual-exec) and interactive result inspector
  • SDK: Breaking: remove getMessagesForSender — use CCIPAPIClient.searchAllMessages({ sender }) instead

[1.2.0] - 2026-03-11

  • CLI: add shell completion support (ccip-cli completion) for bash and zsh
  • SDK: add CCIPAPIClient.searchMessages with filters and cursor-based pagination, searchAllMessages async generator for automatic pagination, and AbortSignal support on all API methods
  • SDK: Chain.estimateReceiveExecution can now take a messageId and try to fetch messages details from API
  • SDK: Chain.generateUnsignedExecute and execute automatically try to estimateReceiveExecution if supported by dest chain and no gasLimit override is provided
  • CLI: add --wallet hardhat:<name> and --wallet foundry:<name> keystore support for EVM

[1.1.0] - 2026-03-06

  • SDK: getFeeTokens now supports CCIP v2.0 lanes (via FeeQuoter, same as v1.6)
  • SDK: implemented CCIPAPIClient.getExecutionInput(messageId: string)
  • SDK: dest.execute and dest.generateUnsignedExecute can now execute directly from a messageId, without the need for an explicit source.getExecutionInput
  • SDK: Chain constructors context can receive a string URL for apiClient
  • CLI: using all the above, manual-exec now can receive a messageId as positional argument (besides txHash), and execute from CCIP-API's /execution-inputs without needing a source RPC
  • SDK: add TokenPool v2 support to getTokenPoolRemotes (customBlockConfirmations[Out|In]boundRateLimiterState) and getTokenPoolConfig (minBlockConfirmations)
  • CLI: add minBlockConfirmations and [ftf] rate limiter state info to get-supported-tokens command output
  • CLI: add send --extra/-x key=value param to pass arbitrary extraArgs to send messages

[1.0.0] - 2026-02-26 - Major refactoring stable

  • SDK: getOffchainTokenData now uses CCTPv2 API for USDC transfers; can be called from either source or dest
  • SDK: request.tx doesn't require all tx logs anymore; Log_ type renamed to ChainLog
  • SDK: Fix browser "Illegal invocation" error by binding globalThis.fetch in CCIPAPIClient constructor
  • CLI: allow passing --api=<url> (CCIP-API still can be disabled with --no-api or --api=false)

[0.97.0] - 2026-02-23 - Pre-release

  • SDK: v2.0 support:
    • new Chain.getExecutionInput method, which consolidates getMessagesInBatch, calculateManualExecProof and getOffchainTokenData
    • Breaking: rename generateUnsignedExecuteReport, executeReport to generateUnsignedExecute, execute
    • Breaking: generateUnsignedExecute, execute receives input: ExecutionInput instead of execReport
    • Breaking: rename Chain.getCommitReport to getValidations
    • Breaking: deprecate Chain.getCommitStoreForOffRamp: needed, available and used internally only in EVMChain; getVerifications (fka getCommitReport) now receives offRamp address instead of commitStore
  • SDK: Breaking: Reduce bundle size by eliminating cross-chain imports
    • Move DEFAULT_GAS_LIMIT from evm/const.ts to shared/constants.ts
    • Move BCS codecs and encoding utils to shared/bcs-codecs.ts (shared by Aptos/Sui)
    • Remove DEFAULT_APPROVE_GAS_LIMIT (unused)
    • Non-EVM chains no longer bundle EVM ABIs (~500KB savings per chain)
    • Sui no longer bundles Aptos code (~300KB savings)
  • API: make CCIPAPIClient.fromUrl memoized non-async
  • CLI: Support messageId from API in show command

[0.96.0] - 2026-02-10 - Pre-release

  • SDK: Breaking: Move allSupportedChains to @chainlink/ccip-sdk/all entry point (fixes tree-shaking in esbuild/Bun/Parcel)
  • CLI: Add kebab-case aliases for multi-word commands (manual-exec, get-supported-tokens, parse-bytes, parse-data)
  • CLI: Add --fee-tokens flag to getSupportedTokens command to list fee tokens instead of transferable tokens
  • SDK: Breaking: CCIPRequest now includes optional metadata?: APICCIPRequestMetadata field
    • API fields (status, receiptTransactionHash, deliveryTime, etc.) moved under metadata
    • Migration: Change request.status to request.metadata?.status
  • SDK: Breaking: Remove APICCIPRequest type - use CCIPRequest with metadata field instead
  • SDK: Improve JSDoc for RateLimiterState - clarify that null means rate limiting is disabled
  • SDK: Improve JSDoc for getTokenPoolRemotes and TokenPoolRemote - clarify Record keys are chain names
  • SDK: Add named types TokenPoolConfig and RegistryTokenConfig for clearer IDE hints
  • SDK: Rename getTokenPoolConfigs to getTokenPoolConfig for consistency (returns single config)
  • SDK: Add Chain.getTokenPoolRemote for fetching single remote config by chainSelector
  • SDK: Fix sleep() browser compatibility - use optional chaining for .unref() which is Node.js-only
  • SDK: Add TOKEN_REMOTE_NOT_CONFIGURED error code for missing TokenPool remote chain configurations
  • SDK: Fix EVM getTokenPoolRemotes to throw CCIPTokenPoolChainConfigNotFoundError when remote token is not configured
  • SDK: Fix Aptos getTokenPoolRemotes to throw CCIPTokenPoolChainConfigNotFoundError when remote chain config is missing
  • TON: Full send support

[0.95.0] - 2026-01-28 - Pre-release

  • SDK: Chain.getBalance() method for querying native and token balances (EVM, Solana, Aptos)
  • SDK: Solana resolveATA() utility for ATA derivation with automatic SPL Token vs Token-2022 detection
  • CLI: token command for balance queries
  • SDK: fix EVM estimate gas for token transfers with balance slot!=0 (e.g. USDC)
  • SDK: Add NetworkType enum ('MAINNET' | 'TESTNET') and networkType property to NetworkInfo, in place of isTestnet boolean
  • SDK: Selector generation scripts now validate network_type presence from upstream chain-selectors
  • CLI: Breaking: send, getSupportedTokens, and token commands now use named arguments instead of positional (e.g., send -s <source> -d <dest> -r <router>)
  • CLI: Breaking: -r alias removed from global --rpcs option (use --rpc instead); -r now used for --router in send command

[0.94.0] - 2026-01-14 - Pre-release

  • SDK: Browser compatibility - explicit buffer dependency and imports for cross-platform support
  • CI: Added publint and @arethetypeswrong/cli validation for package exports
  • ESLint: import/no-nodejs-modules rule prevents Node.js-only imports in SDK
  • Docs: Cross-Platform Portability guidelines in CONTRIBUTING.md
  • SDK: Populate default extraArgs for getFee, sendMessage methods, requiring minimal parameters to use these methods

[0.93.0] - 2025-12-31 - Pre-release

  • SDK: CCIPAPIClient and Chain.getLaneLatency() for querying lane delivery times via CCIP API
  • CLI: lane-latency <source> <dest> command; --no-api flag for decentralized mode
  • SDK: MessageStatus enum for message lifecycle tracking
  • CLI: show --wait displays status progression during message tracking
  • SDK: Rename fetch* to get* for message methods (getMessagesInTx, getMessageById, getMessagesForSender)
  • SDK: Viem adapter via @chainlink/ccip-sdk/viem - use fromViemClient() and viemWallet() for viem users
  • SDK: getCCIPExplorerUrl() and getCCIPExplorerLinks() for CCIP Explorer URL generation
  • CLI: send and show commands now display CCIP Explorer links for visual transaction tracking
  • SDK: Added sideEffects: false to package.json for improved tree-shaking support
  • SDK: Breaking: Rename fetch* to get* for message methods (getMessagesInTx, getMessageById, getMessagesForSender, getAllMessagesInBatch, getOffchainTokenData, getCommitReport, getExecutionReceipts)
  • SDK: Breaking: Convert methods with >2 arguments (besides opts/ctx) to single destructured object argument (getFee, generateUnsignedSendMessage, sendMessage, generateUnsignedExecuteReport, executeReport, getCommitReport, getExecutionReceipts, waitFinalized)
  • SDK: simplify getExecutionReceipts filters (accept messageId and sourceChainSelector, instead of whole request)
  • SDK: executeReport resolves to CCIPExecution, instead of generic ChainTransaction
  • SDK: rename getAllMessagesInBatch to getMessagesInBatch (for consistency with other method names)
  • SDK: migrate TONChain to TonClient (from TonClient4) and TON HTTP V2 endpoints (more common)
  • CLI: implement Ledger hardwallet support for TON

[0.92.0] - 2025-12-20 - Pre-release

  • SDK: Chain.getLogs can receive watch boolean or cancel promise, to enter continuous logs fetching
  • SDK: Chain.waitFinality method to receive a log and wait for its tx to finalize
  • SDK: Chain.isTxHash static method to typeguard chain-specific txHash string format
  • SDK: isSupportedTxHash function exported to check any supported chain
  • CLI: show --wait and send --wait waits for finality, commit and first execution of pending requests
  • CLI: RPC endpoint url racer now triggers chain-families on-demand
  • CLI: --rpcs/-r now can split CSV strings
  • CLI: if --wallet is omitted and --rpcs-file=['./.env] has a USER_KEY= or PRIVATE_KEY= variable, it will be used as wallet
  • SDK: CCIPMessage loses header; properties now are merged to message root (e.g. message.messageId)

[0.91.0] - 2025-12-08 - Pre-release

  • Chain.sendMessage now calls getFee by itself, if not provided; it also returns a CCIPRequest
  • Fix USDC/CCTP attestation fetching in Solana
  • CCIPRequest loses timestamp property, available in tx.timestamp instead
  • Rename Chain.listFeeTokens to getFeeTokens, fix for v1.5 lanes
  • Move fetchCCIPRequestsInTx function to Chain.fetchRequestsInTx method
  • Move fetchCCIPRequestById function to Chain.fetchRequestById method; it now can optionally receive OnRamp address to narrow search, required in non-EVM chains (which can't scan the all addresses at once); cli's show --id-from-source receives <address>@<network> onramp address format in these cases
  • Move fetchAllMessagesInBatch function to Chain.fetchAllMessagesInBatch method
  • getWallet static and cached methods are removed; wallet compatible signer instance should be passed directly as option to the read-write methods, sendMessage and executeReport
  • Chains now expose generateUnsignedSendMessage and generateUnsignedExecuteReport, which expose raw/unsigned tx data for sendMessage and executeReport respectively, in case one needs to sign and broadcast manually
  • All methods which logs now may receive a { logger } context object, to inject a logger other than console
  • Remove some more node-isms from SDK

[0.90.0] - 2025-11-28 - Pre-release

  • Major overhaul of the tool, split into ccip-sdk and ccip-cli packages
  • SDK now exposes Chain family specific classes, with initial full support to EVM, Solana and Aptos
  • NodeJS specific bits moved out of SDK and into the CLI, SDK now is environment agnostic
  • CLI implements Ledger support for all 3 chains
  • See each package's README for more details

[0.2.9] - 2025-08-20

  • aptos: improved some utilities for Aptos chain family (#50)
  • fix: manualExec --sender-queue for large queues (#51)

[0.2.8] - 2025-07-16

  • fix: aptos messages decoding format (#43)
  • --sender-queue: set tx' --gas-limit (if provided) and nonce (#44)

[0.2.7] - 2025-05-29

  • fix: decoding of very old v1.2 messages (#33)

[0.2.6] - 2025-04-29

  • regression: change source addresses for EVMv1.6 calculateManualExecProof (#31)

[0.2.5] - 2025-04-28

  • fix decoding of solana addresses in EVMv1.6 hasher (#30)

[0.2.4] - 2025-04-25

  • fix zero-padding of source addresses on calculateManualExecProof (#29)

[0.2.3] - 2025-04-24

  • fix an edge case for solana hasher (#28)

[0.2.2] - 2025-04-23

  • --wallet ledger:<n> supports an integer as wallet index on standard Ethereum derivation path (#24)
  • Fixes for Solana leafhasher (#27)

[0.2.1] - 2025-03-11

  • Fix manualExec on old v1.2 lanes or <1.5 TokenPools (legacy sourceTokenData) (#18)

[0.2.0] - 2025-03-04

  • Add getSupportedTokens command to discover and validate tokens that can be transferred between chains using CCIP (#11)
  • Add support to CCIP v1.6 EVM lanes (#14)
    • Add decodeMessage public function, to decode a CCIPMessage from anything (byte-arrays, JSON string, decoded objects)
    • Add origin (sender of transaction) field to pretty requests, commits and receipts output.
  • Add Ledger hardware wallet (--wallet ledger) support (#14)

[0.1.3] - 2024-12-10

  • Allow parseBytes command to parse EVMExtraArgs bytearrays, both standalone and in structs (#7)
  • Support Lombard attestation for LBTC transfers (#8)

[0.1.2] - 2024-11-25

  • Add public recursiveParseErrors function to lib, to return nested/inner ABI errors
  • Use it everywhere: parseBytes command, thrown exceptions, and prettyReceipt output of failed execs
  • Supports explicit --fee-token 0x00...00 for native fees (default if omitted)
  • Embeds and shows --version|-V in cli, with shortRev commit

[0.1.1] - 2024-11-08

  • Small improvements to inner wrap errors in parseBytes command
  • Disclaimer in README

[0.1.0] - 2024-10-31

Added

  • Initial release
  • Compatible with CCIP v1.2 - v1.5 lanes
  • Initial commands:
    • show (default): shows info about a CCIP message
    • manualExec: manually executes a CCIP message
    • send: sends a CCIP message through provided router
    • parseData: utility to parse known EVM errors, calldata and events data
    • lane: utility to query and show info and config about a lane
    • estimateGas: utility to estimate gasLimit for a message's CCIPReceiver callback
  • Run npx @chainlink/ccip-tools-ts --help to install with npm and see all options