原子交换(Atomic Swap)
问题
在探讨Atomic Swap之前,我们首先要了解一下它出现的背景。虽然比特币及其他虚拟货币一直以来以去中心化为目标,必须很遗憾的看到,今天90%的虚拟货币交易都是在中心化的交易所完成。这是一个非常有意思的污点,去中心化的货币依赖于中心化的交易所才能得到推广和生存。如何能够绕开中心化的交易所,使得各种虚拟货币的用户可以自由的去中心化的交易(即去中心化交易所),这是当前币圈中的一大热点。
那么回到问题上,瓶颈在哪里?在现实生活中交易是如何完成的呢?假设Alice想要从Bob那里买东西,比如一个太阳镜。Alice和Bob彼此住的很远,不可能打个飞的,当面交易。他们彼此是陌生人,所以不相互信任。那么Alice和Bob如何能进行交易呢?如果Alice首先向Bob付了款,那么Bob可能根本就不会寄出商品,而是直接黑了这笔钱。而如果Bob首先将太阳镜发送给Alice,那么Alice可能根本就不会付款,因为她已经收到了商品。所以,理想的方式是把钱从Alice那里转到Bob的同时,商品也从Bob那里转移到Alice。但是,这个在现实情况下是不可能的。
如何解决信任问题呢?在现实生活中,Alice和Bob会选择一个他们都信任的第三方中介,由第三方负责保证钱和商品的转移可以在可信环境下下进行,比如大家使用支付宝。这就是实物交易的不幸之处。
在币圈里,如何Alice持有比特币,而Bob持有莱特币,那么两人的货币交换则是通过目前的交易所作为第三方来保证交易的安全可靠,当然,交易所也会收取对应的手续费。因为虚拟货币都是数字资产,有没有什么方式可以让我们避开交易所,直接进行交易呢?比如通过一些逻辑,使得交易要么都发生,要么都不发生 — 这就是Atomic Swap
Decred和Litecoin首先给出了一个解决方案。详情可以参考他们的 blog和 github。
原理
以下按时间顺序发生:
A 选择了一个随机数 x,作为交易凭证
A 创建了一个transaction,用于交易 — TX1: “如果满足如下两个条件之一:1,B提供了x,并用私钥签名,2,提供A和B的私钥签名, 支付w个比特币给B的钱包地址<B’s public key>”
A 创建了第二个transaction,用于退款 — TX2: “48小时候,通过A的私钥签名,从TX1中支付w个BTC到A的钱包地址<A’s public key>” — 注意,A lock了48小时,后面你会明白为什么要48小时。
A 把TX2发给B
B 签名 TX2,然后返回给A — 这里A并不在网络上提交TX2
时间点 1) A 在网络上提交 TX1
B 创建一个transaction, 用于交易 — TX3: “如果满足两个以下条件之一:1,A提供了x以及私钥签名;2,拥有A和B的私钥签名,支付v个替换币到A的钱包地址<A-public-key>”
B 创建了一个transaction,用于退款 — TX4: “24个小时后,通过B的私钥签名,从TX3中支付v个替换币到B的钱包地址<B’s public key>”。 注意,这里是24小时。
B 将 TX4 to A
A 私钥签名 TX4,然后返回给B — 这里B也不在网络上提交TX4
时间点 2) B 将TX3提交到网络
时间点 3) A 使用了 TX3,获得了v个替代币,因为是A挑选的x,满足“A提供了x以及私钥签名”,但是此次交易导致x这个数字被公开
时间点 4) B 使用了 TX1, 通过公开获得的x,满足了“B提供了x,并用私钥签名”。这里B获得w个比特币。
这就是原子交换。如果在交换过程中,出现任何问题,都会保证原子性:
- 时间点1之前: 没有transaction被提交到网络上,所以没有什么操作发生
- 时间点 1 & 2之间: A可以在48小时候,通过退款交易TX2将钱拿回来。
- 时间点 2 & 3之间: B可以在24小时候,通过退款交易TX4将钱拿回来。如果真的发生这种情况,A额外的24个小时后,拿回退款。
- 时间点3之后: A,B先后完成交易。A 必须在24个小时内,把获得的替代币转走,否则,B会通过TX4将钱拿回。而B 必须在48小时内,把获得的比特币转走,否则A会通过TX2拿回币。
优势
如果Alice和Bob想要在链上交易大量的BTC和LTC,他们不再需要第三方了。这意味着,去中心化、无信任的交易成为可能,用户将能够保管他们的虚拟货币,并自由的兑换其他虚拟货币。不管怎么说,原子交换是一项非常有趣的创新,可能会改变加密货币交易的格局。
首先,新的交易方式将允许商家接受更多的虚拟货币支付种类。随着越来越多的商家在2018年开始观看虚拟货币支付,Atomic Swap会让商家更方便的参与到虚拟货币支付体系中去。其次,原子交换使得整个虚拟货币生态变得更加的“去货币化”。货币持有者可以方便的在不同虚拟货币种类之间兑换,最终的持有可能会大部分沉淀在一揽子货币上,而在使用的过程中,通过Atomic Swap兑换成具体的消费虚拟货币。再次,因为绕开了第三方交易所,Atomic Swap的交易成本几近可以忽略。
局限性
目前,Atomic Swap并不能在任意两种虚拟货币之间自由的发生,他们必须要满足如下条件:
- 必须有共同的哈希算法
- 都具有时间锁定功能
- 脚本执行过程中验证签名
这三个要求大大限制了可参与Atomic Swap的虚拟货币的种类。
同时与中心化交易所相比,Atomic Swap还具有以下缺点:
- 锁定时间长
- 无法确保交易完成
对于Atomic Swap,整个产业界还处在探索的早期,相信很快会有更多的进展。