Cross chain atomic swap
分享者:李仕炜
定义
- 跨链:不同公链之间的token
- 原子:不可分割
- 交换:由智能合约来完成的交换。
原子交换基本的基本构成是:HTLC(Hashed Timelock Contracts)。它有两种类型
- Hashlock:给你一个哈希值,当你给出它的原像时,你就可以花这笔钱
- 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
介绍一下分布式交易所
可以了解一下:
- 0x解决方案
- 新加坡的kyber