TON 到 Avalanche 跨链兑换:HTLC 原子交换是怎么运作的
通过 MCP 完成 TON → Avalanche 跨链兑换:原子化 HTLC 锁仓、非托管、服务器不保存私钥。5 个工具加一套可跑通的实战流程。
为什么智能体需要把价值从 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、Avalanche。TRON 目前不支持——不要把它写进你的流程里。
一个重要的方向限制: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 的实际运作。