全部文章
7 分钟阅读

TON 到 Avalanche 跨链兑换:HTLC 原子交换是怎么运作的

通过 MCP 完成 TON → Avalanche 跨链兑换:原子化 HTLC 锁仓、非托管、服务器不保存私钥。5 个工具加一套可跑通的实战流程。

TON Avalanche 跨链兑换HTLC 哈希时间锁非托管 MCPTON MCP 服务器AVAXTonConnect

为什么智能体需要把价值从 TON 挪到 Avalanche

你的智能体在 Avalanche 上发现了一个价格合适的资产,但它的全部余额都是 TON 上的 GRAM。接下来就是熟悉的噩梦:把 GRAM 提到交易所、等待入账、通过 KYC、买入目标代币、再提现到 Avalanche 网络——每一步都要搭上手续费和时间。五次手动操作、三个需要信任的中间方,外加半小时的等待,而价格早就跑了。

对人来说,这只是烦。对自主运行的 AI 智能体来说,这与“自主”根本不兼容:它没有交易所账户,也无权替你完成身份验证;而在一个随时可能冻结提现的托管方之上搭建可靠流程,压根行不通。每一步都有人替你保管资金,智能体还得在某个地方存交易所的 API key 或热钱包的助记词。

TON → Avalanche 跨链兑换用另一种方式解决这个问题。中间没有任何交易所。资金在两条链之间移动,靠的是数学保证——“要么兑换在两条链上同时成立,要么谁都分毫未损”——而不是中间方的承诺。下面我们拆解它在 TONNode 的 MCP 工具里是如何运作的:没有托管方,服务器也不保存任何私钥。

TON 与 Avalanche 之间的原子化 HTLC 锁仓是怎么回事

核心机制是原子化 HTLC 锁仓(hashed timelock contract,哈希时间锁合约)。名字听着唬人,思路其实很简单,用银行保险箱来类比最直观。

你把资金放进一个只有正确的钥匙——也就是秘密值——才能打开的保险箱。保险箱带一个计时器:如果规定时间内没人插入钥匙,里面的东西就退还给原主。现在摆上两个这样的保险箱——一个在 TON,一个在 Avalanche——并用同一把锁把它们锁住:

  • 生成一个随机秘密值 S 和它的哈希 H = hash(S)。从哈希无法反推出秘密值,但很容易验证某个秘密值是否与它匹配。
  • 在 TON 一侧,你把 GRAM 存入带有 hashlock H 的锁仓合约。
  • 在 Avalanche 一侧,对手方(做市商)把目标资产存入自己的锁仓合约,用的是同一个 H
  • 当你公开秘密值 S 去领取 Avalanche 上的资产时,S 就随之上链、对所有人可见。做市商看到它,用同一个 S 从 TON 锁仓合约里取走你的 GRAM。

这就是原子化一词的由来。只解开一个锁仓而不解开另一个是不可能的:两条链共用同一个秘密值。要么双方都拿到各自的资产,要么超时之后双方通过 refund 各自取回自己的资金。“钱已经离开 TON,但资产没有到账”这种中间状态根本不存在。

这里提供保证的是密码学和超时机制,而不是中间方的信誉。也正因为如此,中间才不需要交易所。

跨链的五个工具:quote、build、track、disclose、refund

在 TONNode 里,跨链恰好由五个 MCP 工具覆盖,每个工具负责交易的一个阶段:

  • get_crosschain_quote——报价:你的 GRAM 或 Jetton 能在目标网络换到多少资产,包含路由和超时参数。
  • build_crosschain_swap_tx——构建 TON 侧的未签名 HTLC 锁仓交易,并返回关联的秘密值(及其哈希)。交易由用户的钱包签名。
  • track_crosschain_swap——展示交易在两条链上的各个阶段:你的存款是否已进入 TON 锁仓合约,Avalanche 上的对手方锁仓是否已出现。
  • disclose_crosschain_secret——在完成链上就绪校验(对手方锁仓已就位、金额与哈希一致)之后,公开秘密值以完成结算。
  • build_crosschain_refund——如果交易卡住且超时已过,构建从锁仓合约退款的交易。

五个工具并不是“太少”。一笔原子交换本来就恰好由这五步构成:报价、锁仓、跟踪、结算,出了问题就退款。一个不多,一个不少。

非托管:服务器不签名、不保存私钥

这不是营销话术,而是架构层面的硬约束。TONNode 的跨链、兑换和钱包工具是严格非托管的:

  • 服务器从不签名交易,也从不保管资金或私钥。
  • build_crosschain_swap_tx 返回的是未签名的 TonConnect 消息。签名由用户的钱包完成——Tonkeeper、MyTonWallet 或任何兼容 TonConnect 的钱包。服务器只负责组装一个格式正确的交易信封。
  • HTLC 的秘密值 S 由服务器生成后连同构建好的交易一起交给你——之后是否公开它,完全在你的掌控之中。就连调用 disclose_crosschain_secret,也是一次链上校验之后由你主动发起的明确操作,而不是后端某处的自动动作。

如果 TONNode 服务器在交易进行到一半时突然消失,你的资金也不会丢:它们躺在区块链上的锁仓合约里,超时后 build_crosschain_refund 会把它们退回给你。对于跨链的价值转移,非托管意味着一件很朴素的事:服务器上没有东西可偷,也没有东西可冻结

对比一下托管模式:运营方持有密钥并替你签名。两种模式各有其存在的理由——这条边界我们在托管与非托管 MCP一文,以及智能体非托管兑换的拆解里详细讨论过。

支持哪些网络(以及为什么 TON 永远是源链)

跨链的目标网络:Ethereum、Arbitrum、Base、BNB Chain、Polygon、AvalancheTRON 目前不支持——不要把它写进你的流程里。

一个重要的方向限制:TON 永远是兑换的源链。你把 GRAM 或 Jetton 存入 TON 锁仓合约,然后在目标 EVM 网络领取对手方资产。这是机制本身决定的:HTLC 由 TON 上的存款发起——你的钱包和余额都在那里——对手方则在目标链上镜像出对应的锁仓。

实际结论:如果你的智能体本来就跑在 TON 上,需要把价值送到 Avalanche——这正是整套机制为之设计的场景。反过来,如果想把资金从外部转 TON——目前没有这条路线。从 TON 到 Ethereum 的跨链机制完全相同——只是目标网络参数不同;详见 TON → Ethereum 兑换一文。

GRAM → Avalanche 兑换的分步实战

把所有环节串起来。下面是真实的调用顺序;智能体会自己走完全程,你只需要在钱包里签一笔交易。

第 1 步:报价。 智能体询价:

“给我一个跨链报价:500 GRAM 从 TON 换成 Avalanche 上的 USDC。”

背后调用的是 get_crosschain_quote。智能体拿到预计到手的数量、路由和时间锁参数。价格合适,就进入下一步。

第 2 步:构建 HTLC 锁仓交易。

“价格可以。按这份报价构建交易,收款用我的 Avalanche 地址 0x…,返回未签名的 TonConnect 消息和秘密值的哈希。”

调用 build_crosschain_swap_tx。返回一笔未签名的 TON 锁仓存款交易,外加秘密值及其哈希 H。用户通过 TonConnect 用钱包签名——正是在这一刻,GRAM 进入 TON 上的锁仓合约。服务器全程不碰签名。

第 3 步:跟踪对手方锁仓。

“用 track_crosschain_swap 盯着这笔交易,直到 Avalanche 上出现使用我这个哈希的对手方锁仓。”

track_crosschain_swap 展示两条链上的阶段状态。我们等做市商在 Avalanche 上以同一个 H 把目标资产存入自己的锁仓合约。对手方锁仓没出现之前,绝不能公开秘密值。

第 4 步:公开秘密值并结算。 当跟踪确认链上已就绪:

“对手方锁仓已就位。先做链上就绪校验,再用 disclose_crosschain_secret 公开秘密值。”

disclose_crosschain_secret 会先校验就绪状态(对手方锁仓存在、金额与哈希一致),然后公开秘密值。它同时解开两个锁仓合约:你在 Avalanche 上收到 USDC,对手方用同一个 S 从 TON 锁仓合约取走 GRAM。交易以原子方式完结。

第 5 步(仅在出问题时):退款。 如果对手方锁仓迟迟不出现、交易卡住了——不要公开秘密值。等超时到期,调用 build_crosschain_refund

“交易卡住了,超时已过。用 build_crosschain_refund 构建退款。”

该工具构建一笔把 GRAM 从 TON 锁仓合约退回给你的交易;用户用钱包签名即可。对手方掉线不可能让你损失资金——时间锁在设计上就杜绝了这种可能。

注意这里的纪律:只有在跟踪确认对手方锁仓已就位之后,才公开秘密值。过早公开是唯一会让自己吃亏的操作,正因如此,这一步被做成一个独立、显式的工具,而不是藏进自动化流程里。

接入 MCP 服务器,以及接下来做什么

先说一个重要的分岔,免得浪费时间。@tonnode/mcp 包是开源的(MIT 协议,GitHub tonnode/mcp),通过 TON 原生的 ADNL 协议工作,不经过 HTTP 中间层。按公开配置在本地跑起来后,它提供完整的读取工具集(8 个 read 工具:余额、账户状态、交易、get 方法等)——用来读 TON 数据完全够用,但其中没有兑换、跨链和钱包工具。本地 MCP 客户端配置(Claude、Cursor、Codex 或任何兼容 MCP 的客户端):

{
  "mcpServers": {
    "ton": {
      "command": "npx",
      "args": ["-y", "@tonnode/mcp"]
    }
  }
}

本文的五个跨链工具(连同兑换和钱包生成)只能通过 hosted 端点 mcp.tonnode.io 使用,凭 Bearer 密钥访问。Hobby 密钥免费,登录后立即发放,无需绑卡(每分钟 60 次请求)——但它是 hosted 密钥,不是裸跑的本地 npx。跨链流水线的配置:

{
  "mcpServers": {
    "ton": {
      "type": "http",
      "url": "https://mcp.tonnode.io/mcp",
      "headers": { "Authorization": "Bearer tn_live_…" }
    }
  }
}

几个能提前打消疑问的事实:

  • TONNode 一共有 16 个工具所有套餐都能用全部 16 个——你付费买的是吞吐量,而不是“解锁功能”。上面两份配置的区别不在工具集,而在接入点:本地 npx 只提供读取,hosted 端点凭密钥开放全部工具,包括五个跨链工具。
  • GRAM 是 2026 年 6 月更名后的 Toncoin。网络仍然叫 TON,改名的只是代币本身。
  • 免费的 Hobby 密钥——每分钟 60 次请求,无需绑卡,足以跑通完整的跨链流水线。

接下来

如果你的智能体已经跑在 TON 上,需要把价值送往 Avalanche(或 Ethereum、Base、Arbitrum、BNB Chain、Polygon)——把 get_crosschain_quote → build_crosschain_swap_tx → track_crosschain_swap → disclose_crosschain_secret 这条链路串起来,并把 build_crosschain_refund 留作保险。至于为什么 TON 的跨链应该用 MCP 而不是交易所来解决,我们在这篇文章里单独展开。

现在就领取免费的 Hobby 密钥,接入跨链工具:tonnode.io/dashboard?plan=hobby。无需绑卡,每分钟 60 次请求足以跑完整条流水线,亲眼看看原子化 HTLC 的实际运作。

查看全部 16 个工具——工具页面。后续计划——路线图

让你的智能体接入 TON

16 个 MCP 工具:读取、非托管兑换、跨链与钱包。免费档 60 次/分钟,无需银行卡。