Cross-chain USDC transfer contracts powered by Circle's Cross-Chain Transfer Protocol (CCTP), enabling seamless USDC transfers across multiple blockchain networks with integrated gas drop functionality.
Cashmere CCTP is a comprehensive multi-chain solution that allows users to transfer USDC across different blockchain networks using Circle's CCTP infrastructure. The protocol supports native gas drops, flexible fee structures, and maintains consistent functionality across all supported chains.
cashmere-contracts/
├── evm/
│ └── src/
│ └── CashmereCCTP.sol # EVM implementation
├── solana/
│ └── programs/
│ └── cashmere_cctp/ # Solana Anchor program
├── aptos/
│ └── sources/
│ └── transfer.move # Aptos Move contract
└── sui/
└── sources/
└── transfer.move # Sui Move contract
cd evm
npm install
# Note: You'll need to add Circle's CCTP interface files
cd solana
anchor build
anchor test
cd aptos
aptos move compile
aptos move test
cd sui
sui move build
sui move test
// Transfer 100 USDC from Ethereum to Arbitrum with gas drop
CashmereCCTP.TransferParams memory params = CashmereCCTP.TransferParams({
amount: 100_000_000, // 100 USDC (6 decimals)
destinationDomain: 3, // Arbitrum
recipient: 0x..., // Recipient address
solanaOwner: 0x..., // Solana owner (if applicable)
fee: 1_000_000, // 1 USDC fee
deadline: block.timestamp + 300, // 5 minutes
gasDropAmount: 5_000_000, // 5 USDC worth of ETH
isNative: false, // Fee in USDC
signature: signatureBytes
});
contract.transfer{value: 0}(params);
| Chain | Domain ID |
|---|---|
| Ethereum | 0 |
| Arbitrum | 3 |
| Optimism | 2 |
| Polygon | 7 |
| Base | 6 |
| Avalanche | 1 |
| Solana | 5 |
| Aptos | 9 |
| Sui | 8 |
All contracts support the following administrative functions:
setFeeBP(uint256) - Set percentage-based fee (max 1%)setSigner(address) - Update signature verification keysetMaxGasDrop(uint64) - Configure maximum gas drop amountswithdrawFees() - Withdraw collected feestransferOwnership() - Transfer administrative controlThe contracts require a backend service to:
Use the contracts with popular Web3 libraries:
// Web3.js example
const contract = new web3.eth.Contract(ABI, CONTRACT_ADDRESS);
await contract.methods.transfer(params).send({from: userAddress});
// Ethers.js example
const contract = new ethers.Contract(CONTRACT_ADDRESS, ABI, signer);
await contract.transfer(params);
| Network | Contract Address | Status |
|---|---|---|
| Ethereum | TBD |
🔄 Pending |
| Arbitrum | TBD |
🔄 Pending |
| Optimism | TBD |
🔄 Pending |
| Polygon | TBD |
🔄 Pending |
| Base | TBD |
🔄 Pending |
| Avalanche | TBD |
🔄 Pending |
| Solana | TBD |
🔄 Pending |
| Aptos | TBD |
🔄 Pending |
| Sui | TBD |
🔄 Pending |
Available for development and testing purposes. Contact the team for testnet addresses.
# EVM tests
cd evm && npm test
# Solana tests
cd solana && anchor test
# Aptos tests
cd aptos && aptos move test
# Sui tests
cd sui && sui move test
We welcome contributions! Please follow these guidelines:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)If you discover a security vulnerability, please send an email to [cashmereprotocol@gmail.com]. All security vulnerabilities will be promptly addressed.
For non-security issues, please open a GitHub issue with: - Clear description of the problem - Steps to reproduce - Expected vs actual behavior - Contract addresses and transaction hashes (if applicable)
Detailed API documentation for each contract is available in the respective source files.
This project is licensed under the MIT License - see the LICENSE file for details.
⚠️ Disclaimer: This software is provided "as is" without warranties. Use at your own risk. Always conduct thorough testing before deploying to production.
For questions and support, please open an issue or contact the development team.
$ claude mcp add contracts-prod \
-- python -m otcore.mcp_server <graph>