Skip to content

Cross-chain USDC bridge between Ethereum Sepolia and Solana Devnet using Wormhole SDK and Circle CCTP. Built with TypeScript.

Notifications You must be signed in to change notification settings

dariusjvc/evm-solana-usdc-bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŒ‰ EVM ↔ Solana USDC Bridge (via Wormhole + Circle)

A cross-chain application that transfers USDC tokens from an EVM-compatible chain (Sepolia) to Solana Devnet using Wormhole SDK and Circle’s CCTP.

Built for blockchain scalability, trust minimization, and practical multi-chain interoperability.


πŸš€ Features

  • πŸ”— Cross-chain transfer: Seamless transfer of stablecoins between Ethereum (Sepolia) and Solana.
  • πŸͺ™ Circle CCTP integration: Uses Circle's native USDC transfer mechanism for real-world bridging.
  • πŸ› οΈ EVM & Solana support: Uses Wormhole plugins for both ecosystems.
  • ⏱️ Attestation timeout handling: Waits for VAA proofs to ensure security before finalizing transfers.
  • πŸ“¦ Clean modular structure: Easy to extend or migrate to production/mainnet.

πŸ“ Project Structure

evm-solana-usdc-bridge/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.ts           # Main transfer logic
β”‚   β”œβ”€β”€ singer.ts         # Loads wallets/signers for EVM & Solana
β”‚   β”œβ”€β”€ config.ts         # Transfer params, chains, tokens, timeouts
β”‚   β”œβ”€β”€ utils.ts          # Utils used in the project
β”œβ”€β”€ .env                  # Store private keys securely
β”œβ”€β”€ tsconfig.json         # TypeScript configuration
β”œβ”€β”€ package.json          # Project dependencies and scripts

πŸ” Prerequisites

  1. Node.js β‰₯ 18
  2. Sepolia ETH and Solana Devnet airdrop
  3. Circle CCTP supported tokens (e.g., USDC)
  4. .env file with:
ETH_PRIVATE_KEY="your-evm-private-key"
SOL_PRIVATE_KEY="your-solana-private-key"

πŸ§ͺ Setup and Run

# Install dependencies
npm install

# Run transfer script
npx ts-node src/main.ts

Or using npm run

npm run start

βš™οΈ Customization

Edit src/config.ts to modify:

  • CHAINS.FROM / CHAINS.TO: e.g., 'Sepolia' β†’ 'Avalanche', 'Solana'
  • USDC.AMOUNT: amount in tokens (0.1 USDC)
  • TIMEOUTS.ATTESTATION: milliseconds to wait for VAA
  • CIRCLE.AUTOMATIC: toggle auto-complete of transfer

🧩 Technologies Used

  • @wormhole-foundation/sdk – Core SDK for chain abstraction
  • Circle CCTP – Cross-chain USDC attestation and minting
  • Solana Web3 & Ethers.js (under the hood via Wormhole)
  • TypeScript, Node.js, dotenv

🧠 Why This Project Matters

This project showcases:

  • Practical interoperability using real-world tooling (Circle & Wormhole)
  • Secure bridging with VAA-based attestation
  • Developer fluency across EVM and Solana ecosystems
  • Readiness for production-grade multi-chain architecture

🧠 Credits

Inspired by Wormhole examples and Circle developer docs.


πŸ“œ License

MIT – Free to use, fork, and adapt.

About

Cross-chain USDC bridge between Ethereum Sepolia and Solana Devnet using Wormhole SDK and Circle CCTP. Built with TypeScript.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published