Skip to main content

Simple Cross-Chain Token Transfers Powered by CCIP

Project description

ccip-terminal Documentation

ccip-terminal is a Python package and CLI for managing cross-chain token transfers using Chainlink CCIP.

The package can be considered a self-custodial bridge; it supports batch transfers, scheduled jobs, CCIP status monitoring, and address book utilities.

For now the package only supports USDC; other currencies will be added later.

This package supports testnet CCIP as well.

Installation

# Install via uv
pip install uv  # Only if not already installed
uv pip install ccip_terminal[all] # For both core and scheduler packages

# By name
uv pip install ccip-terminal # Base library
uv pip install ccip-terminal[scheduler]
uv pip install ccip-terminal[all] #Both base and scheduler 

CLI Usage

uv run python cli.py [COMMAND] [OPTIONS]

Commands

transfer

Send a USDC transfer via Chainlink CCIP.

Options

Option Description
--to Destination wallet address
--dest Destination chain
--amount Amount to send
--source (optional) Source chain (default: ethereum)
--batch-file (optional) Path to batch JSON or CSV file
--account-index (optional) Account index to use
--wait-status (optional) Wait for CCIP Tx to Finalize
--notify-email (optional) Email address to notify
--estimate (optional) A Fee Estimate Value

Examples

Single Transfer:

python cli.py transfer --to 0xabc... --dest arbitrum --amount 10

Batch Transfer:

python cli.py transfer --batch-file ./transfers/batch.json

ccip-status

Check the status of a CCIP message.

Options

Option Description
--message-id CCIP message ID (with 0x)
--dest-chain Destination chain
--wait (optional) Wait for confirmation
--timeout (optional) Max wait time in seconds
--interval (optional) Polling interval in seconds

Example

python cli.py ccip-status --message-id 0xabc... --dest-chain optimism

schedule-transfer

Schedule a recurring transfer using cron.

Options

Option Description
--to Destination wallet address
--amount Amount to send
--dest Destination chain
--source (optional) Source chain
--account-index (optional) Account index
--cron Cron expression

Example

python cli.py schedule-transfer --to 0xabc... --amount 5 --dest optimism --cron "0 9 * * *"

address

Manage a local address book.

Subcommands

  • add → Save a new address
  • list → View saved addresses
  • remove → Delete an address by name

Examples

python cli.py address add --name Alice --address 0xabc...
python cli.py address list
python cli.py address remove --name Alice

Project Structure

ccip_terminal/
├── cli.py
├── ccip_terminal/
│   ├── core.py
│   ├── ccip.py
│   ├── logger.py
│   ├── accounts.py
│   ├── env.py
│   └── ...
├── scheduler/
│   └── ...
├── address_book.json
├── README.md

Environment Variables

Create a .env file and include:

PRIVATE_KEYS=
COINGECKO_API_KEY =
ALCHEMY_API_KEY =
INFURA_API_KEY =
NOTIFY_EMAIL =
ETHERSCAN_API_KEY =
SMTP_SERVER=
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
NETWORK_TYPE=

INFURA_API_KEY is the only required variable, but ETHERSCAN_API_KEY is also reccomended for accurate gas estimation.

NETWORK_TYPE environment variable expects either "testnet" or "mainnet", and defaults to "mainnet"

License

MIT License

Contact Info

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccip_terminal-0.1.1.tar.gz (26.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ccip_terminal-0.1.1-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file ccip_terminal-0.1.1.tar.gz.

File metadata

  • Download URL: ccip_terminal-0.1.1.tar.gz
  • Upload date:
  • Size: 26.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for ccip_terminal-0.1.1.tar.gz
Algorithm Hash digest
SHA256 015530371e38974e256f7e38d58e69bf0232cc9c06704e4e4377a7141f584a9d
MD5 9439ec55c9444b012575610045a65274
BLAKE2b-256 70be4e9971cadb53859cdcf659d7f6a59bbccfa1c6171d9424bcb07e3936dba5

See more details on using hashes here.

File details

Details for the file ccip_terminal-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: ccip_terminal-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for ccip_terminal-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 13ec45f36991249486f066fe4070ac5d3e2821227fd34aebfe759910192e7d1b
MD5 12e8d6b56ec4e223a6e788cbee10b8c7
BLAKE2b-256 f1535d432797cf81c32f736ce4f7b27210a6b1f83567c178579f6ab2048a75f6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page