连接价值孤岛的桥梁 跨链篇上

价值领域的“千岛湖”

目前在coinmarketcap上的区块链项目逾1900,也就是说至少也有1900个不同的币。如果某人只接受ETH,而你手上只有BTC,怎么办?去交易所或者场外交易都可以。但为什么必须要看交易所的脸色呢?中心化交易所出现过不少问题,比如已经垮了的Mt.Gox。

再往大说,ETH和BTC由于架构差别太大而无法互通,为什么就不能直接结算呢?这1900种币实际上形成了一千多个价值孤岛,岛间的结算没有直接出路,成为了“千岛湖”。时势造英雄,跨链应运而生。

跨链技术

区块链本质上是一个账本,两个不同的区块链,其账本是不能互通的。这在保证区块链运作安全同时造成了很多麻烦。两个区块链上的价值如何互相衡量?交易所固然可以担当此任,不过如果某个区块链还没有上交易所呢?ETH在BTC上进行资金众筹的时候,ETH当时还没有上交易所,于是采用了Proof of Burn这一冷门方法以确认向ETH基金会众筹的筹款人。跨链正是在两个不同的区块链间搭建桥梁,让价值能够在去中心化的情况下安全流动。

跨链、侧链与lightning network

跨链

侧链

lightning network

侧链与lightning network都是BTC为了提升自身的可用性与交易速度而提出的项目,其本质是拓展BTC的应用范畴。跨链正是在侧链与lightning network之上建立的,但跨链与后两者相比,有自己的不同:

侧链只是BTC的匝道,BTC资产短暂换成其他链资产之后,并不能长期脱离BTC主链,还是要回归BTC的。同时侧链的支付验证只是SPV,SPV作为支付证明,必然牺牲了安全性。与此同时,可拓展性的增加非常有限,无论怎么发展都脱离不了BTC主链的巢窠。

lightning network对价值交换的借鉴在于Hash 锁定机制。而lightning network存在的以下问题会一样发生在Hash锁定上:

收款必须有热钱包,可能有泄露可能;

失去算力保护下有可能交易内容被泄露;

中间节点很可能无法中转大量资金;

为了防止一个中间节点失去联系而导致的交易失败,很可能会需要银行节点,破坏去中心化。

跨链是为了在两条链间进行任意额度交易而生,其交易金额需要经过足够安全的验证,且未必短时间内回到原链上,甚至允许一去不复返。与此同时,跨链甚至可以达成智能合约状态的交互,这是前面两种技术所无法企及的。

而侧链与lightning network对跨链的贡献在于:侧链提供了第三方中间链连接两条链的思路,lightning network则是提供了不影响主链进程的流通通道。

V神的三种跨链技术总结

在Vitalik2016年给R3写的报告中,他提到了三种方法:公证人模式、侧链/中继和Hash锁定。这是常见的三种跨链方法。

i.公证人模式

既然需要对跨链交易进行监管,那么选举一组公证人来确定哪些从链A到链B的交易是否合法是非常容易想到的方法。公证人有权监控从链A到链B交易的全过程,即使是在链B上才发现问题,公证人也有权将链A上的交易中止以挽回损失。

一般符合公证人模式的共识是DPoS或PBFT,如果是第三方公证,则可以没有共识。为了保全一定程度的去中心化,选择多重签名EC-Schnorr。只有公证人之间达成共识,进行多重签名,交易才是合法。

该模式必须保证公证人全程保持诚实,不受其他因素影响。

中心化交易所转换成公证人模式多中心交易所比较容易,很多机制都不需要推倒重来,而只需要一定的去中心化改动。不过很多坚信去中心化的用户认为这种交易所并不是去中心化。

ii.侧链/中继

中继模式正是从侧链发展而来,不过与其称为中继,接力(relay)一词更容易理解。

区块链上共识的可信度往往较高,重复进行共识不仅没有很大必要,更是在原链运用PoW类共识时非常浪费资源。在原链能够达成共识的情况下,跨链可以相信原链,只将原链中区块头信息转到跨链上,只验证该共识是否有效。在原链的区块确定上链之后,根据merkle等证明区块唯一有效性的数据证明原链的操作有效。原链和跨链间不能直接相互验证,否则会产生无限验证对方的死锁。这就像原链将接力棒交给跨链,跨链就可以将价值接力到其他链上。

跨链必须等待原链的共识,所以与原链的关系是异步,相对其TPS受到原链限制。不过中继可以在原链使用轻节点时也能完成跨链操作。这就扩大了原链的适用范围——BTC没有智能合约,但具有轻节点模式。该模型中存在与UTXO相似的UEO(unfinalized event output),即原链的跨链交易先进入UEO池,在跨链验证区块头信息后进行处理,相比其他两种方法交易处理过程更为简洁。

中继过程是原子操作,所以对于双花攻击和竞速攻击有抵抗力,但如果原链迟迟不能出块,那么跨链只能等待,影响交易效率。同时跨链只验证原链区块的头文件,在出现问题时SPV等级的验证未必能够发现。最后,中继有单向和双向的不同构造,双向构造的复杂度很大。

iii.Hash锁定:

Hash锁定正是lightning network在跨链上的发展与应用。与lightning network有一点不同,Hash锁定更适合在有中间链下进行,链A到链B的直接跨链交易更适合用类似Diffie-Hellman的加密思路进行。Hash锁定的过程相对复杂,以图表示如下:

它可以有以下变种:为了对冲汇率变化,允许A在前Δ/2的时间不发送信息,当之后汇率对A有利则进行合约交易,对A不利A可以取消。当然,到了后半时间就不能轻易取消了。

Hash锁定除去lightning network自身的问题之外,还有无法支持复杂合约的问题。

可以看出,如果在线下过程中最终时间花费为2nΔ的话,转化为非线性结构(即A与C交易,C与B交易,B再与A交易)时,其时间复杂度随链数n的四次方上升,非常不适合于多链复杂合约。不过其结构比较简单,算是一个优点。

新跨链方法

在V神提交跨链技术报告之后,新的跨链技术也在发展。思路有两种——一为组合方法,既然单一方法有自身的问题,那么联合使用取长补短可以考虑。二则是对多重签名的衍生——既然可以用多重签名,那么多个互不认识的人共同保护资产也是可行的,这就是分布式私钥控制技术。

i.组合方法

组合方法目前已知的是公证人+侧链。侧链上进行交易只需要区块头信息,同时不至于影响主链进程;而公证人机制则加强了对安全性的防护。公证人+DPoS两者组合则可以增加整条链的TPS。不过两种模式的组合必然会增加体系的复杂性,而越复杂的系统越容易出bug。所以如果设计得好,安全性也经过验证,不失为一个好方法;反之则更有可能造成跨链资金损失而失去市场。

ii.分布式私钥控制

分布式私钥控制顾名思义,通过去中心化技术,将跨链资产用多个私钥加以控制,原持有者仍然拥有所有权,只是其单一私钥不能取出资产而已。想要回归资产,需要向对应链加以申请获得足够私钥。

举例,用户Alice希望能够将1个原链币转成另一链币。跨链的若干节点(分片/超级代表委员会都可以)在原链上维护一个多签账户,将私钥分割且分别控制,任何单一节点不能取得这1个原链币,只有获得足够的私钥才能获得1个原链币的控制权。

当Alice将1个原链币打到跨链掌控的多签账户时,在跨链相应的同步放出等同于1个原链币的跨链币,再和持有已将另一链币转化等价跨链币的节点进行交易。当Alice需要将跨链币要重新回到原链时,需要先将跨链上的资产锁定,然后在原链中将同等数量的原链币释放。

该过程安全性较好,同时因为在跨链上放出代币,所以支持智能合约特别是多币种复杂合约,不受原链本身是否能进行智能合约影响——这对于BTC是一个利好,BTC不能进行智能合约,功能终究受到了限制。不过在交易量较大时可能会出现对相应币池的挤兑,同时成本高,不够原子化。

【to be continue】

动态回顾

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180920G1S49100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券