mcpField
C
cross-chain

cross-chain

github.com/stellar开发5569 次安装1 周前更新
代码仓库

关于 cross-chain

面向涉及 Stellar 的跨链开发技能,帮助开发者为不同任务选择转账通道,并说明代币转移、合约消息及集成注意事项。

主要功能

  1. 01通过 CCTP V2 路由 USDC 转账
  2. 02通过 USDT0 路由 USDT 转账
  3. 03介绍跨链合约消息传递
  4. 04说明多链代币方案
  5. 05记录地址、小数位和时序注意事项

适用场景

  1. 01在 Stellar 与支持的链之间转移 USDC
  2. 02在 Stellar 与 EVM 链之间转移 USDT
  3. 03跨链发送合约消息
  4. 04为钱包或 dapp 添加跨链兑换

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/stellar/stellar-dev-skill --skill cross-chain

安装后在 Claude Code 中输入/cross-chain确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

axelar.md
cctp.md
layerzero.md

详细介绍

Stellar 上的跨链

Stellar 通过多种生产级通道连接到其他区块链,每种通道都针对不同用途构建。选错通道会浪费工程资源;选对通道是路由决策,而不是研究项目。本文负责路由;深入介绍见相应文档——根据任务阅读对应文件:

你想要使用位置
在 Stellar 与 EVM 链或 Solana 之间转移原生 USDC(没有封装资产,也没有流动性池)Circle CCTP V2cctp.md
在 Stellar 与 EVM 链之间转移原生 USDTUSDT0,一种 LayerZero OFTlayerzero.md
让 Stellar 合约调用另一条链上的合约,或接收来自另一条链的调用(任意载荷)Axelar GMP 或 LayerZero OAppaxelar.md、layerzero.md
让一个代币(新代币或现有 Stellar 资产)存在于多条链上Axelar ITS 或 LayerZero OFTaxelar.md、layerzero.md
跨链兑换任意资产(BTC、ETH、SOL、… → XLM 或 Stellar USDC),无需自行集成桥NEAR Intents下文

经验法则:如果资产是 USDC,且两端都是 CCTP 链,那么 CCTP 成本最低、路径最直接(它销毁并铸造 Circle 原生 USDC——没有封装,也没有资金池)。如果资产是 USDT,答案是通过 LayerZero OFT 使用 USDT0——这是另一条通道,且其机制因链路而异:Stellar 端销毁并铸造,而 Ethereum 端通过 OFT Adapter 锁定和解锁规范 USDT,因此在描述流程前,请检查该路由的 OFT 模式。如果你需要的是在目标链上执行逻辑,而不只是转移价值,这就是消息传递——有两条通道可以实现,layerzero.md 末尾的比较能帮助你在 Axelar 的共享验证器安全机制和 LayerZero 的应用配置 DVN 集合之间做出选择。如果你控制某个代币并希望它支持多链,那就是同一分类下的 ITS 或 OFT。如果用户只想“把链 A 上的 X 换成 Stellar 上的 Y”,而你完全不想处理桥接,就通过 NEAR Intents 获取报价。

何时使用此技能

  • 在 Stellar 与 Ethereum、Base、Arbitrum、Solana 或其他支持 CCTP 的链之间桥接 USDC
  • 在 Stellar 与 EVM 链之间桥接 USDT(通过 LayerZero OFT 使用 USDT0)
  • 将桥接来的 USDC 接收到 Stellar 账户或合约中(并避免资金无法使用——参见下方的 forwarder 警告)
  • 编写 Stellar 智能合约,以便向其他链上的合约发送消息或接收其消息
  • 部署跨链代币,或将现有 Stellar 资产连接到其他生态系统
  • 为钱包或 dapp 添加“从任意链存入”或跨链兑换流程

相关技能

  • 信任线、SAC 部署、资产构成 → ../assets/SKILL.md
  • 编写用于发送/接收消息的 Stellar 智能合约 → ../smart-contracts/SKILL.md
  • 前端交易构建、Freighter 签名、RPC 提交 → ../dapp/SKILL.md
  • 监控目标链上的铸造或合约事件 → ../data/SKILL.md
  • 向 AI Agent 付款(x402/MPP),而不是进行桥接 → ../agentic-payments/SKILL.md

所有轨道共有的注意事项

无论选择哪条轨道,这些问题都可能带来麻烦。每个配套文件还会补充该轨道特有的注意事项。

  1. 地址格式不可互换。 Stellar 地址是 strkey 字符串(G… 账户、C… 合约、M… 多路复用地址);EVM 使用 20 字节十六进制格式;Solana 使用 base58。每条轨道都为外部地址定义了自己的编码方式(CCTP:原始 32 字节负载;Axelar:字符串 + 字节负载)。切勿把一条链上的地址粘贴到另一条链对应的字段中——请按轨道规定的方式编码,并在编码前使用 SDK 验证(StrKey.isValidEd25519PublicKey / isValidContract)。
  2. 小数位数各不相同。 经典 Stellar 资产及其 SAC 使用 7 位小数,但其他 Stellar 代币合约(包括通过 ITS 部署的代币)会自行声明小数位数——请调用 decimals(),不要想当然。除 Stellar(使用 7 位)外,所有受支持链上的 USDC 都是 6 位小数;EVM 代币通常是 18 位;CCTP 消息始终使用 6 位小数。每次跨越边界时都要进行转换,并使用能覆盖最后一位的金额进行测试(参见 cctp.md 中的详细小数示例)。LayerZero OFT 还增加了第二层:OFT 除代币本地小数位数外,还会声明 shared_decimals(USDT0 为 6);发送时,低于该精度的余数会被静默丢弃——请使用 quote_oft 获取报价,并以其 OFTReceipt 为准,不要依赖输入金额(参见 layerzero.md)。
  3. 经典 Stellar 收款方必须先建立信任线。 G… 账户若未针对某项资产(包括 USDC)建立信任线,就无法接收该资产。若目标账户没有信任线,跨链转入的资金将无法到账。请在开始转账前检查并建立信任线——参见 ../assets/SKILL.md。
  4. 跨链操作是异步的。 每条轨道都需要等待:CCTP 等待最终性以及 Circle 的证明(根据链和最终性阈值,耗时数秒到约 15 分钟);Axelar 等待验证者确认;意图交易等待做市商。请围绕状态轮询来构建 UI 和 Agent,切勿采用“提交后就默认成功”的方式。
  5. 始终先在测试网上操作。 在接触主网前,先在测试网上完成完整的往返流程——跨链操作中的错误往往无法挽回,因为销毁不可逆,某些编码错误会导致资金永久滞留。但有两条轨道无法通过这种方式演练:NEAR Intents 由真实做市商完成交易,而 USDT0 没有发布测试网部署,尽管 LayerZero 存在测试网端点。对于这两者,演练方式是只读报价(USDT0 使用 quote_oft 和 quote_send;意图交易使用模拟报价),然后进行小额真实转账。LayerZero 也有测试网端点(EID 40600),可供你自己的 OApp 或 OFT 使用;但在依赖它之前,请先确认一次测试网发送确实能够到账——参见状态说明。

NEAR Intents(基于意图的兑换)

状态敏感。 链和资产支持情况经常变化——开始开发前,请在 NEAR Intents 文档中确认 Stellar 的当前状态。

NEAR Intents 是一种意图协议:用户声明预期结果(“将 0.1 BTC 兑换为 Stellar 上的 USDC”),做市商则竞相执行。Stellar(XLM 和 USDC)是支持的目标链和来源链,因此这是实现“从任意链充值”体验的最短路径——完全无需在 Stellar 端集成桥接合约。

集成方式是使用 1Click API:通过 POST /v0/quote 传入资产对,即可获取价格和存款地址;向该地址发送资金,做市商便会完成兑换。GET /v0/tokens 会列出支持的资产(Stellar 资产:XLM 和 USDC,精度为 7 位小数);使用 "dry": true 发起报价,则可获取价格和预计时间,而不会创建存款承诺——可随意探测资产对,之后再提交。提供 TypeScript、Go 和 Rust 的官方 SDK。

与 Stellar 相关的三点信息(已通过实时 API 验证):

  • Stellar 存款仅支持 MEMO 模式,且 API 会强制执行。 对于来源资产为 Stellar 的报价,必须设置 "depositMode": "MEMO"——否则 /v0/quote 会返回错误 Incorrect depositMode for originAsset from stellar chain。随后,报价会返回存款地址和备注(depositAddress + depositMemo);备注用于将资金路由到你的兑换。没有备注的存款不会入账——请将备注视为地址的一部分,并且不要只显示其中一项。
  • 没有测试网。 意图由拥有真实流动性的真实做市商完成,因此演练方式是先获取干运行报价,再进行小额真实兑换——而不是在测试网上来回操作。
  • 通过合作伙伴门户注册并获取 API 密钥,即可免除默认集成商费用;匿名使用也可以,但会收取附加费(会体现在报价价差中)。

对于更深入的内容(报价参数、滑点、退款处理),请参考实时 1Click API 文档,而非本文档——该协议更新很快。

评论

支持 Markdown