CCTP跨链USDC不是把代币锁进桥再发行一份包装资产。源链上的原生USDC被销毁,Circle对跨链消息出具attestation,目标链验证后铸造目标网络的原生USDC。用户要追踪的是消息生命周期,而不只是两条交易哈希。
四个阶段
1. 源链burn
应用调用TokenMessenger相关入口,指定金额、目标domain和mintRecipient。USDC在源链销毁,同时MessageTransmitter发出消息。domain是CCTP协议编号,不等于EVM chainId,填错可能导致目标不符合预期。
2. 等待最终性
Circle观察源链交易达到所选模式要求的确认。Standard Transfer通常等待更强最终性;Fast Transfer在支持的路径上以费用和额度换取更快attestation。支持链与阈值会变化,应查当前官方配置。
3. 获取attestation
客户端以源链交易或消息标识查询CCTP API,取得消息字节和Circle签名证明。处理中状态不是失败,不应反复burn。保存message hash、sourceDomain、destinationDomain与nonce,便于跨系统关联。
4. 目标链receive与mint
任意允许的提交者可把message和attestation交给目标MessageTransmitter。合约验证签名、目标domain和消息未使用,再由TokenMinter铸造USDC给mintRecipient。同一nonce/消息只能成功处理一次。
| 卡住位置 | 优先检查 |
|---|---|
| burn未确认 | 源链交易状态与最终性 |
| attestation pending | 模式、支持链、消息API状态 |
| receiveMessage revert | 目标合约、消息版本、destinationCaller |
| 已receive但钱包无余额 | mintRecipient与目标链代币地址 |
Fast不是无条件更快
Fast模式可能有max fee、额度与支持市场限制。消息包含实际执行的最终性和费用信息,应用必须给用户展示最大费用与最终到账。若Fast不可用,不能未经确认静默切换并重新burn;应继续追踪原消息或让用户明确选择Standard。
收款地址编码要按目标链
CCTP支持EVM与非EVM链,消息地址字段使用统一字节表示。客户端必须按目标域把用户地址转换为正确bytes32,尤其不能把20字节EVM地址规则套给Solana等32字节地址。测试网与主网合约地址也要完全分离。
跨链流程仍有智能合约、最终性和目标地址风险,不应宣称“Circle证明等于资产永不丢失”。L2最终性可参考区块标签,USDC同名合约核验见代币地址检查,交易失败可按回执状态排查。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。