改版中,提建议就可获得币视界股 
Vitalik给R3提供的跨链技术报告
浏览数:34 

【以下只是大致文摘,如要理解英文原意,请点击上面的原文链接跳转至R3官网下载】


传统的第三方机构充当中介的解决方案可以很好的链的交互问题,而且不需修改任何区块链协议,目前存在的各种形形色色的交易所就很好地说明了这个问题。链间直接的互操作性目前还只是概念阶段,鲜有实践,因为稳定强大的区块链系统还很少。跨链在论文层面的研究目前还主要集中在公有链领域,本方案不讨论联盟链与现有系统对接方面的挑战,比如swift等。


跨链技术的种类

1、中心化或多重签名的见证人模式notary(应用层级别):见证人是链A的合法用户,负责监听链B的事件和状态,进而操作链A。

2、侧链或中继模式relay(协议层级别):区块链系统本身可以读取链B的事件和状态。

3、哈希锁定模式hash-locking(协议层级别):在链AB间设定相互操作的触发器,通常是个待披露明文的随机数的hash值。


侧链如果只定义为可以读取另一个链的数据,那么以太坊通过btcrelay就是比特币的侧链,但是侧链更多指的是可以进行资产转移的挂钩用的pegged侧链。


跨链技术的应用

1、可转移的资产:资产可以多链之间来回转移和使用。

2、原子交易:链间资产的同时交换。

3、跨链数据oracle:链A需要得知链B的数据的证明。

4、跨链执行合约:例如根据链A的股权证明在链B上分发股息。

5、跨链交易所:对于协议不直接支持跨链操作的区块链进行补充,例如ETH和BTC。


见证人模式notary

一种共识方法是见证人可以独立提交可信交易列表,相互交叉的部分作为可信交易;另一种方法是采用多重签名交易。

Ripple的InterLedger之前采用的是这种方案,选定一批见证人,他们之间采用拜占庭容错结构,监听事件的发生并签名进行资产转移和释放。InterLedger还设计了可链接的转移结构,比如链A和链B、链B和链C相互间有见证人模式,则链A可以与链C建立连接,实际应用中可以达到套利交易的效果。

在比特币的侧链liquid中,用户在比特币链上发送BTC到多重签名的比特币地址,liquid链检测到后在liquid链上发行L-BTC,用户也可以销毁L-BTC,然后在比特币链上获得BTC。

在联盟链中见证人集合最好就是共识节点集合,以达到最高安全性。


中继模式relay

假设区块链拥有区块头header和body,header中拥有merkle等证明信息,可以将链A的区块链头,写入链B的块中,链B使用和链A一样的共识验证方法,比如pow验证难度和长度,pbft验证投票等。等待链A的header finalize了,链B就可以通过merkle分支的证明信息来证明A的数据和操作。链AB不能直接验证对方块的状态,因为这样会形成循环,但相互只包含轻节点是可行的,这个header验证的逻辑可以由链协议本身或应用合约实现。

r3_relay.png

r3_code.png


这段代码在两条互相relay的链上同时存在,但同时需要双方的币或物是可以无限量发行的,才可以保证不错误,来达到资产转移操作。


哈希锁定模式hash-locking

Interledger现在去除了对公证人的依赖,采用了这种新的模式。

r3_hashlock.png

1、A生成随机数S,并发送hash(S)给B.

2、A在链LA上锁定币,并设定条件:如果在(当前时间+2X=TA)时间内链LA收到S,则转账给B,否则退回给A。

3、B收到hash(S),并看见A的锁定和时间设定后,在链LB上锁定币,并设定条件:如果在TA-X时间内链LB收到S,则转账给A,否则退回给B。

4、A看见B的锁定后,在TA-X时间内发送S给链LB,得到链LB的币。

5、B收到S后,在TA时间内发送S到链LA,得到链LA的币。


如果双方按照规则释放S,则可以保证交易的原子性,如果一方出错发生延迟,则后果自负。但存在一种攻击向量,如现实世界中由于汇率波动,A可以等待大约X/2的时间,如果汇率优于自己则公布S,不优则不公布S,B实际上给了A一个期权。这个问题可以用信用系统解决,也可以用违约扣费解决。hash-locking只适用于链间的资产交换,不适用于链间的资产转移。


从理论到实践

跨链种类和需求有很多,用cause-effect架构,我们分为:

r3_depend.png

1、前置起因forward causion:链A的事件引发链B的操作,或者链B可以监控链A。

2、后置起因backward causion:链B可以引发链A的事件。

3、从属起因dependency:链A和链B同时依赖第三方C的事件。


依赖dependency是指链间可以独立的引发事件,中继relay是指可以提供前置和后置起因。见证人模式可以提供上述三种模型,hash-locking只可以提供双向从属起因,所以hash-locking功能要要弱于relay架构。将来可以有支持这些跨链操作的脚本语言,同时链的智能合约架构需要支持监听这些事件。


形式化建模和安全

假设一个跨链交易,考虑到延迟,以及51%短程攻击等,链A端的时间和防攻击经济成本是δ1,同时链B端的成本是δ2,消息传送的成本是δ3,则链B最终接收到onPreimageReveal的最小成本是δ1+δ2+δ3,攻击者会衡量这个攻击成本和可能的攻击收益。孤立的链本身建模比较简单,但如果要考虑另一条链的复杂情况,如分叉,执行报错等,会导致链的建模越来越复杂。

实际情况中还要考虑经济激励的问题,不同的链由于独立共识,所以跨链交易会产生各种问题,比如spam攻击,攻击者可以简单地通过提供高手续费塞满一些块,阻塞所有合约的正常交易,导致正当跨链交易阻塞而超时失败,这就需要加大时间窗口,但同时效率又会降低,这样只能在量变级别调优,无法解决根本问题,这跟51%攻击一样,只是一种攻击成本的衡量。


治理和失败模型

上述逻辑是在两条链都正常工作的情况下假设的,运行中的跨链交易可能出现多种不规则的因素:

1、51%攻击导致交易回退

2、51%攻击导致交易的拒绝服务

3、51%攻击导致一个不被主链接收的非法链被轻节点和relay链接受

4、软分叉、硬分叉

5、网络分区导致分叉

6、要求高一致性的链失去了过多的节点,造成停机


这些不规则因素的可能结果:

1、交易回退可能导致一方交易被丢弃,失去原子性

2、如果另一半交易未生效,单边重放攻击失去原子性

3、一个链硬分叉可能导致其relay链的协调出现问题

4、网络分区导致的分叉可能造成交易回退或共识停止


通常情况下,对于一致性要求高的共识算法会增强跨链的安全性,假设主链是高一致性的链,子链是高可用性的链。攻击者可以伪造假的交易发送给relay子链的主链,使主链释放资金,但子链的交易回退不能再引发主链的资金释放,因为主链记录了子链的余额。如果主链也是高可用性的,那就会导致资金不断的释放。

联盟链的情况下,如果出现盗窃行为,可以启动监管措施进行硬分叉或冻结操作,处理损失的成本比较低,公有链的情况下,没有绝对的方案阻止攻击者盗窃,一定程度上取决于该资产的可监管度,但攻击者也可以快速地将资产从高监管资产转移至低监管资产,监管者很难快速察觉并阻止。

公有链的矿工不发动51%攻击的原因是破坏生态不利于他们的长期利益,但是对于侧链托管于主链的资产,主链矿工可能在这方面的担忧相对会小。


操作性和事件生命周期

联盟链由于共识节点可以任意进行协议修改和业务操作,存在一些应用逻辑上的独特挑战,导致更多意想不到的影响跨链操作的因素:

1、经济边界的变更,如英国脱欧

2、经济制裁,例如对俄国或伊朗

3、货币废止,例如1999年的欧元

4、货币硬分叉,例如伊拉克的第纳尔


减轻或缓和失败结果

鉴于区块链协议可能的设计缺陷或者客户端实现bug所造成的攻击行为,应该尽量避免近似的监管和共识架构的链之间产生跨链操作。联盟链或私有链暂时规避了缺乏监管的问题,但相互之间的跨链行为仍然不可避免,而且相互之间也缺乏完全信任。针对可能的意外因素,增加如下处理手段:

1、实现onChainReverted函数,处理多个块被推翻的情况

2、实现onFailStop函数,处理链停止出块的情况,比如自动延长交易锁定时间

3、实现onFork函数,处理硬分叉情况


也可以使用见证人群体,监测某些不规则行为,但这些特殊情况下的处理很难事先规定好,可以为智能合约事先指定监护人,只有在监测到分叉行为等意外事件后,监护人才可以干涉交易。

跨链增强了去中心化信任,但也带来了程序的复杂性,即使设计的很复杂了可能仍然比我们现有的中心化交易系统更易受攻击。将来可能会出现专用于跨链的智能合约语言,但这方面的研究还很初级。


实践路径

r3_road.png

跨链交易要求的环境

1、链A成熟稳定

2、链B成熟稳定

3、某些应用无法在一条链上实现

4、两条链上的应用需要实现交互


目前主要的应用是数字货币交换,和类似Marker Dao的多链资产衍生品交易的需求,联盟链的实际应用还没有,跨链就更远了。后续研究需要根据实际应用场景先行的原则,不需盲目使用跨链技术。

源地址:http://www.r3cev.com/blog/2017/1/23/chain-interoperability

转载于:http://chainx.org/news/index/detail/id/8.html