Overview
Across Protocol extends its cross-chain bridging capabilities to Solana through a suite of Solana Virtual Machine (SVM) programs. These programs enable fast, secure token transfers between Solana and other blockchain networks, leveraging Circle’s Cross-Chain Transfer Protocol (CCTP) for message and token bridging.Architecture
The Solana integration follows Across’s hub-and-spoke model:- HubPool (Ethereum L1) - Central contract managing liquidity and coordinating cross-chain operations
- SVM Spoke (Solana) - Main spoke pool program handling deposits, fills, and bundle execution
- Supporting Programs - Peripheral programs for enhanced functionality
Key Components
SVM Spoke
Core spoke pool program for deposits, fills, and relayer refunds
Multicall Handler
Executes batched cross-chain messages and instructions
Sponsored CCTP
Sponsored deposit flow using CCTP for token bridging
Technology Stack
Anchor Framework
All Solana programs are built using the Anchor framework, which provides:- Type safety - Strongly typed Rust interfaces
- Account validation - Automatic account constraint checking
- IDL generation - Interface Definition Language for client integration
- Testing utilities - Comprehensive testing framework
CCTP Integration
Circle’s Cross-Chain Transfer Protocol (CCTP) enables:- Native USDC transfers - Burn tokens on source chain, mint on destination
- Message passing - Cross-chain communication between L1 and Solana
- Attestation service - Secure validation of cross-chain messages
Protocol Flow
Step-by-Step
- Deposit - User locks tokens on Solana via
deposit()instruction - Fill - Relayer fulfills deposit on destination chain, fronting capital
- Bundling - Data worker aggregates fills into merkle tree bundles
- Relay - HubPool relays root bundle to Solana via CCTP
- Execution - Root bundle executed to process refunds and rebalances
- Refund - Relayer claims refund using merkle proof
Key Features
Deposits
- Standard deposits -
deposit()with auto-incrementing nonce - Deposit now -
deposit_now()with automatic quote timestamp - Unsafe deposits -
unsafe_deposit()for deterministic deposit IDs - Message passing - Attach arbitrary data for destination contract calls
Fills
- Fast fills - Relayers compete to fill deposits instantly
- Slow fills - Fallback mechanism using protocol reserves
- Exclusivity periods - Optional exclusive relayer windows
- Cross-chain refunds - Relayers choose refund destination chain
Admin Functions
- Pausable - Emergency pause for deposits and fills
- Upgradeable - Cross-chain ownership via HubPool
- Bundle management - Root bundle relay and execution
- Emergency deletion - Remove invalid bundles
Development Setup
Prerequisites
Build Programs
Testing
Deployment
See individual program pages for detailed deployment instructions: For complete deployment procedures, see the main README.Network Information
Mainnet
- Chain ID: Computed via
cast to-dec $(cast shr $(cast keccak solana-mainnet) 208) 208) - RPC:
https://api.mainnet-beta.solana.com - CCTP Domain: 5
- USDC Mint:
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
Devnet
- Chain ID: Computed via
cast to-dec $(cast shr $(cast keccak solana-devnet) 208) 208) - RPC:
https://api.devnet.solana.com - USDC Mint:
4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
Security
- Audited by OpenZeppelin - All programs undergo security audits
- Bug bounty - Report issues at [email protected]
- Security policy - See https://docs.across.to/resources/bug-bounty
- Verified builds - Reproducible builds using Solana verifiable build tools
Resources
GitHub Repository
View source code and contribute
Anchor Docs
Learn about the Anchor framework
CCTP Docs
Circle’s Cross-Chain Transfer Protocol
Solana Docs
Official Solana documentation