6月9日分享:跨链原子交换

Cross chain atomic swap

分享者:李仕炜

定义

  • 跨链:不同公链之间的token
  • 原子:不可分割
  • 交换:由智能合约来完成的交换。

原子交换基本的基本构成是:HTLC(Hashed Timelock Contracts)。它有两种类型

  1. Hashlock:给你一个哈希值,当你给出它的原像时,你就可以花这笔钱
  2. Timelock:在某个时间点之前,你不能花这笔钱。只有这个时间点之后才能花。

主要应用场景是雷点网络,闪电网络。商业应用场景目前还没有落地。

实际今天的跨链交换,多数是手动实现的,原因是主流的中心化交易所已足够满足多数炒币需求。

技术实现

Alice和Bob的例子。假设Alice用0.1个比特币BTC换取Bob的2个以太坊ETH。

Alice跟Bob说:如果你知道我的密码x,那我手里的BTC就是你的。
Alice同时还说:如果48小时内交易未完成,我将取回我的BTC。

但是因为Bob无法猜出Alice的密码x,所以Bob这么做:

Bob说:如果Alice愿意把x写在纸上,那Bob手里的ETH就归Alice所有。
Bob还说:如果24小时之内交易未完成,我将取回我的ETH。

那么第三步:

Alice写出x值,拿走Bob的ETH。
Bob在以太坊网络里看到了x值,然后从比特币网络中取出了Alice的BTC。
跨链交换结束。

每个transaction需要等上一个transaction完全上链之后,才能继续进行。

细节

transaction的gas fee谁来pay?

Alice和Bob需要在各自的链上提交2个transaction,fee自己负责或商量决定。

不同链用不同Hash()function怎么办?

需使用两个链都支持的哈希算法,如SHA-256。

有没有可能Alice拿到所有币?

有可能。

假设alice在claim币之后,全球大断网,或者bob忘记去claim他应得的币,有可能alice拿到所有的币。

有没有可能Bob拿到所有币?

有可能。

Bob劫持Alice发出的claim以太坊的transaction,使其无法上链。并用这个transaction中的x值claim Alice的比特币。

Q&A

以太坊的智能合约支持timer吗?

原生以太坊不支持。需要第三方来trigger一个transaction。

目前市面上有一些智能合约timer解决方案。

为什么Alice在1&2之间,需要72小时才能拿到refund?

笔者也不太懂,明白的大佬请给我留言。

(实际上,上述对于refund过程的描述不太准确)

跨链原子交换目前的应用场景?

支持闪电网络,雷电网络的multihop支付通道。

分布式交易所。

如果只依赖闪电网络是不是失去了区块链的可靠性?

闪电网络是trustless的,智能合约比较容易实现。

而商业逻辑实际并不只局限于这些应用中。

今天跨链交换应用落地最大的门槛是什么?

商业逻辑和技术方案是分开的。

另外,跨链交易存在上述攻击风险。详情参见:https://zhuanlan.zhihu.com/p/31689532

介绍一下分布式交易所

可以了解一下:

  1. 0x解决方案
  2. 新加坡的kyber