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.3.tar.gz (31.2 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.3-py3-none-any.whl (34.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ccip_terminal-0.1.3.tar.gz
  • Upload date:
  • Size: 31.2 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.3.tar.gz
Algorithm Hash digest
SHA256 861907de84f937e406b8d5bc0aa2c7dc9e5369ab69abf3125b3fc06391329f9b
MD5 c0bae8435d8c11c0f90fe0b9369199b8
BLAKE2b-256 f7b2bb68ff29a70e2aaa81131fba5f8ebb8d4868c39a813a59b6fce9a62a9521

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ccip_terminal-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 34.3 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 424e14caca7cd5e2ed47897997adaa4c7d5a021e7769b1a6937e5bac403bd667
MD5 ccda52fe40dbcddaf15f405a46a35fc9
BLAKE2b-256 e6590d1b08b360b0789b025be0046a7694e15cad90f3064c6795d038a9c4a361

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