原子交换Atomic Swap是什么?两个区块链如何不经过交易所换币?
原子交换通常利用HTLC让两条链上的资产要么全部交换、要么分别退款。本文用BTC与ETH案例解释流程、条件、风险与局限。
原子交换(Atomic Swap)是在没有中心化托管方的情况下,让两个参与者在不同链或不同资产之间完成交换。理想结果只有两种:双方都拿到对方资产,或者交换失败后各自取回原资产。
经典跨链原子交换使用HTLC实现,但“原子交换”是完整协议,“HTLC”只是其中的密码学条件组件。
定义
假设Alice持有BTC,Bob持有ETH,双方约定1 BTC交换20 ETH。协议需要保证:
- Alice不能拿走ETH后阻止Bob领取BTC;
- Bob不能拿走BTC却不交付ETH;
- 任一方中途退出,另一方最终能退款;
- 交换不依赖中心化平台保管两边资产。
通过同一哈希秘密连接两条链上的合约,可以让领取一边资产的动作披露另一边领取所需信息。
完整流程
- Alice生成随机秘密x,并计算
h=H(x)。 - Alice在比特币链创建HTLC,锁定1 BTC:Bob提供x可领取,48小时后Alice可退款。
- Bob验证比特币交易、金额、脚本和确认数。
- Bob在以太坊创建HTLC,锁定20 ETH:Alice提供x可领取,24小时后Bob可退款。
- Alice验证以太坊合约后,用x领取20 ETH。
- x在以太坊链上公开。
- Bob读取x,在比特币链领取1 BTC。
如果Alice不领取ETH,24小时后Bob退款;再过更长时间,Alice取回BTC。整个交换不需要交易所控制私钥。
为什么超时必须不同?
Alice领取ETH后,Bob需要观察x、构造比特币交易并等待广播确认。如果两边同时到期,Alice可能在最后时刻领取,Bob来不及操作。
因此,先锁定的一侧通常设置更长超时:
T_BTC > T_ETH + Bob响应缓冲
缓冲要考虑两条链出块时间、拥堵、手续费市场、节点故障和时区。固定“多一小时”未必适合高价值或慢链交易。
原子性来自哪里?
Alice想获得ETH必须公开x;Bob获得x后即可领取BTC。秘密把两个独立链上条件连接起来。
若x不公开,两边最终走退款路径。协议不需要两条链直接通信,也不需要桥合约铸造包装资产。
原子性是经济与流程意义上的“全成或全退”,不是两个区块在同一瞬间最终确认。交换期间资金会锁定,双方还承担时间和链重组风险。
两条链需要满足什么条件?
经典HTLC原子交换要求:
- 支持兼容的哈希函数;
- 支持时间锁或可表达超时条件;
- 支持可验证签名和条件花费;
- 用户能观察对方链状态;
- 两条链有足够可靠的最终确认;
- 双方能独立构造领取与退款交易。
若哈希算法不同,需要设计兼容条件;若某链不支持足够脚本能力,可能无法使用经典方法。
实际报价问题
原子交换解决结算对手风险,不自动解决价格发现。Alice与Bob仍需约定兑换比例、数量和有效时间。
在价格快速波动时,后行动作方拥有免费选择权:看到市场不利可以拒绝继续,先行动作方资金则被锁定到退款。这个问题称为可选性或Free Option Problem。
解决方法可能包括较短报价有效期、保证金、拍卖、做市商竞争或专门协议,但都会引入新复杂度。
Free Option案例
Alice先锁定1 BTC,约定换20 ETH。等待确认期间,BTC相对ETH上涨20%,市场价格变成1 BTC=24 ETH。
Bob按原价交付20 ETH会占便宜,因此愿意继续;若BTC下跌到16 ETH,Bob可能不建立第二个合约,让Alice等48小时退款。
Bob享有“有利时成交、不利时放弃”的选择,而Alice承担资金锁定。原子性防止资产被单边盗取,却没有消除谈判与时机不对称。
与中心化交易所比较
中心化交易所提供订单簿、即时撮合和统一账户,但用户承担托管、提现和平台风险。
原子交换让用户保持自托管并减少结算对手风险,却面临:
- 找到匹配对手方困难;
- 流动性分散;
- 两条链手续费;
- 等待确认;
- 复杂操作与退款;
- 价格变动可选性;
- 两条链都需在线监控。
它不是所有交易场景的替代,而是一种特定信任最小化结算方式。
与跨链桥比较
桥通常把资产锁在源链,在目标链铸造包装表示,或使用流动性池提供跨链转移。用户最终持有的是目标链上的映射资产,并依赖桥验证者、合约或流动性提供者。
原子交换后,双方各自获得对方链的原生资产,不需要持续存在的包装代币负债。它不解决把同一资产带到另一条链使用的问题。
桥适合跨链移动资产,原子交换适合双方互换所有权,两者用途不同。
与DEX比较
同一链AMM DEX通过智能合约资金池即时交换,价格由池曲线与套利决定。跨链原子交换没有共享状态,无法像单链AMM一样原子读取两边储备。
一些跨链DEX在界面上提供“原子交换”,底层可能使用HTLC、门限签名、桥或做市商网络。用户应查看真实托管和失败路径,而不只相信产品名称。
实际操作清单
- 核对双方资产、链ID和原生合约。
- 明确兑换率、数量和报价截止时间。
- 生成高熵一次性秘密并安全备份。
- 独立验证哈希值与脚本。
- 先用小额测试。
- 等待第一条链足够确认。
- 检查第二侧超时明显更短。
- 两条链都预留原生手续费。
- 保存领取和退款原始交易。
- 监控x公开与剩余时间。
- 不依赖单一前端。
- 完成后核对两边最终状态。
任何合约地址、金额、哈希或退款地址错误,都可能让“协议理论安全”失去意义。
两条链确认数怎样设置?
确认数应根据每条链的共识、金额、重组历史和交易可撤回性独立设置。比特币6个确认与另一条链6个区块没有可比性。
先行动作方应等第一侧达到约定安全水平,后行动作方再锁定资产。若过早继续,第一侧重组可能让一边合约消失。
高价值交换还要监控链暂停、验证者异常和客户端分叉,而不是只计数。
手续费与Dust
交换至少包含锁定、领取,失败时还包含退款,两条链都收费。金额太小时,手续费可能超过价差优势。
UTXO链还要避免退款输出变成Dust,并为未来费率上升预留费用。预签退款交易若手续费固定过低,可能在拥堵时无法确认。
智能合约链需要预估Gas上限、合约调用失败与Nonce管理。用户不能把所有ETH都锁入合约后发现没有Gas领取。
隐私风险
同一哈希出现在两条链上,会把本来独立的地址与交易关联。公开秘密后,观察者可识别对应合约和金额时间关系。
链上分析还能通过金额、时间与退款行为推断双方。原子交换减少托管信任,不自动提供匿名性。
使用新地址、避免重复秘密和采用更先进协议可改善,但无法保证完全隐私。
软件与前端风险
用户通常通过钱包或交换软件执行复杂脚本。恶意软件可以替换退款地址、使用错误超时或窃取秘密。
应验证开源版本、签名与合约源码,保存可从命令行恢复的参数。前端下线时,用户必须仍能执行退款。
“无需信任交易所”并不等于无需信任本地软件和操作系统。
常见误区
误区 1:原子交换完全没有风险
它减少托管对手风险,但仍有链、合约、价格、时间和操作风险。
误区 2:两条链设置相同超时最公平
后续领取方需要额外响应窗口,超时应有安全差。
误区 3:失败后自动退款
通常需要用户主动广播退款并支付费用。
误区 4:原子交换解决流动性
它解决结算条件,不自动提供订单簿、报价或对手方。
误区 5:和跨链桥是一回事
原子交换互换原生资产,桥通常创建跨链资产表示或借助流动性。
误区 6:跨链原子性意味着同时确认
两条链独立出块,完成依赖顺序、秘密与超时。
常见问题 FAQ
一方中途离线怎么办?
对方最终可走超时退款,但资金会锁定,在线方要监控截止时间。
是否需要智能合约平台?
不一定。支持哈希锁和时间锁脚本的UTXO链也可实现。
为什么原子交换没有普遍替代交易所?
流动性、价格发现、速度、操作复杂度与资金锁定限制了日常体验。
可以交换任意两种币吗?
需要两条链支持兼容条件,并有可用软件和对手方,不能默认任意组合可行。
最重要的安全动作是什么?
先小额走完成功与退款路径,并独立保存秘密、脚本、超时和退款交易。
一句话总结
原子交换用同一哈希秘密和错开的时间锁连接两条链,使交换完成或双方退款;它消除了中心托管,却没有消除价格可选性、流动性、链重组、手续费与用户必须按时执行领取退款的操作风险。