TON 跨链兑换到 Ethereum:原子 HTLC 全流程详解
通过原子 HTLC 锁定完成 TON → Ethereum 跨链兑换:quote、build、track、disclose 与 refund 全流程。非托管——私钥与资金始终在你手中。
设想这样一个场景:你的 AI 智能体在 TON 上持有 USDT,用户说“帮我换成 Ethereum 上的 ETH”。常规路径是把钱转到中心化交易所,等到账,手动兑换,再提现到目标网络。智能体走不了这条路:它没有交易所账户,没有 KYC,更关键的是,每一步都有人替你保管资金。任何一个环节卡住,资产就悬在两条链之间,没人保证能退回来。
行业的经典答案是找个中间人做桥,把钱“暂存”给它——而被黑掉几亿美元的,恰恰就是这类桥。对自主运行的智能体来说这不可接受:它需要的是一种要么整笔成交、要么各自拿回本金的兑换方式,而且不依赖任何可信中间人。TON 到 Ethereum 的跨链兑换正是靠原子化的 HTLC 资金锁定(escrow)解决了这个问题。下面我们借助 TONNode MCP 服务器的真实工具,把它的内部机制拆开讲清楚——没有托管,也没有魔法。
什么是 TON → Ethereum 跨链兑换,为什么说它是原子的
所谓跨链兑换,就是把一条链上的资产换成另一条链上的资产,而两条链之间并没有一个公共账本,能把两侧的操作记进同一笔交易。TON 在物理上“看不到”Ethereum 上的交易,Ethereum 也看不到 TON 上的。没有共同的裁判。所以“我先转——你再转”这种朴素方案会撞上信任问题:谁先动手,谁承担风险。
这里的关键词是原子性。原子操作要么完整执行,要么完全不执行,不存在“执行了一半”的中间态。放到兑换场景里,这就是一条硬保证:要么两侧都成交、各自拿到想要的资产,要么交易回滚、各自取回原有资金。“我付了钱却没收到货”这种结局,在这套机制里根本不存在。
实现方式不是信任中间人,而是密码学加超时机制——也就是 HTLC。
通俗版原子 HTLC:哈希、秘密值和超时
HTLC 全称 Hash Time-Locked Contract——“哈希时间锁合约”。听起来唬人,其实思路很生活化。想象一个装了两把锁的银行保险柜:
- 哈希锁。 只有知道秘密值的人才能打开柜子,秘密值就是一串很长的随机字符串
S。柜子里存的不是秘密值本身,而是它的“指纹”,即哈希H = hash(S)。从指纹无法还原秘密值,但任何人只要见到秘密值,立刻就能验证指纹确实来自它。资金就锁定在“对应这个哈希”的锁定合约里。 - 时间锁(超时)。 如果在规定时间内秘密值始终没有被披露,柜子会自动解锁,把资金退还给最初存入的人。
两条链串起来之后,原子性是这样实现的:
- TON 一侧,你的 GRAM/USDT 被锁进以哈希
H为条件的锁定合约。 - 对手方(做市商)看到锁定后,在 Ethereum 上用同一个
H镜像出一份锁定——把你要的 ETH 预留出来。 - 想在 Ethereum 上取走 ETH,你必须披露秘密值
S。而披露S意味着它在区块链上公开。 - 对手方看到
S,用同一个秘密值从 TON 侧锁定合约中取走你的资金。
整笔交易的两条腿共用同一个秘密值。只要你为了领取 ETH 把它披露出来,TON 那一侧也就随之解锁。想只解锁一条腿而不放开另一条,做不到。如果中途出了问题、S 始终没有披露——超时之后双方各自退款。“原子性”正来自这里:不存在第三种结局。这套方案在构造上就不需要信任任何中间服务器。
五个工具串起完整流程:quote → build → track → disclose/refund
在 TONNode 里,整个 HTLC 兑换被拆成五个工具,调用顺序与 HTLC 的逻辑一一对应。
1. get_crosschain_quote — 报价
第一步先问清条件:你在 TON 上的资产能换到多少 ETH(或 Ethereum 上的 USDT),流动性和手续费都算在内。返回汇率、预期到手金额和路由参数。这是只读操作——不锁定任何东西,也不签名。
2. build_crosschain_swap_tx — 未签名的 HTLC 锁定交易 + 秘密值
交易在这一步诞生。该工具返回一笔未签名的交易,它会把你的资金按秘密值的哈希锁进 HTLC 锁定合约;同时还会单独返回秘密值 S 本身。关键点:秘密值交到你手上,而不是留在服务器。交易由你的钱包通过 TonConnect 签名,服务器碰不到签名环节。后面正是靠你披露这个秘密值来完成整笔交易;而如果交易卡住,被锁定的资金会在超时后退回给你,秘密值无需披露。
3. track_crosschain_swap — 两条链上的交易阶段
签名并发出锁定交易之后,你需要知道交易进行到哪一步了:你的钱在 TON 上锁好了没有,Ethereum 那边有没有出现对应的锁定,是不是已经万事俱备可以结算。track_crosschain_swap 同时展示两条链上的阶段——这是你俯瞰两条区块链的统一视角。反复调用它,直到交易进入“可以披露秘密值”的状态。
4a. disclose_crosschain_secret — 披露秘密值,完成结算
当跟踪确认对手方已就绪、资金已在链上锁定后,你就披露秘密值。这是最后一步:披露即触发结算——你取走 ETH,对手方用同一个秘密值取走你的 GRAM/USDT。务必先通过 track_crosschain_swap 确认链上就绪之后再调用它——过早披露秘密值,等于在保险柜的另一半还没装满之前就把钥匙交了出去。
4b. build_crosschain_refund — 交易卡住时取回资金
兜底场景。如果对侧始终没有履约——对手方没有镜像出锁定、超时已过——build_crosschain_refund 会构建一笔未签名的退款交易,把你的资金从锁定合约中取回。这正是第二把锁——时间锁。秘密值不披露,被锁定的资金退回给你。这是原子性的应急保险丝:卡住的交易不会吞掉你的钱。
整条路径示意:
get_crosschain_quote → 我能换到多少
build_crosschain_swap_tx → 未签名的 HTLC-tx + 秘密值(秘密值在你手里)
↓ (在钱包中签名并发送)
track_crosschain_swap → TON 和 Ethereum 两侧的阶段
├─ 链上就绪 → disclose_crosschain_secret → 结算
└─ 卡住、超时 → build_crosschain_refund → 退款
接好服务器之后,你只需要用自然语言吩咐智能体——它会自己把工具链排好:
把我 TON 钱包里的 50 USDT 兑换成 Ethereum 网络上的 ETH。
先给我看报价(get_crosschain_quote)。
如果汇率合适,就构建 HTLC 锁定交易(build_crosschain_swap_tx),
交给我签名。之后持续跟踪这笔交易(track_crosschain_swap),
等两侧都在链上就绪后,披露秘密值完成结算。
如果超时前一直没有进展,就构建退款交易。
为什么它是非托管的:服务器不签名、不持有私钥
回到开头的痛点。普通跨链桥的危险在于你把资金交给中间人控制。TONNode 的设计完全不同,这也是它的原则性立场:服务器永远不签名,也不保管资金和私钥。
落到 HTLC 锁定的实践上,这意味着:
build_crosschain_swap_tx返回的是未签名交易——在你用自己的钱包通过 TonConnect 签名之前,什么都不会被锁定。- 秘密值
S在你手里,不在服务器上。 没有你的秘密值,谁也无法替你完成结算。 - 超时退款(
build_crosschain_refund)同样构建为未签名交易,等你来签。 - 就连生成的钱包(
generate_wallet工具)也是交付给你,不在服务器上留存。
即使服务器不可用或被攻破,它在物理上也卷不走你的资金,更无法在没有你的签名和秘密值的前提下完成这笔交易。换句话说:原子 HTLC 保护你不被对手方坑,非托管架构保护你不被服务本身坑。关于这套模型的更多细节,见托管与非托管 MCP 对比以及面向 TON 智能体的非托管兑换这两篇。
作为对比:TON Foundation 官方的 @ton/mcp 是托管型智能体钱包——它持有 operator 私钥并自行签名,且只在 TON 网络内工作,没有跨链能力。这个差别摆得很坦白:那边是以信任私钥为代价换取自主支出,这边则是非托管,外加走出 TON 的能力。
支持哪些网络:Ethereum、Arbitrum、Base、BNB、Polygon、Avalanche
在这套流程里,TON 永远是交易的源头,目标网络则是六条 EVM 链之一:
- Ethereum
- Arbitrum
- Base
- BNB Chain
- Polygon
- Avalanche
所有网络的机制完全一致——原子 HTLC 锁定。TRON 暂不支持。 如果你为了低手续费瞄准 L2,可以看单独的一篇解析:TON → Arbitrum 跨链兑换——流程相同,只是目标网络不同。至于智能体为什么需要这个、它对 TON 网络意味着什么价值,见第一笔跨链兑换与它对 TON 的价值。
如何接入 MCP 并跑通第一笔跨链兑换
TONNode 是面向 TON 的 hosted MCP 服务器。MCP(Model Context Protocol)是 AI 智能体(Claude、Cursor、ChatGPT/Codex 以及任何 MCP 客户端)调用工具的标准协议。工具总共 16 个,全部 16 个在任何套餐都可用——你付费买的只是吞吐量。
本地、免费
公开配置自带完整的读取工具集,一条命令即可装好——npx -y @tonnode/mcp:
{
"mcpServers": {
"ton": {
"command": "npx",
"args": ["-y", "@tonnode/mcp"]
}
}
}
把它加进你的 MCP 客户端配置(Claude Desktop、Cursor、Codex 或任何兼容 MCP 的客户端),get_crosschain_quote、build_crosschain_swap_tx、track_crosschain_swap、disclose_crosschain_secret、build_crosschain_refund 这些工具就对智能体可用了。@tonnode/mcp 包是开源的(MIT),发布在 npm 和 GitHub(tonnode/mcp)上,基于 TON 原生的 ADNL 协议工作,没有 HTTP 中间层。
Hosted——带上自己的密钥
想要有保障的吞吐量,就接入 hosted 端点并带上自己的密钥:
{
"mcpServers": {
"ton": {
"type": "http",
"url": "https://mcp.tonnode.io/mcp",
"headers": { "Authorization": "Bearer tn_live_…" }
}
}
}
各套餐只在请求限额上有区别:Hobby——永久免费,60 请求/分钟;Pro——$29/月,300 请求/分钟;Scale——$199/月,1200 请求/分钟。所有套餐的 16 个工具完全相同。Hobby 免费密钥登录后立即发放,无需绑卡。顺带说一句货币的事:GRAM 是改名后的 Toncoin(2026 年 6 月更名),网络本身仍叫 TON,报价里你看到的就是 GRAM。
一分钟完成第一笔兑换
- 领取免费的 Hobby 密钥——无需绑卡,登录后立即发放。
- 写好配置(本地或 hosted 均可)。
- 把上文那段提示词交给智能体,然后用自己的钱包为锁定交易签名。
小结
跨越不同网络的兑换不必建立在信任之上。原子 HTLC 锁定给出“全有或全无”的保证,而 TONNode 的非托管架构确保资金、私钥和秘密值从不离开你的掌控。五个工具——get_crosschain_quote、build_crosschain_swap_tx、track_crosschain_swap、disclose_crosschain_secret、build_crosschain_refund——覆盖了交易的完整生命周期,包括应急退款。
想在一笔真实兑换上验证,完全免费:领取 Hobby 密钥,完成你的第一笔跨链兑换——无需绑卡,每分钟 60 次请求绰绰有余。全部 16 个工具的概览见 MCP 页面。