Skip to content

Latest commit

 

History

History
134 lines (103 loc) · 5.97 KB

File metadata and controls

134 lines (103 loc) · 5.97 KB
id ccip-tools-overview
title CCIP Tools
sidebar_label CCIP Tools Overview
sidebar_position 0
edit_url https://github.com/smartcontractkit/ccip-tools-ts/edit/main/docs/index.md

CCIP Tools

TypeScript SDK and CLI for Chainlink CCIP (Cross-Chain Interoperability Protocol).

:::important This tool is provided under an MIT license and is for convenience and illustration purposes only. :::

What You Can Do

Task Tool Example
Track message status CLI ccip-cli show 0xTxHash
Send cross-chain message SDK/CLI Programmatic or command-line
Manually execute stuck message CLI ccip-cli manual-exec 0xTxHashOrMessageId
Check supported tokens CLI ccip-cli get-supported-tokens -n <network> -a <address>
Query lane latency CLI/SDK ccip-cli lane-latency <source> <dest>
Integrate CCIP in your dApp SDK Import and use in your code

Quick Start

Install

# CLI (global install)
npm install -g @chainlink/ccip-cli

# SDK (project dependency)
npm install @chainlink/ccip-sdk

Verify Installation

Track an existing CCIP message to verify everything works:

# Track a message on Sepolia → Arbitrum Sepolia
ccip-cli show 0x0e0e39d96754b8a35a07b233e79e20807af3045e77f183ee6a23e6d628396273 \
  --rpc https://ethereum-sepolia-rpc.publicnode.com \
  --rpc https://arbitrum-sepolia-rpc.publicnode.com

You should see message details, commit status, and execution state.

Your First Message (SDK)

import { EVMChain, networkInfo } from '@chainlink/ccip-sdk'

// 1. Connect to source chain
const source = await EVMChain.fromUrl('https://ethereum-sepolia-rpc.publicnode.com')

// 2. Define your message
const router = '0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59' // Sepolia Router
const dest = networkInfo('ethereum-testnet-sepolia-arbitrum-1').chainSelector
const message = {
  receiver: '0xYourReceiverAddress',
  data: '0x48656c6c6f', // "Hello" in hex
  extraArgs: { gasLimit: 200_000n }, // Gas for receiver's ccipReceive callback
}

// 3. Get the fee
const fee = await source.getFee({ router, destChainSelector: dest, message })
console.log('Fee:', fee.toString())

// 4. Send (requires wallet - see SDK docs)
// const request = await source.sendMessage({ router, destChainSelector: dest, message: { ...message, fee }, wallet })

Architecture

┌─────────────────────────────────────────────────────────────────────┐
│  ccip-tools-ts                                                      │
│                                                                     │
│  ┌──────────────────────────┐        ┌──────────────────────────┐  │
│  │                          │        │                          │  │
│  │   @chainlink/ccip-sdk    │◀───────│   @chainlink/ccip-cli    │  │
│  │                          │        │                          │  │
│  │  • Chain abstraction     │        │  • show, send, manual-exec│ │
│  │  • Message tracking      │        │  • parse, get-supported-tokens│
│  │  • Fee estimation        │        │  • token, lane-latency   │  │
│  │  • Transaction building  │        │  • RPC & wallet mgmt     │  │
│  │  • API client            │        │  • Output formatting     │  │
│  │                          │        │                          │  │
│  └──────────────────────────┘        └──────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────┘

SDK - Library for programmatic integration. Supports multiple chain families.

CLI - Command-line tool that uses the SDK. Great for debugging, testing, and scripting.

Supported Chains

Chain Family Networks Library Status
EVM Ethereum, Arbitrum, Optimism, Polygon, Avalanche, Base, etc. ethers.js v6 or viem Supported
Solana Mainnet, Devnet solana-web3.js Supported
Aptos Mainnet, Testnet aptos-ts-sdk Supported
Sui Mainnet, Testnet @mysten/sui Partial (manual exec)
TON Mainnet, Testnet @ton/ton Partial (no token pool/registry queries)
Canton LocalNet, DevNet, TestNet, MainNet Canton Ledger JSON API Partial (send + manual exec; requires config file)

Requirements

  • Node.js v20+ (v24+ recommended for development and running tests)
  • npm for package management
  • RPC endpoints for the networks you want to interact with

Documentation

Guide Description
SDK Guide Integrate CCIP in your TypeScript application
CLI Reference Command-line usage and examples
Contributing Development setup and guidelines
Adding New Chain Implement support for a new blockchain

Resources