Skip to content

Commit 19c03fa

Browse files
committed
docs: update README for multi-chain support and CCTP V1 (Legacy) notice
Reflects that the relayer now supports EVM destinations alongside Solana, and adds a deprecation note since Circle is phasing out CCTP V1 in favour of V2. Made-with: Cursor
1 parent 2d8edd6 commit 19c03fa

1 file changed

Lines changed: 42 additions & 19 deletions

File tree

README.md

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
# CCTP Relayer - Noble to Solana
1+
# CCTP Relayer - Noble to Solana & EVM
22

3-
**Work in progress.** This tool is currently focused on **manual recovery of USDC transfers from Noble (Cosmos) to Solana** using Circle's Cross-Chain Transfer Protocol (CCTP). Other chains and flows are not supported yet. Should you want other recoveries e.g. EVM, [Buy me a coffee and pop me a message here](https://buymeacoffee.com/jasbanza).
3+
> **Note:** This tool uses **CCTP V1 (Legacy)**. Circle is [deprecating V1](https://developers.circle.com/cctp/migration-from-v1-to-v2) in favour of CCTP V2, with phase-out beginning July 2026. V1 remains fully functional until then, but a migration to V2 will be needed in the future.
44
5-
This is an independent, community-built tool and is **not affiliated with or endorsed by Circle, Solana, Phantom, or any other referenced project.**
5+
A community-built tool for **recovering and sending USDC transfers from Noble (Cosmos)** using Circle's Cross-Chain Transfer Protocol (CCTP V1). Supports relaying to **Solana** and all major **EVM chains**: Ethereum, Avalanche, OP Mainnet, Arbitrum, Base, and Polygon PoS.
6+
7+
[Buy me a coffee](https://buymeacoffee.com/jasbanza)
8+
9+
This is an independent, community-built tool and is **not affiliated with or endorsed by Circle, Solana, Phantom, MetaMask, or any other referenced project.**
610

711
## Live deployments
812

@@ -11,26 +15,37 @@ This is an independent, community-built tool and is **not affiliated with or end
1115

1216
## Features
1317

14-
- Fetch Noble transaction details and extract CCTP message
15-
- Convert message from Base64 to Hex
16-
- Compute keccak256 message hash
17-
- Fetch attestation from Circle's API
18-
- Connect Phantom wallet
19-
- Build and send `receiveMessage` transaction on Solana
18+
- **Recover transfers**: Fetch Noble transaction details, extract the CCTP message, and relay to the destination chain
19+
- **Send USDC**: Burn USDC on Noble and prepare a CCTP transfer to any supported destination
20+
- **Lookup pending transfers**: Search for in-flight transfers by destination address
21+
- **Multi-chain support**: Relay to Solana (Phantom) or any EVM chain (MetaMask / injected wallet)
22+
- **Auto-detection**: Destination chain is detected automatically from the CCTP message
23+
- Compute keccak256 message hash and fetch Circle attestation
2024
- All fields are editable for power users
2125
- External tool links for manual fallback
2226

2327
## Usage
2428

25-
### Option 1: Full Flow
29+
### Recover a Transfer
2630

2731
1. Enter your Noble transaction hash
2832
2. Click "Fetch TX" to retrieve the message data (the tool will auto-convert to hex, compute the hash, and fetch the attestation)
2933
3. Wait until the attestation status shows `complete`
30-
4. Connect your Phantom wallet
31-
5. Click "Relay to Solana"
34+
4. The destination chain is detected automatically — connect the appropriate wallet:
35+
- **Solana**: Connect Phantom wallet, then click "Relay to Solana"
36+
- **EVM chains**: Connect MetaMask (or any injected wallet), then click "Relay to [Chain]"
37+
38+
### Send USDC from Noble
39+
40+
1. Connect your Keplr wallet
41+
2. Select the destination chain and enter the recipient address
42+
3. Enter the amount and send
3243

33-
### Option 2: Manual Entry
44+
### Lookup Pending Transfers
45+
46+
Enter a destination address (Solana or EVM) to search for in-flight CCTP transfers waiting to be relayed.
47+
48+
### Manual Entry
3449

3550
If you already have any intermediate values (message hash, attestation, etc.), you can paste them directly into the corresponding fields.
3651

@@ -43,9 +58,11 @@ cctp-relayer/
4358
│ ├── config.js # Allowed origins config
4459
│ └── relay.js # POST /api/relay (proxies Solana RPC)
4560
├── public/ # Static website files
46-
│ ├── app.js
61+
│ ├── app.js # Main application logic (all chains)
4762
│ ├── index.html
4863
│ └── styles.css
64+
├── .github/workflows/ # CI/CD
65+
│ └── deploy-gh-pages.yml # Auto-deploy to GitHub Pages
4966
├── .gitignore
5067
├── package.json
5168
└── README.md
@@ -90,6 +107,8 @@ All configuration values can be edited in the UI:
90107
| MessageTransmitter | `CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd` | Solana CCTP program |
91108
| TokenMessengerMinter | `CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3` | Solana CCTP program |
92109

110+
EVM chain contract addresses (MessageTransmitter, TokenMessenger) are auto-configured based on the selected destination chain.
111+
93112
## Domain IDs
94113

95114
| Chain | Domain ID |
@@ -107,20 +126,23 @@ All configuration values can be edited in the UI:
107126

108127
If any step in the UI fails, you can use these external tools:
109128

110-
### Step 3: Source Transaction
129+
### Source Transaction
111130
- [Mintscan Noble Explorer](https://www.mintscan.io/noble) - View Noble transactions
112131
- [Noble LCD API](https://noble-api.polkachu.com/cosmos/tx/v1beta1/txs/) - Query transactions directly
113132
- [Base64 to Hex Converter](https://base64.guru/converter/decode/hex) - Convert message encoding
114133

115-
### Step 4: Attestation
134+
### Attestation
116135
- [Keccak256 Hash Tool](https://emn178.github.io/online-tools/keccak_256.html) - Compute message hash (use hex input)
117136
- [Circle Attestation API](https://iris-api.circle.com/v1/attestations/) - Fetch attestation directly
118137
- [Message Format Docs](https://developers.circle.com/cctp/message-format) - Understand CCTP message structure
119138

120-
### Step 5: Relay
139+
### Relay
121140
- [Phantom Wallet](https://phantom.app/) - Solana wallet
141+
- [MetaMask](https://metamask.io/) - EVM wallet
122142
- [Solscan Explorer](https://solscan.io/) - View Solana transactions
123-
- [CCTP Solana Contracts](https://github.com/circlefin/solana-cctp-contracts) - Source code reference
143+
- [Etherscan](https://etherscan.io/), [Basescan](https://basescan.org/), [Arbiscan](https://arbiscan.io/) - View EVM transactions
144+
- [CCTP Solana Contracts](https://github.com/circlefin/solana-cctp-contracts) - Solana source code reference
145+
- [EVM CCTP Contracts](https://learn.circle.com/cctp/v1/evm-smart-contracts) - EVM contract addresses
124146

125147
## Troubleshooting
126148

@@ -135,7 +157,8 @@ If the Circle attestation API fails due to CORS, you can:
135157
Check that:
136158
- The attestation status is "complete"
137159
- The message hasn't already been relayed (nonce already used)
138-
- Your wallet has enough SOL for transaction fees
160+
- Your wallet has enough native tokens for gas (SOL for Solana, ETH for Ethereum/Base/Arbitrum/OP, MATIC for Polygon, AVAX for Avalanche)
161+
- For EVM relays, your wallet is connected to the correct network (the app will prompt to switch)
139162

140163
### Message Not Found in Transaction
141164

0 commit comments

Comments
 (0)