原子兑换:抛开术语

原子兑换:抛开术语

技术

// 技术

把加密资产在两条不同的区块链之间转移,通常意味着要信任中间的某个环节。交易所替你保管币,或者一座桥把币锁起来,再给你一份包装版本。无论哪种方式,在从几秒到几小时不等的时间窗口里,你的资金都由第三方控制,可能是中心化托管方、一组验证者,也可能是多签。而能在这段窗口里动用你资金的人,同样也能冻结或弄丢它们。

原子兑换消除了这段窗口。它们让两个人在两条链之间交易加密资产,无需托管方,无需封装代币,也不存在任何一方或中间人控制资金的环节。本文讲清楚它们是什么、底层如何运作、目前仍有哪些不足,以及这一模型为何比表面看起来更重要。

什么是原子兑换?

原子兑换是两种不同加密货币之间的一次直接兑换,通常发生在两条不同的区块链上,而且不需要任何受信任的中间人。“原子”这个词是重点。这笔交易要么对双方都完整完成,要么根本不会发生。不存在一方拿到钱、另一方一无所获的中间状态。

全有或全无的特性由代码保证,而不是由某家公司保证。你和你的交易对手以 p2p 的方式兑换原生资产,兑换规则让你们任何一方都无法欺骗对方。

原子兑换如何运作?

机制听起来复杂,但想法很简单。双方都把各自的资金锁进合约,而这些合约只能用同一个共享秘密解锁。为了领取其中一边而公开这个秘密,会自动把它暴露给另一边。所以在你拿走属于你的那一半交易的瞬间,你的交易对手也能拿走他那一半。你们谁都无法抓起资金就跑。

以下是这一完整流程在 Garden 上的实际运行:

原子兑换流程:用户与 solver 用一个共享秘密在两条链上锁定并领取资产

资金放在一把只有两种打开方式的锁里。要么交易通过秘密完成,要么计时器走完,一切原路退回。整个把戏就是这样。

HTLCs 在原子兑换中的作用

承担全部这些工作的那把锁有个名字。它叫 Hash Time-Locked Contract,也就是 HTLC。HTLC 只是一份有两个可能出口、除此之外别无其他的合约。

HTLC 的两个出口:哈希锁凭秘密释放资金,时间锁则自动把资金退回给发送方

哈希锁是第一个出口。谁能拿出与所存哈希相匹配的秘密,谁就拿到资金。时间锁是第二个出口。如果在设定的期限前没人拿出秘密,资金就退回给发送方。这两个出口就是全部的安全模型。合约没有能力把你的资金送到别处。

正是这一环让原子兑换做到无信任;如果你想更深入了解,我们有一篇关于其演进的完整梳理: HTLCs 如何运作

链上与链下原子兑换

原子兑换有两种形态,区别在于锁放在哪里。

链上原子兑换把 HTLCs 直接放在相关的区块链上。这就是大多数人说到原子兑换时所指的跨链场景。你用一条链上的原生资产兑换另一条链上的原生资产,两把锁分别记录在各自的链上。这是最常见的做法,也是 Garden 上跨链 Bitcoin 兑换的基础。

链下原子兑换则运行在支付通道内,就是 Lightning Network 所用的那种通道。哈希锁与时间锁的逻辑完全相同,但兑换在通道内结算,而不是在基础链上结算。假设你在一个 Lightning 通道里持有 Bitcoin,而你想要 Litecoin,另一边正好有人需求相反。与其各自在 Bitcoin 和 Litecoin 的基础链上挂出锁并等待确认,不如让兑换沿着双方的支付通道进行,用的还是同样的秘密与时间锁把戏。在通道关闭之前什么都不会碰到基础链,所以它几秒就能结算,成本几乎为零。问题在于双方都需要有已开启、已注资且在正确一侧拥有流动性的通道,因此这更适合小额、高频的兑换,而不是一次性的大额转移。

原子兑换与桥、封装代币的对比

这正是这一模型体现价值的地方。把 Bitcoin 转到另一条链的常规做法是使用锁定并铸造的桥。你把 BTC 发给桥,桥锁住这枚币,然后在另一侧给你铸造一份像 WBTC 这样的包装版本。那个封装代币是一张欠条。只有在桥仍然持有真正的 BTC 并保持诚实的前提下,它才值钱。

原子兑换完全跳过了欠条。你交出一份原生资产,收到一份原生资产。没有任何东西被包装,也没有任何东西被锁进一个攻击者可以掏空的资金堆里。

原子兑换对比锁定并铸造的桥:无托管方的原生资产兑换,对比被锁定的 BTC 和一张包装欠条

它消除了两个故障点,托管与包装。

原子兑换的优势

  • 自托管
  • 没有交易对手风险
  • 没有封装代币
  • 没有滑点

原子兑换的局限

  • 兑换要等待区块确认,因此比即时成交更慢。 
  • 只有在有人接下相反的一腿时,兑换才会发生。经典版本要你自己去找到那个人,不过 solver 网络现在会自动处理这件事;solver 的流动性和库存是约束条件。
  • 每条链上都需要哈希锁和时间锁,因此支持的资产范围比只管铸造封装代币的系统更窄。
  • 会产生一个免费期权,持有秘密的一方如果在兑换中途遇到价格对自己不利,就可以直接走人,因为他的资金会原样退回。 

这些问题过去大多是致命伤。solver 网络已在很大程度上解决了流动性和交易对手的问题,罚则也削弱了免费期权。剩下的主要是等待时间,这是在真实链上结算、而不是信任别人替你结算所要付出的诚实代价。

原子兑换今天能做什么?

早期的工具很粗糙,你得自己找到交易对手,而且双方都要保持在线、盯着这笔兑换。这一点已经变了。现代协议问的是一个更简单的问题,你想要什么,然后让一个 solver 网络竞相满足它。CoW Swap 让这种意图与 solver 的模型在同链交易中流行起来,而 Garden 把同样的一键体验叠加在使用 HTLCs 的真实原子结算之上,用于跨链转移。你拿到报价,确认,就完成了。不用找交易对手,不用死盯屏幕,不会有封装代币落进你的钱包,而在工作被转交给 solver 的同时,无信任的保证依然完整。

最容易理解的办法就是亲自做一次。以下是你现在就可以做的真实原子兑换:

常见问题

原子兑换安全吗?

结算由密码学保证,而不是由信任保证。兑换的两边要么都完成,要么都通过时间锁退款。任何时候都没有第三方持有你的资金,所以打击过交易所和桥的主要风险,也就是托管与封装代币的储备支撑,在这里并不适用。剩下的风险是实际层面的,比如等待确认和寻找流动性。

兑换过程中双方都必须在线吗?

最初的点对点设计里确实如此,而且那真的很痛苦。双方都必须保持活跃,才能在时间锁的窗口内公开秘密并领取资金。现代协议用 solver 网络解决了这一点。solver 承担交易对手的角色并自动处理自己那一边,所以你只需签名一次,系统就会把兑换走完。你不必被困在屏幕前。

原子兑换中的“免费期权”问题是什么?

因为持有秘密的一方可以直接让兑换过期并拿回退款,他实际上握着一个免费期权。如果在时间锁期间价格朝对他有利的方向走,他就完成兑换;如果价格对他不利,他就零成本走人。较长的时间锁上,这个期权具有实实在在的价值,对交易对手并不公平。协议用手续费、押金或罚则来对抗它,让放弃一笔兑换比完成它更贵,从而消除了大部分钻空子的动机。

原子兑换会像普通 DEX 交易那样被抢先交易或三明治攻击吗?

汇率在双方锁定资金时就已确定,所以不存在像在 AMM 上那样可供机器人操纵的在途价格。这消除了经典的三明治攻击。当第一方领取资金时,秘密确实会在链上公开,但到那时时间锁已经保护了双方,因此看到秘密并不能让任何人偷走其中一腿。

请注意:原子兑换这个说法被用得很随意。不少协议一边宣传原子兑换,一边仍在兑换中途把你的资金经由某个池子或验证者控制的金库来路由。它们确实是原子的,交易要么完成,要么全额退款,但中间有别人拿着你的钱,所以它们并非非托管。本文描述的是原子兑换在 Garden 上如何运作:基于 HTLCs 构建,你的资金保存在只有你和你的交易对手(solver)才能访问的密码学之中。如果你在比较不同方案,不要止步于“原子”这个词。要看清楚兑换结算期间是谁在持有你的资金。

Last updated

Related Blogs