当前位置: 首页 > 资讯 >文章详情

行业研究报告 | 跨链篇

摘要

跨链狭义上指的是相对独立的区块链账本间进行资产互操作的过程。火币研究院本次主要在狭义范畴内剖析了跨链的设计原则、技术难点及其解决方案;并辅以8类应用场景介绍、10个项目的跨链原理阐述以及22个项目整体概况、技术开发和社群建设等维度数据分析,深度刻画了跨链产业全景图。

跨链的实现形态主要表现为资产互换和资产转移,业界已有落地应用,且多种跨链应用场景均可以由此演变。本文将重点阐述两者的跨链原理,从问题出发,提出了5大技术难点并介绍了其对应的解决方案和思路。

1)如何保障跨链交易的原子性:介绍了原子互换和哈希时间锁协议原理。2)如何完成对另一条链的交易确认:介绍了公证人、中继以及榫卯式三大类模式异同。3)如何保障两条链的资产总量不变:从正常和异常两种情况分别阐述了应对方案。4)如何保障两条链的独立安全性:主要从隔离机制和安全检测机制分析了应对思路。5)如何实现多条链之间的跨链互联:介绍了主动兼容和被动兼容两种跨链网络建设方案。

最后对于跨链产业现状和未来,我们认为:1)跨链项目总体处于探索阶段,未有大规模应用;2)跨链技术成熟度较低,仍有较大发展空间;3)跨链的推动依赖于区块链应用的实质性落地;4)跨链网络将推动数字资产金融的繁荣;5)跨链标准的建立将会是区块链行业发展的强劲引擎。

 

第一章 跨链概述

1.1 何为“跨链”

跨链,狭义上来说是两个相对独立[1]的区块链账本间进行资产互操作(Interoperability)的过程;广义上来说是两个独立的账本[2]间进行资产、数据互操作的过程。本文主要是从狭义上来阐述区块链体系之间的跨链互操作问题。

传统信息领域对于互操作的定义为:“不同系统或模块之间进行信息交互和使用的能力” [19]。而Vitalik在《Chain Interoperability》[2]的论文中提到,区块链的互操作主要指的是两条区块链之间进行资产转移、支付或者信息交互的能力,而这些通过引入第三方并且在不改变原生链的前提下是可以做到的。

单一的区块链网络是一个相对封闭的体系,不会主动与外界发生交互,每条链的资产也都是一个独立的价值体系而存在。若是能打通链与链之间的孤岛,让价值在更广大的世界中流通,那必然能从更广阔的范围中增加通证资产的价值,从而推动区块链产业的快速发展。跨链技术正是致力于搭建链与链之间的信任桥梁,打破一链一孤岛的局面,实现链与链之间的资产互操作,以期实现真正的共赢。

[1]指两个区块链账本间相互独立,没有在某方统一进行清/结算的情况(交易都在母链账本进行清算的母子链结构不存在本文所述的跨链操作)

[2] 此处所指的账本不仅指的是区块链账本,也指中心化账本或者其他形式的分布式账本(如DAG账本)。

1.2跨链意义何在

在阐述跨链意义之前,不妨先回顾一下计算机网络的发展历程,也许会对我们有重要启示。1969年投入运行的阿帕网是计算机网络的鼻祖,当时由于大部分计算机互不兼容,且传输速度极慢,计算机网络多以局域网的形式存在,彼此难以连通。直到80年代TCP/IP协议(一种可支持多种底层协议以及异构网络互连协议)逐渐成熟,计算机网络才逐渐被建立起来。到90年代,互联网面向公众开放,以及网络浏览器的出现,才带来了现在互联网的繁荣。

从计算机网络的发展历程,我们仿佛也看到了区块链跨链网络的未来。目前的区块链世界就好比60年代的单机时代,链与链之间高度异构化,彼此难以互通,所有的数据和服务都局限于孤岛式的区块链中。若是未来,所有的区块链系统能通过某一标准化跨链协议链接起来,那众多的区块链系统就能协同工作,为更多的用户、更多的服务提供支撑。跨链技术的成熟与普及或将引爆区块链网络的繁荣。不同的是:互联网是信息自由流通的网络,而区块链跨链网络则是价值自由流通的网络。

1.3跨链进化史

如下图所示,自2009年比特币网络问世后的很长一段时间,到2012年Ripple才发布了跨账本互操作协议《Interledger Protocol (ILP)》,通过第三方公证人的方式实现了跨账本转账,在区块链领域首次提出了跨账本互操作方案。2014年,由比特币核心开发人员组成立的BlockStream团队首次提出锚定式侧链(Pegged Sidechains)跨链交互方案,引入一条与主链双向锚定(Two-way peg)的侧链,可实现跨链资产转移。2015年比特币闪电网络(Lightning Network)采用哈希时间锁(Hashed Timelock)机制,实现了比特币链下快速交易通道。2016年BTCRelay方案发表,基于中继跨链方案实现了比特币到以太坊的单向跨链连通。同年Vitalik Buterin发表的《Chain Interoperability》对区块链互操作问题做了全面和深度的分析。2017年,Polkadot和Cosmos第一次提出了建设跨链网络基础平台的方案,目前这两个项目还在开发过程中。

1.webp

图1.1 跨链进化史

第二章 初识跨链

2.1 跨链的实现形态

我们知道,目前的区块链公链是一个自适应分布式系统,也是一个相对封闭的自循环系统,虽然可以允许新节点加入、旧节点退出,也可容忍一小部分错误,但却难以兼容外部其它系统。链和链之间的信息交互,尤其是以通证为载体的价值交互,可谓困难重重,这对区块链网络来说是一大发展瓶颈。

总体来说,链和链之间的价值/数据交互主要有以下两种实现形式:

1)   链间资产互换:通常指两条链上的不同用户之间进行资产互换,但每条链上的资产总量并无增减,只是资产所有权发生了变化,且这个所有权改变的过程需在两条链同步发生。如Alice想用比特币上的10个BTC换Bob在以太坊的100个ETH,最终交易成功的结果是Bob 在以太坊的100个ETH转移到了Alice在以太坊的地址,而Alice在比特币上的10个BTC转移到了Bob在比特币的地址。比特币和以太坊资产总数并无增加或者减少。

2.webp

2)    链间资产转移(单向/双向):资产转移和资产互换虽看起来相似,却有本质的不同。上文所述资产互换中各链的资产总数是不变的,但资产转移,是资产价值的转移,各链中可用的资产总量将相应增加或者减少。如Alice想将链A的资产转移100枚到链B,最终交易成功的结果是链A的可用资产将减少100枚(减少的100枚被冻结在链A的特定地址),B链上将新生成相应的等价资产。

3.webp

目前对跨链的研究和应用落地主要是集中在资产互换和资产转移这两种方式。有些项目提出了跨链智能合约的概念,多指一条链上的智能合约能确认原链跨链交易的场景,这从技术实现上来说和实现跨链资产转移是相似的,都需要对原链交易进行确认和验证,因此本文不再做单独讨论,而主要针对资产互换和资产转移这两类问题进行技术方案分析。

2.2实现跨链要解决的问题

我们知道,区块链的特点之一就是账本的不可篡改性,因此写入账本的信息需要是准确无误的,特别是资产信息,一定要精确无误。两个区块链系统进行资产信息互换,也需要保证在交换的过程中资产和信息数据要精确记录在彼此的账本上,要做到这一点是非常不容易的。要实现跨链,我们需要解决的问题很多,但是总结起来看,以下几个问题是最核心的:

1)如何保障跨链交易的原子性。即跨链交易要么发生,要么不发生,否则两条链的不一致和不同步状态将成为跨链交易最大的系统漏洞,两个系统的安全性都将受到威胁。这一点是实现跨链交易的基本要求,也是跨链交易必须要解决的难点。

2)如何完成对另一条链的交易确认。对交易的确认,包含了两个层次的问题,一是确认交易已经发生并且上链,写入了区块账本;二是该交易已经获得了系统足够多区块的确认,这样由于系统发生重构而导致交易无效的概率将非常低。区块链系统本身是较为封闭的系统,缺乏主动获取外部信息的机制,因此要确认另外一条链的交易状态并非一件容易的事,可以说是跨链交易的核心难点之一。

3)如何保障两条链的资产总量不变。在资产互换的场景下,两条链的资产并未发生实质性的交换,因此该类情况不会改变各链的资产总量。但是在资产转移的场景下,每条链的可用资产数量是变化的,只有保障跨链交易精确记账,且两条链的账本记账完全同步,才可实现,换种说法就是两条链的记账必须是原子性的,要么都同时记,要么都不记。除此之外,问题的关键是当某条链发生重构时,是否依然能保持两条链的资产总量不变。

4)如何保障两条链的独立安全性。当两个系统发生交互时,难免会对彼此系统产生影响,如何在跨链交易的过程中保障自己系统和对方系统的安全性是个值得考虑的问题。若是安全性问题无法隔离,那一条链受到攻击,将影响整个跨链网络。

5)如何实现多条链之间的跨链互联。参照计算机网络的发展历程,独立的区块链网络终究要走上互联互通的未来,那如何将这些已有的和未来将要开发的区块链网络都联系起来成为统一的整体将是未来跨链网络最重要的问题之一。

2.3跨链协议设计原则

基于上文对实现跨链网络难点的分析,在设计一个支持跨链的体系时,可以参考以下原则[1],若是以下几点无法实现,则该跨链系统的安全性和稳定性是难以保障的。

1.资产在链之间的转移是自由的,既可从A链到B链,也可从B链到A链,且与谁拥有这些资产无关。

2.资产转移不能有对手方风险,没有第三方能阻止资产的转移。

3.转移交易必须是原子性的,要么发生,要么不发生。不能存在凭空损失或者创造资产,也不能有欺骗交易的发生。

4.跨链协议或系统应该具备防火墙的功能,一个链发生的资产丢失和创造不会影响另外一个链。

5.一条链的重构不能影响另外一条链,要么在重构概率非常低时再完成资产交易,要么在重构发生时能同步修改/作废之前发生的跨链交易,或至少做一些补偿性的操作。

 

第三章 跨链难点解决方案剖析

3.1难点一:如何保障跨链交易的原子性

3.1.1原子互换

原子互换[1]是保障跨链交易原子性的基础理论框架。原子互换,即原子性的互相交换。原子性是计算机领域非常重要的设计理念,如原子交易,原子操作等,通常指最小单位的操作,该操作要么成功,要么失败,不存在第三种中间状态。

为更直观的介绍原子互换协议,我们假设一个交换场景,通过例子来理解原子互换协议的原理。

1)  Alice在链A上有1个BTC,Bob在链B上有20个ETH,Alice想用1个BTC换Bob的20个ETH。Alice和Bob同时在链A和链B上都有钱包地址。

4.webp

2)  首先Alice随机生成一个密钥K,该密钥只有Alice知道,然后在链A上发起一笔给Bob 1个BTC的转账交易(交易①),该交易只有在获得Bob的签名以及提供密钥K之后才能完成。

3)  在交易①广播之前,Alice会先在链A上广播一个回撤交易(交易②),若交易①在48小时内未获得正确的密钥和签名,那么交易①支付的金额将退回给Alice。交易②广播出去后需获得Alice和Bob的共同签名,该交易才会生效。同时,Alice只有在交易②成功生效的情况下才会向网络广播交易①。

5.webp

4)  Bob此时看到Alice发来的交易②,若Bob愿意进行这次交易,则Bob会对交易②签名,当然Alice也会完成签名,这样回撤交易就能生效,Alice此时将交易①向全网广播。

6.webp

5)  Bob此时无法得知密钥K,只能通过向Alice支付20个ETH后才能获得密钥K,因此,Bob在链B上发起交易③,向Alice支付20个ETH,只有当Alice输入密钥K成功解密,并附上Alice签名才可获得这20个ETH。为防止Alice抵赖,保障自己能成功拿到密钥K,Bob也在广播交易③之前先发布一个需要Alice和Bob共同签名的回撤交易④,当Alice在24小时内未提供正确的密钥K并附上签名,就激活回撤交易④,20ETH退回给Bob。

7.webp

6)  Alice看到Bob发起的回撤交易④,Alice和Bob为了继续交易将会给该交易附上自己的签名,回撤交易④生效。此时Bob也会将交易③广播给全网。

8.webp

7)  Alice为了获得20ETH,将会对交易③附上自己的签名,并且输入正确的密钥K,此时交易③成功,Alice获得20ETH,Bob获得密钥K。

9.webp

8)  Bob拿到密钥K后,回到链A,输入密钥和自己的签名,最终拿到Alice的1个BTC。

10.webp

由上过程可知,原子互换协议并未将链A的资产转移到链B,而只是同时交换了链A和链B资产的所有权,链A的资产总量和链B的资产总量并未改变,因此原子互换协议只能实现链间的资产互换,无法实现资产转移。

原子互换是系统之间进行价值原子交易的基本框架,不仅可应用于区块链去中心化账本系统之间,还可扩展到中心化账本的系统之间,只要两个系统能提供回撤交易、时间锁定和密钥锁定的功能即可。

3.1.2 HTLC,哈希时间锁协议

哈希时间锁协议,即HTLC(Hashed Time-Lock Contract),是原子互换协议的具体实现,通过哈希锁和时间锁机制保障了交易的原子性。在不同的系统里,不管是区块链系统还是中心化的账本系统,其实现哈希锁和时间锁的方式都不尽相同,但原理是一样的,即只有满足一定的哈希条件或者时间条件后才允许交易生效。

若只使用哈希时间锁,只能实现跨链的资产互换,而非跨链资产转移,各链的资产总量不变,只是资产的持有者发生了变化而已。如果要实现资产的跨链转移,除了需要哈希时间锁保障交易的原子性,还需配合其他跨链技术,确保跨链交易的真实性,即2.2小节所述的需完成对其它链的交易确认。

哈希锁

在2.1.1小节介绍的例子中,Bob要如何验证Alice提供的密钥K是正确呢?这里最通常的做法是用哈希函数来实现。Alice在最开始的时候产生一个随机数K(即密钥K),用一个哈希函数对该随机数做计算得到M,即H(K)=M,Alice会将函数H和M告诉Bob,我们知道哈希函数的计算是不可逆的,几乎无法通过H和M反向计算得到K。所以Bob只能让Alice主动披露一个密钥K’,并用H和M来验证Alice提供的K’是否能通过哈希函数H计算得到M,若验证通过,则证明Alice提供的K’就是真实的密钥K。这种哈希函数锁定的方式就是我们所说的哈希锁,只有密钥K才能打开的锁。在比特币系统中通常用OP_HASH256操作符来进行哈希计算操作。

时间锁

在2.2小节介绍的原子互换协议中,需要交易在某个时间范围内不生效,如回撤交易需要在超时以后再被触发。时间锁在比特币系统中有两种实现方式[3]。

1)  CheckLockTimeVerify(CLTV)

比特币2015年BIP65的软分叉版本中提出了CLTV操作码,允许交易的输出在一段时间内被阻塞(交易的其它部分不受影响)。当CLTV操作码被调用的时候,会检测交易中的nLockTime参数,只有当nLockTime的时间大于或者等于CLTV参数指定的时间时,交易才会被完整执行,否则交易会被阻塞在memory pool中。

nLockTime是比特币交易最原始的参数类型,表示了该交易可最早被写到区块上的时间,或者是最小可写入的区块高度。nLockTime设置为0,表明该交易写入任何一个区块都将有效。

2)  CheckSequenceVerify(CSV)

比特币2016年BIP68/112/113软分叉时提出了CSV操作码,相对于CLTV提出的绝对锁定时间来说,CSV提出的是相对锁定时间。当执行CSV操作码时,系统会检查NSequence参数,若其表示的相对时间大于或者等于CSV参数的时间,则交易开始执行;否则交易会被阻塞在memory pool中。

Relative Locktime是2016年BIP68/112/113软分叉提出来的,参数由nSequence表示,是交易输入域参数的一种,表明了该交易最早能被写入区块的时间,该时间是相对于上次UTXO写入区块的时间而言的。

3.1.3 HTLA,哈希时间锁协定

哈希时间锁协定[4],即HTLA(Hashed Time-Lock Agreements)是Interledger[10]提出的HTLC泛化协定,不管系统是否支持HTLC协议,不管其是分布式账本还是中心化账本,系统和系统之间都能使用HTLA实现跨链交换,且支持多个系统之间的多跳跨链互换,如下图所示。Alice和Bob可以通过HTLA在区块链A、B、C之间进行跨链交换,且每一种区块链都支持不同的跨链协议,连接器在这其中起到了连接、隔离的作用,将支持不同跨链协议的区块链连接到一起,并且又起到了隔离的作用,使得区块链之间不会相互影响。例如,链A和连接器1的交易失败不会影响到其它链(而Interledger这种连接器的设计也是公证人机制的典型代表,详情可参考4.2小节对Ripple的介绍)。

11.webp

HTLA支持多种基于HTLC的跨链协议,主要的几种如下文所述。

1)有条件的支付通道(Conditional Payment Channels)

对账本的功能性需求:支持支付通道的HTLC更新

对账本的非功能性需求:支持高速交易

交易风险:

使用案例:闪电网络[5]

协议简介:支持有条件支付通道协议的系统,交易参与者需要在账本上预付一笔资金到一个双方共享的临时账户。当交易开始时,发送者会发送一个带有哈希锁和时间锁以及附带签名的更新到接收者。若接收者能在超时前反馈哈希锁的原像,则其可从临时账户中赎回资金,并且发送者接收者同时签名确认共享账户的余额变动。当发生争议时,账本将依据账本信息进行判断和仲裁。由于交易的传输和处理时间会被计算在超时的范围内,所以该种协议更适合支持高速交易的账本系统。

2)On-Ledger持有/托管

对账本的功能性需求:支持HTLC交易

对账本的非功能性需求:支持高速、低费用和高吞吐量

交易风险:

使用案例:以太坊第三方托管合约[6]、Ripple第三方托管[7]

协议简介:当账本支持HTLC协议时,并且该账本交易速度快、费率低、吞吐量高,那么参与者之间可以直接通过HTLC协议发起跨链交易。交易发起者将要传输的资金先放到账本提供的特定持有账户中,并且附带哈希锁和时间锁,只有当接收者在超时前能提供正确的哈希原像,账本账户才将资金发送给接收者,否则账本将会把资金退回给发送者。这种方式可由账本负责全权控制交易状态,交易双方没有额外的风险。

3)简单支付通道(Simple Payment Channels)

对账本的功能性需求:支持无条件的、单向支付通道

对账本的非功能性需求:

交易风险:有交易对手风险

使用案例:比特币CLTV通道[8]、Ripple PayChan[9]

协议简介:简单支付通道是建立的off-chain交易通道,无论账本交易速率如何,链下的通道可支持大规模快速交易。在建立单向通道时,发送者需要将资金存入链上和接收者共享的临时账户中,只有当双方对交易金额的数量和转移方向都同意且同时签名时,该账户的资金才可被取出。发送者传给接收者的是一个带哈希锁和时间锁的消息,当接收者在超时前提供了正确的哈希原像,发送者再发起一个新的带有签名的申明给接收者,使得接收者能接收到全部的交易金额。

在这种事后支付的情况下,接收者将承担较大的风险,他必须信任发送者,否则出现争议后,将无可信第三方进行仲裁。接收者控制风险的方式就是尽量控制交易金额,因此该种方式适合小额快速交易的场景。不过接收者也可以通过让发送者提前预付资金的方式,将交易风险转移给发送者。不过这种方式会使得系统变得复杂,因为一旦交易发生回滚,接收方需要重新建立单向支付通道,向发送方退回资金。

3.2难点二:如何完成对另一条链的交易确认

我们知道,一个区块链系统相对另一个区块链系统来说是封闭和独立的,系统和系统之间未知,也不兼容,他们之间并没有直接的沟通渠道,那发起跨链交易的时候要如何才能确认发送链的交易真的发生并且被它确认了呢?既然两条链是相互独立的系统,所以无论如何演变,两条链之间总会出现一个“中间人”的角色,承担了为两条链进行信息交互的角色,只不过在具体实现时这个“中间人”的角色有很多种演化的可能性。“中间人”可能是一个也可能是一群,可能是中心化机构也可能是分布式群体,两条链的中间人可能是同一个/组节点,也可能不同,甚至这个“中间人”可能是一条独立的链或者又只是一个功能模块而已。“中间人”通常会同时充当两个区块链的节点,这样只需在同一节点上再部署一个应用软件获取对方系统数据即可。

在交易确认这个问题上其实隐含了三层意思,第一层含义是跨链数据传递,即需要获取/收集发送链的数据,为交易确认做好准备;第二层含义是发送链对交易的确认,即发送链的交易并不是只要写入区块就能最终确认的,我们知道比特币的交易要等待6个区块才能大概率确认,否则可能较大概率发生区块重构的现象。发送链对交易确认的方式主要取决于其共识算法,不同的算法,对交易确认的方式和时间都不相同,跨链交易的速度也很大程度上受制于发送链的交易确认速度。第三层含义是目标链对发送链已经确认过的交易再次核实,即需要依据收集到的数据来做确认,到底发送链声称的跨链交易是否发生,以及交易是否得到最终确认。

“中间人”基本上完成了前者数据收集的工作,那交易如何确认,在哪确认,以及由谁来确认成为了问题的关键。根据不同的方案,我们可以将该过程主要概括为三种实现方式,即公证人模式、中继模式和榫卯模式。

12.webp

公证人模式是最为简洁的设计,即“中间人”不仅进行数据收集,还进行交易确认和验证。此时的“中间人”将成为可信第三方,可以是一个双方可信的中心化机构,也可以是一群节点。其验证交易是否正确的过程又将有多种演化,主要分为三种:单签名公证人机制、多签名公证人机制以及分布式签名公证人机制,详情可见3.2.1小节介绍。

13.webp

中继模式中,“中间人”仅仅充当数据收集者的角色,并将收集的数据转发给目标链,由目标链依据收集的数据去完成交易确认的工作。中继模式是个相对去中心化和松耦合的方式,两个链之间的设计和结构是较为独立的,因此也具备了更高的可扩展性。“中间人”更多地充当了中继桥梁的角色。详情可见3.2.2小节介绍。

14.webp

榫卯[3]模式表述的是一种通过数据强耦合关系来实现跨链互操作的模式。链A和链B通过“中间人”收集到对方的数据,并且将对方的数据纳入到自己的区块链体系中来。这种纳入不一定是记录到自己的区块中,有可能是记录到自己系统中的存储空间。但无论是哪一种方式,这都是一种强耦合的设计,双方要在系统设计之初就做好彼此关联的体系设计。若链A是已经存在的区块链,那链B要么只能单向嵌入链A,要么链A就要进行相应的升级改造。这种强耦合的结构通常用于侧链的设计中。详情可见3.2.3小节。

[3]榫卯,是古代中国建筑、家具及其它器械的主要结构方式,是在两个构件上采用凹凸部位相结合的一种连接方式。凸出部分叫榫(或叫榫头);凹进部分叫卯(或叫榫眼、榫槽)。本文用来特指一种采用强耦合数据结构实现跨链的技术模式。

这三种方式只是概念上较为宽泛的分类,便于大家更好理解,在实际应用过程中会更为复杂,可能会多种方式结合在一起使用。在理解跨链的技术原理时不必拘泥于模式的定义,而是要充分理解其如何实现对原链交易的确认,即数据如何传递,原链交易如何确认,接收链对原链交易如何验证即可。

3.2.1公证人机制

由上文可知,公证人机制(Notary schemes)[2]在解决发送链交易确认这件事情上,在结构上是相对简单和易于理解的方式。即有一个或一组节点能作为相对独立的角色参与到对双方交易确认的事件上来。总体说来有三种方式,一是中心化/单签名公证人机制,二是多重签名公证人机制,三是分布式签名公证人机制。

1)中心化公证人机制(Centralized Notary schemes)

中心化公证人机制也叫单签名公证人机制,通常由单一指定的独立节点或者机构充当,这是最简单的模式,通常,这种模式被用于某类单一或特定的交易。如下图所示,与其Alice和Bob两个陌生人直接交易,不如两者都和有信用背书的第三方机构间接交易更可靠(如支付宝模式)。由于Alice和Bob存在于不同的账本系统,所以,公证人在技术上需要同时兼容两个或者多个系统。其进行跨链交易的基本原理如下图所示。

15.webp

1.  Alice将账本A上的资产M转入公证人在账本A上的账户;

2.  此时,Bob也将账本B上的资产N转入公证人在账本B上的账户;

3.  公证人分别在账本A和账本B上确认资产M和N已分别到了公证人所在账户,则公证人在账本A上将资产M转交给Bob,同时在账本B上将资产N转交给Alice;

4.  这样,Alice和Bob就分别在账本B和账本A上收到了跨链资产N和M。

公证人在该交易过程中充当了交易确认者和冲突仲裁者的角色,从某种程度上来说,用中心化机构替代了技术上的信用保障,从技术可信转移到了传统的信用中介。这种模式虽然交易处理速度快,兼容性强,技术架构简单,但中心节点的安全性也成为系统稳定的关键瓶颈。

2)多重签名的公证人机制( Multi-sig Notary schemes

多重签名的公证人机制是由多位公证人在各自账本上共同签名达成共识后才能完成跨链交易。公证人的选取可以有多种方式,比如1)随机抽取公证人;2)对交易双方可信公证人节点列表求交集;3)直接采用可信联盟中的可信节点等。

多重签名的公证人组的每一个节点都拥有自己的一个密钥,只有当达到一定的公证人签名数量或比例时,跨链交易才能被确认。这种方式相较于单签名模式的安全性更高,少数几个公证人被攻击或者是作恶都不会影响系统的正常运行。但是这种方式要求两条链本身都要有支持多重签名的功能。

16.webp

比如,比特币的DMMS动态成员多签名机制(Dynamic Membership Multi-party Signature)就提供了多签名模式。DMMS对签名者的数量没有要求,是一个动态的签名者集合,POW的挖矿机制以及比特币区块头的数据结构允许矿工自由加入签名,并且签名的权重和矿工的算力成正比,这样不仅能避免女巫攻击也能一定程度上解决拜占庭将军难题[12]。在联盟链中,多签名的集合数量通常是固定的,且采用的是传统的多签名模式,这种多方集中参与的模式能尽可能保障交易的一致性和完整性。

强联盟模式(Strong Federation)[11]下的联盟式锚定侧链(Federated Pegged Sidechain)是多重签名公证人机制的典型应用场景,如Blockstream开发的Liquid项目就是代表应用,详见4.3.2小节介绍。

3)分布式签名的公证人机制( Multi-sig Notary schemes

分布式签名的公证人机制和多重签名的公证人机制最大的区别在于签名的方式不同,采用了多方计算MPC(Multi-Party Computation)的思想,分布式签名相较于多重签名,安全性更高,但实现也更复杂。

17.webp

如上图所示,分布式签名基于密码学技术,关键点在于,对于跨链交易,系统有且仅产生一个密钥,而且公证人组中谁都不会拥有完整的密钥,密钥是以碎片的形式随机地发送给每一个公证人节点,且碎片是经过处理后的密文,因此即使所有公证人将碎片拼凑在一起也无法得知完整的密钥,全面地保障了密钥的安全性。

门限多方计算,允许一定比例的公证人进行签名,换句话说,它能保障满足一定比例的公证人就能拼凑出完成的密钥。这种方法更灵活,也更安全,当少数节点遭受攻击时或发生各种错误时,并不会影响整个系统。

小结

公证人机制模式简单,更易于和对现有区块链系统进行对接,其较为中心化的处理模式也能带来更高的处理效率,并能较好地保障跨链交易的一致性。但其可信人的设定也同样会带来很多问题。1.公证人即便是以公证人组的形式存在,其数量也是有限,通常不会很多,是较为中心化的组件,风险更集中,更易成为黑客的攻击目标,从而影响账本的安全性。2.公证人节点的密钥丢失、不在线、宕机、被迫作恶等等情况将会让跨链交易陷入停滞或置于较大的安全风险中。3.去中心化账本只要有参与者存在就能永远存续下去,但中心化的公证人是否能和账本系统一样永续存在,是极大的挑战。

针对这些问题,业界也提出了很多的解决方案,比如说多重签名和分布式签名的方案,弱化了中心化组件的特性,从多种角度提高了系统安全性。

3.2.2中继

中继(Relay)是更灵活、易于扩展的跨链技术,其不依赖可信第三方帮助其进行交易验证,而是在拿到发送链数据后由接收链自行验证,自行验证的方式依据系统结构不同而不同,例如BTC-Relay依赖于SPV证明(如下文SPV小节所示),Cosmos还依靠验证节点签名数量等。

Vitalik在其互操作性论文[2]中提到Relay,指出链A和链B可通过对方的区块数据来进行信息同步和跨链函数调用,目前信息同步是可以做到的,但是跨链函数调用还没有成熟的技术方案。但两个链不能同时验证对方区块的有效性,否则将陷入互为嵌套的死循环。如链A拥有链B的区块数据,则链A需在链B交易确认的情况下才能进行确认,而链B因为同时拥有链A的区块数据,链B又需等待链A的交易确认,……,这样,交易确认就陷入了死循环。

中继模式看似简单,但实现形式却是多种多样,如Cosmos中的Hub、Polkadot中的Relay chain(中继链)、BTC-Relayer中的Relayer、比原链中的中继器XRelay[17]等都充当了中继的角色,一些侧链[4]的实现也采用了中继的模式,下文将介绍几种常用的中继实现方案。

[4]侧链表达的是两条链之间的关系,并不是特指某种跨链技术或方案,详情参见4.3小节对侧链的定义。

1)BTC-Relay

2016年Consensys团队推出的BTC-Relay是最经典的中继(Relay)跨链方案,实现了以太坊和比特币之间的跨链交易,使得以太坊的DApp应用可以支持BTC支付。由于比特币的脚本是非图灵完备的,难以支持复杂的应用,因此BTC-Relay只实现了从比特币到以太坊的单向跨链。比如以太坊中的某游戏应用需要支付ETH购买游戏道具,但用户只有BTC没有ETH,这时游戏就可以调用BTC-Relay智能合约,确认该用户确实在比特币网络进行了相应的转账支付交易,就可在以太坊的游戏中给该用户发放相应游戏道具。

18.webp

如上图所示,BTC-Relay本身为以太坊的一个智能合约,该合约的功能就是对比特币上的某些交易进行验证,并且提供验证信息给以太坊上的其它DApp用户。Relayer是从比特币获取区块头数据的一群用户,并拥有以太坊网络的账户地址,最快向BTC-Relay合约提交区块头数据的Relayer可以得到以太坊的交易费奖励。BTC-Relay智能合约获得区块头数据以后就可以依据SPV证明的原理对某交易进行验证,当比特币网络中的某交易确实发生,则可触发以太坊网络的特定交易或者智能合约执行。

2)SPV证明

SPV,Simplified Payment Verification,即简单支付证明,其中,“支付”是关键字,即该种证明只是对是否发生支付行为做验证,而不是对“交易”做验证。这两者有本质的不同,一个是验证交易是否发生,一个是验证交易是否合法正确。

本小节将以比特币为例介绍SPV证明的原理,如下表所示为比特币区块的数据结构,下图为比特币区块数据结构示意图。我们知道比特币一个区块的大小为1M,而区块头只占了80个字节(Byte),交易列表则占用了区块中的绝大部分空间。SPV的基本原理就是在只有区块头数据的情况下验证某交易是否发生,这样既方便快速也节省了大量的存储空间。

19.webp

如下图所示,区块中的交易是以Merkle[13]树的形式存储的,交易为树的叶子节点,交易的Hash值通过层层Hash计算生成了Merkle根哈希,该Merkle树中任何一个节点发生了变化都会让根Hash值发生变化,因此也能用Merkle根哈希来代表这一区块中所有叶子节点的交易。

20.webp

为了通过区块链头数据来验证某交易是否已发生,可以按照如下的步骤进行:

1.下载区块中最长链的区块头数据

2.计算该交易的哈希值,得到Tx_hash;

3.通过Tx_hash索引定位到包含该交易的区块

4.为验证该交易是否存在于该区块中,需重新计算与该交易相关的哈希值,直到根部,并将计算得到的哈希值与区块头中的Merkle根哈希进行比较;若一致,则表明该交易确实发生并存在于该区块中;若不一致,则说明该交易并未被打包到最长的链中,即未被验证确认。

关于步骤4,可用验证交易3的例子具体说明一下。为了验证交易3,系统会从全节点中获得交易3生成Merkle根哈希的路径:该路径为交易3->H(3) ->H(3,4) ->H(12,34) ->H(1-8) ->Merkle根。同时下载该路径上相邻节点的哈希值,如会获取H(4)、H(1,2)、H(56,78)节点的哈希值。然后再按照交易3计算的哈希值与相邻节点哈希计算得到Merkle根哈希,以此于区块头中的Merkle根哈希进行比较。

3.2.3榫卯

榫卯式是一种强耦合结构的跨链模式,通过某种方式直接将原链的部分数据嵌入到自己的区块或者存储空间中。在进行跨链交易时,直接通过本系统存储的原链数据便可完成交易验证。这种方式一般在系统设计之初就进行了双向考虑,通常用于主链+侧链的设计中,多采用协同挖矿模式,如下文所述的Aelf主链+侧链的架构。若主链已经存在,则侧链通常是单向锚定主链,即侧链锚定了主链的数据,但主链却无法识别侧链状态。

相对于公证人和中继的模式,榫卯式更直接,耦合度也更高,双方紧密地绑定在一起,一条链的状态将直接地反应到另外一条链的数据中。当一条链被攻击时,另外一条链也可能会受到影响。这种模式更适用于同一个系统的主链+侧链的设计,这让双方能成为有机的整体,又不失账本的相对独立性。

Aelf

Aelf为了提高自身平台的整体性能,采用主链+侧链的扩容架构,主链上可挂载多个侧链,侧链和侧链之间是独立的,一条侧链支持一个DApp应用场景,也可以是一组合约,每条侧链和主链在数据上是互相嵌入的。Aelf主要解决了资源隔离的问题,即不同的应用对资源和性能的需求不同,因此其在各自独立的空间运行是对系统资源的一种优化配置。

Aelf的主链和侧链高度同构化,采用主侧链联合挖矿的模式,如上图所示,即一组节点挖矿可对主链和侧链同时拥有记账权。矿工同时拥有主链和侧链的数据信息,因此主链通过矿工可获取侧链的区块头数据,并将其存储在自己的区块体中,这样主链在验证侧链的交易时,只需查看自己区块体中该侧链的区块头信息就能进行交易的验证(类SPV证明),同时也是对侧链交易的间接确认。由于主链将侧链的信息写入到了自己的区块体中,因此,对于这些数据的正确性,主链需要额外地再做一次共识,Aelf采用的是PBFT共识算法,确保该过程能快速完成,否则将影响主链的出块速度。

21.webp

不过,侧链不会将主链的数据写入自己的区块结构中,但是它依然会通过智能合约将主链的数据存储到侧链的数据空间中,以便对主链交易进行查询和数据验证。

3.3难点三:如何保障两条链的资产总量不变

我们知道跨链目前主要实现的两大场景,一个是跨链资产互换,另一个是跨链资产转移。在跨链资产互换中,本质上只是两条链上的资产同时交换了资产持有者,资产还是在原有链上,并未发生转移,因此每条链的资产总量是不会发生改变的。  而在跨链资产转移的过程,链上的可用资产是实际发生价值流转的,A链上的资产价值确实能流转到B链上,A链可用资产总量减少,B链可用资产增加,但是A链和B链的资产总和是恒定的。难点三其实主要是针对这种应用场景而言的。

保障资产总量不变,这里面隐含了两层含义,一是在正常的情况下,未被攻击的情况下如何保障资产总量不变;二是在异常的情况下,即受到攻击的情况下要如何确保资产总量的恒定。

在正常的情况下,虽未受攻击,但还是有网络状态不稳定、宕机、部分节点作恶或者部分用户作恶等情况的存在,因此,要保障资产总量不变,必须要确保资产转移的过程在两条链上都是精确记账。拆开了来说,就是要保障1.跨链交易在两条链上必须是同步的,即交易的原子性,要么都发生,要么都不发生。2跨链交易在两条链上都是真实有效的,被整个网络确认过大概率有效的,后期分叉的可能性很小。所以,正常情况下难点三的解决是依赖于难点一和难点二的,只要前面两者可以实现,难点三就自然不攻而破了。

在异常情况下,假如链A已经完成了一笔从链A到链B的跨链交易,如下图所示:

22.webp

随后链A被黑客攻击发生了分叉,之前的跨链交易已经不在链A最长的那条链上了,那么之前转账的账户可以发起一笔双花攻击,再次给链B发送一笔跨链交易,这样,链B将第二次接收到从链A某账户发来的资产,链A和链B的资产总和将因双花攻击而增大。由于资产总价值不变,那么链B中资产数量不对等的增多将导致链B的资产贬值,链B的每一个用户都要为此次双花攻击买单。

23.webp

同理,如果发生双花攻击的是链B,则链A和链B资产总和将减小,链A转到链B的资产由于不在主链上,就如同消失了一样,链A上发起转账交易的用户将受到损失。

24.webp

以上异常的情况发生的概率非常低,但是又不能排除其发生的可能性,所以,在做跨链设计的时候还是需要对其进行相应的处理。总体来说,有以下几种处理方向:

1.首先,隔离受攻击的链。由于链和链之间的通信通常不是直接进行的,而是需要经过第三方的,公证人也好,“中间人”也好,中继节点也好,这个第三方角色不仅承担了链接人的角色,也同时承担了隔离者的作用。当发现某条链出现安全问题时,隔离者应该拒绝该链所有的跨链交易请求,直至安全问题被解决。

2.冻结跨链交易创建的失效资产。对于异常攻击的第一种情况,链B凭空增多了资产,原因就是之前确认过的跨链交易由于链A重构,交易已然失效,对于这种失效的跨链交易,应该在链B对其相关资产实施冻结处理,以确保资产总量的恒定。

3.释放跨链交易冻结的资产。对于异常攻击的第二种情况,链A会因为链B被攻击而失去已经发生跨链转移的资产,由3.2小节可知,实际上链A转移的资产是冻结在链A的特殊账户里,如果攻击发生后,能释放冻结在链A特殊账户中的资产,即可为链A中的用户挽回损失。

以上3种处理思路更多的是逻辑的自洽,而非实际的落地方案。思路1是针对公证人机制而言的,也是较容易实现的,目前wanchain等项目已有落地方案。思路2和思路3的实现相对复杂,目前还未有项目发布具体的技术实现方案,更多的可能将倾向于动用系统的管理员权限去做特殊处理。由于跨链项目整体的成熟度较低,对于这个低概率问题的思考和处理方案也相对滞后,期待未来更完善的解决方案。

3.4难点四:如何保障两条链的独立安全性

安全性一直是区块链领域的重中之重,在跨链交易的过程中保障两条链的安全系数不会被降低,或者不被过度降低是一个重要的命题。总体说来,可从以下几个方面进行考虑:

1.适度隔离。两条链之间应该保持各自的独立性,尽量通过第三方节点或者独立的模块处理跨链事务,当跨链交易发生问题时,也不会影响链本身交易的处理。特别是对于高度耦合的系统设计,如榫卯式模式,需要更多地从其他角度进行系统的安全性保证。

2.检测安全事件。系统架构上做了隔离只是第一步,重要的是这个第三方节点或者独立模块要具备检测安全事件的能力,并且具备响应能力。

3.跨链交易正确性。这一点是最基础的,只有在保障跨链交易正确和安全的前提下才能保障其相关的区块链体系不受影响。而这主要由跨链交易的原子性以及保障交易最终确认性来完成的,详情可见3.1和3.2小节,此处不再赘述。

目前的项目对于跨链方案设计有基本的安全性、独立性考虑,但是对于更深入的安全措施的研究还有待加强,比如说安全性问题发生后的补救措施、奖惩机制、以及对安全事件的检测能力等问题还需进一步探讨。

3.5难点五:如何实现多条链之间的跨链互联

计算机网络让原本独立的计算机连成了局域网,局域网发展为城域网,城域网演变为广域网/互联网,互联网则前所未有的将世界人民联系在一起。对于区块链这项新兴的技术/产业来说,现在还只是处于“单机”时代,链和链之间的互通需求将会随着区块链的应用落地越来越强烈。

我们上文讨论的主要是两条链之间的互联互通,那如何实现多条链的连通呢?其实,这个问题隐藏了两个潜在问题:一是已经存在区块链系统如何实现互联互通;二是对于未来要开发的区块链,如何为其互联互通做好准备和铺垫。本小节将从这两个方面分别进行阐述。

3.5.1主动兼容

主动兼容方案是自上而下进行的,主要针对的是已有的区块链系统,先有了上层不同的区块链应用系统,再进行底层的跨链机制研发。通常这些系统都是异构链,需要一一进行对接,不过一一对接也有不同的方案,如下图左侧所示。一种是两两链之间直接进行互联,这种方式若无统一的底层协议支持,是最费时费力的了,四条链之间需要建立6条链接通路才可实现两两互联,且两两之间的通路需要定制化实现。这种方式虽然可扩展性不强,但能保障较好的安全性和独立性,一旦有攻击事件发生,难以影响到整个网络。

25.webp

第二种是建立一个第三方跨链平台,链和链之间都通过这个跨链平台进行间接互联,这样要实现两两之间的互联只需要四条链接通路即可,如上图所示。但这样,跨链平台将成为整个跨链网络的关键点和性能瓶颈(目前还不一定是瓶颈,但未来有可能是),一旦跨链平台受到攻击,那整个跨链网络都将陷入瘫痪。

3.5.2被动兼容

被动兼容方案是自下而上进行设计的,主要针对的是未来还未开发的区块链体系,先搭建好底层的跨链平台,让其它区块链系统能简单、便捷、安全地接入进来,共享跨链平台的系统便利。跨链平台会优先将适用于各链之间进行互操作的系统和协议标准开发出来,后续只需在其已有的平台上进行符合标准的开发就可建立天然具有系统内跨链功能的区块链。不过这里说到的跨链是指的符合这套协议标准的链之间能简单地互相连通,若是要和该体系外的其它链之间进行互操作,还需要开发单独的中间件来进行连通。此外,不同的跨链平台其支持的区块链类型也可以不同,如Cosmos支持的是同构链,而Polkadot则可支持异构链,两者都有很高的可扩展性,详细介绍可参考4.5.1的Cosmos和4.5.2小节的Polkadot项目介绍。

3.6小结

本章从问题出发梳理了一个跨链项目将要面对的主要问题,并给出了业界的一些主流解决方案和解决思路。但并不是每个涉及到跨链的项目都需要解决以上所有问题,而是各取所需:若要实现跨链资产互换功能,解决难点一即可;若要实现跨链资产转移,解决难点一和难点二即可,若是能在此基础上尽量解决难点三和难点四那将得到更安全和稳定的系统;若要建立一个跨链平台,那么难点五是必须要考虑的问题。

对跨链技术的研究现在仅仅是个开始,跨链过程中的众多难题还需要一步步去解决,特别是跨链安全性的研究现在还较为缺失,期待未来有更多优质的跨链项目能推动区块链网络的建立和完善。

 

第四章 案例剖析

跨链技术最早方案提出者可以追溯到2014年BlockStream团队对比特币侧链技术的研究,随后相继有了闪电网络、雷电网络对哈希时间锁HTLC技术的应用,Ripple对公证人机制以及HTLC等协议的综合实践,再到现在Wanchain、Cosmos、Polkadot等项目对跨链平台不懈的追求与实践。

本小节将从技术复杂度以及技术演进方式两个大维度对现有的跨链项目做一个整体的介绍。

4.1链下通道

哈希时间锁是跨链技术非常重要的机制,它确保了跨链交易的原子性,本小节介绍的闪电网络和雷电网络虽然并没有真正意义上实现跨链,但其对哈希时间锁或者说原子互换协议的应用是非常经典的,故此也摘录出来。它们的思路设计非常简单,都是将大量的高频小额交易放到区块链之外进行从而扩展区块链的交易处理能力。下面我们将分别介绍这两个典型的项目。

4.1.1闪电网络

闪电网络[5]是在比特币上运行的一个项目,其主要的技术点有两个,一个是序列到期可撤销合约(RSMC,Recoverable Sequence Maturity Contract),另一个是哈希时间锁(HTLC,Hashed Timelock Contract)。前者解决了链下交易的确认问题,后者解决了支付通道的问题。

RSMC类似于一种准备金机制,交易双方在一个链下交易池内放入一定量的资金作为双方交易的共有资金,并在链下记录两者的资金占有份额。这个交易池就是一个“微支付通道”,当交易双方之间发生交易时,交易池中的共有资金占比将发生变化,新的比例数据需要交易双方共同签字确认,同时旧的比例份额版本作废。整个过程都是在链下完成的,因此不占用区块链的资源。当交易的一方需要提现时,最终资金占比份额才被写入区块链网络,并被区块链最终确认。

在任何时候,交易的任何一方均可以提出提现的请求,这时只要提供一个双方都签过名的资金分配方案即可。为了防止这个过程有人提交作废的资金占比份额进而获利,另一方如果能证明这个方案不是最新结果,则造假方将被没收资金给质疑方。这样可以保证交易结果的正确性。此外,为了鼓励大家使用链下支付通道,RSMC设置了这样一个机制,就是首先提出要提现的一方资金最后到账,而对方先获得资金池里面相应的资金。

哈希时间锁用来提供限时转账的功能,也即可以实现交易双方之间安全的转账,同时可以防止因交易取消或推迟无法拿回资金的情况。通过智能合约,转账方会先将约定的转账费用冻结,并提供一个哈希值,如果有人能提供一个字符串使得它的哈希跟已知值匹配,则此人可以获得该笔冻结的转账费。一般情况下,能提供与哈希值匹配的字符串意味着转账方授权了接收方来提现。

当有多个用户之间存在“微支付通道”时,这些通道相互连接,便可以形成“通道网络”,这便是闪电网络。相互转账的双方并不需要有直接的支付通道连接彼此,也可以通过中间人的方式实现相互转账。比如有甲、乙、丙三个用户,其中甲和乙、乙和丙之间存在“微支付通道”,甲想转账给丙。这个时候只要通过甲转账给乙,同时乙转账给丙就可以实现甲对丙的转账。这个过程由后台自动执行,对用户来讲,感觉就像甲直接转账给丙一样。

当然,闪电网络也存在一定的缺陷。第一,用户无法支付给不在线的人,也即无法离线支付。这种情形有点类似于微信转账时收钱方需要确认收款才能到账一样。第二,闪电网络更适用于小额支付,对于大额付款并不理想。这是因为在闪电网络中冻结的资金不会太多,较大的转账金额可能需要多个通道共同支付。第三,闪电网络容易出现匹配失败的情况。当其中一个交易方没有回应,用户可能需要等待数小时才能关闭付款通道,之后才能通过替代路线重新发送资金。

4.1.2雷电网络

雷电网络[16]同闪电网络极其类似,只不过雷电网络是应用在以太坊上的链下扩容方案。基本原理同闪电网络,在此不再赘述;下面简单介绍一下雷电网络不同于闪电网络的地方。

第一,雷电网络的支付通道是被链上的一个智能合约所控制的,而闪电网络是基于多重签名地址建立的支付通道;

第二,雷电网络引入了更为通用的“智能条件(Smart Condition)”,实现智能转账(smart transfers),HTLC成为其可实现的一个子集,除了哈希锁、时间锁等条件,它还可设定更复杂的条件;

第三,在设计细节上雷电网络也不同于闪电网络。比如,雷电网络中用来更新通道余额分配的报文,增加了序号字段和等待期字段以便识别作废的报文;在余额分配中,申明新余额分配的方式是出示余额分配的净增减,而不是重新申明余额等。

4.2 跨账本多跳协议

之所以说跨“账本”,而不是跨“链”,是指该协议不仅支持去中心化区块链账本,还支持各类中心化账本,是对跨链应用更广泛的支持。这其中的典型代表Ripple主要采用了HTLA和公证人的机制来实现跨账本交易。

4.2.1 Ripple

Ripple是第一个提出利用区块链技术来实现跨账本[6]资产互换的项目,其主要致力于解决跨国汇款问题,通过Ripple网络能更快更经济地进行国际汇款。Ripple在底层的Ripple共识账本之上定义了Interledger Protocol(ILP,跨账本交易协议),该协议能够在实现跨账本转账的同时消弭交易中存在的对手方风险。ILP能够兼容任何在线记账系统,除了区块链系统以外,银行、移动支付等传统金融账本也能够接入该系统实现跨账本交易。具体而言,ILP将在交易者账户与一个Ripple本地账户之间建立起双向锚定的关系,实现二者的同步变化,确保交易过程的透明性。同时,对于没有直接支付通道的两个账本系统,通过ILP可实现多跳间接跨账本交易。

[6]Ripple的跨链是广义上的跨链,因为其包含了中心化的银行账本等形式。

ILP的核心功能是建立托管账户并确保跨账本交易的安全。举例来说,A公司使用ILP向B公司汇款100美元,假设A公司资金存储在银行M,是人民币账户,B公司资金存储在银行N,是美元账户,则通过Interledger协议的汇款流程如下所示:

准备工作:1.A公司在银行M创建一个Ripple独立账户(托管账户1),该独立账户将通过Interledger Module和其在Ripple的账户1进行同步;2.B公司在银行N创建一个Ripple独立账户(托管账户2),该独立账户将通过Interledger Module和其在Ripple的账户2进行同步;3.流通性提供商会在银行M和N分别创建一个Ripple独立账户(托管账户3、4),该独立账户将通过Interledger Module和其在Ripple的账户进行同步。

1.  A先挑选一家汇率最合适的流动性提供商,假设人民币和美元的汇率为6:1,然后在银行M向其托管账户1汇款600人民币,并同时在Ripple的应用上填写汇款信息、收款地址以及超时时间等;

2.  这些信息将被Interledger Module打包发送给Ripple上的账户1,Ripple账户1对托管账户1中增加的600人民币进行记账,并将转账证明发给验证人(Validator,一种公证人节点);

3.  对于收款方,B公司在Ripple的应用上填写汇款地址、超时时间等信息,在Ripple网络中广播,此时之前A挑选的流动性供应商会先行垫付转账款给B,通过其自己在Ripple的账户3转100美元给Ripple账户2,并将转账证明发给验证人(Vadilator);

4.  验证人对两个转账证明核对;核对通过后,IPL账本将按照Hashed Time Lock Agreement原子交易协议同时进行清算;

5.  清算完成后,Ripple账本将通过Interledger Module将账户变动同步到其所对应的托管账户,然后托管账户1中的600人民币将汇给流动性提供方,托管账户2中的100美元汇给收款者账户,从而实现收款人与汇款人之间的跨账本交易。

26.webp

 

4.3 侧链

侧链(Sidechain):依据Blockstream的定义[1],侧链指的是能通过其他区块链来验证数据的链,但是Vitalik Buterin在其关于链间互操作的论文[2]中指出这种定义过于宽泛且不严谨,否则基于BTCRelay,以太坊就是比特币的一条侧链。我们通常说“链A是链B的一条侧链”,这里潜在的语义是说链A从属于链B,然而,事实上这种从属关系并不存在。“侧链”或者“双向锚定侧链”出现的语境是指一条链是某一资产的母链,其它和此资产锚定的资产所在的链就是锚定的侧链,这种从属关系是基于资产的,而不是基于链本身的。Vitalik提议,我们最好这么描述链A和链B的关系更为精确:“链A对链B可读”或者“链A的中继在链B上”。

笔者更倾向于认同Vitalik的观点,并且认为侧链更多的是一种关系表述,没有从属关系,因为从数据结构上来说,可以彼此互为侧链。侧链也不是专门指某一种跨链技术,因为我们有多种方式来实现侧链中资产跨链,比如公证人机制(如Liquid、亦来云)、比如榫卯式(如Aelf)都可做到。

4.3.1 单向/双向锚定侧链

单向/双向锚定[7]侧链(Pegged Sidechain)是最早实现资产跨链转移的案例。对比特币侧链最早进行全面研究的是BlockStream团队,并于 2014 年 10 月发布侧链白皮书[1],全面分析了双向锚定(Two-way Pegging)跨链方案。此处的“锚定”(Pegged)并不特指某种具体的跨链技术,而是指在跨链过程中要盯住对方链数据。本质上来说这种方式就是需要通过对原链数据的校验来完成对原链交易的确认,换句话说“锚定”就是对完成对难点二(如3.2小节所述)的另一种表述。

侧链可实现资产在不同的链中转移,但仅限于两条链相互之间。简单来说,链A的资产转移到链B的过程中只需要两步:1.链A将需跨链转移的资产转移到链A某地址进行冻结。2.链B确认链A已完成资产冻结,并释放出等比例的资产到链B上。

上述两个步骤中,最重要的首先是确认这些资产在链A中是否是合法有效,然后确认该资产是否真的在链A中实施了有效冻结。对于这两个问题,其实只需验证该跨链冻结交易在链A最长的链中,并且完成了交易确认。而验证交易是否有效的方法最简单常用的就是SPV证明,除此之外,加上确认期和竞争期的设计,将大大提高跨链交易的安全性。

[7]Pegged翻译为“锚定”或是“楔入”都可,本文统一采用“锚定”来描述

1)确认期

区块链是分布式链式账本,对交易的确认基于多数参与者的共识,交易打包进区块后并没法立即100%确认,因为在发展演化的过程中由于网络延时或者恶意攻击的出现,难免会导致分叉的出现,最长的那条链是会随着网络状态而动态变化的。因此确认期的设计就是为了等待交易得到足够多后续区块的确认,得到足够的算力保障(对于POW共识而言),这样交易被确认固化的可能性就更大。确认期的时间长短是可配置的,需要在安全和效率之间寻找折中的参数。如果确认期时间太长,固然安全性得以保障,但跨链交易速度却会非常缓慢;而如果时间太长,交易速度得到保障,但是交易安全性风险又会提高,若是主链发生重构(最长链路径发生变化),则可能引发侧链上一系列严重问题等。

2)竞争期

确认期过后,资产转入侧链后,还需要经过一段时间的竞争期,在这段时间,新转移的资产将无法自由使用。设计竞争期的目的还是为了避免主链重构,防止双花攻击,也为了侧链能完成交易确认。一旦主链重构发生,之前主链上锁定的跨链资产将失效,而流入侧链的资产已无法退回主链,只能留在侧链,这样将稀释整个侧链的单个资产价值(资产数量不变,但是价值减少了)。

对于侧链,实现方式有很多,主要有如下两种类型。

3)对称式双向锚定侧链

对称式双向锚定侧链即两条链之间双向锚定,资产可双向流动,且锚定的方式都相同。以基于POW工作量证明机制且依赖SPV证明的区块链为例,其资产交换的总体流程如下图所示:

27.webp

1. 当链A想将资产转移到链B,则链A需要先发起一个转账交易Tx1(除了附带链A冻结地址addr1,还指定了链B的接收地址addr2),将资产M1先转移到链A上指定的地址进行冻结。

2. Tx1交易提交后,需等待一个确认期,以便有足够多的区块和算力保障该跨链交易Tx1得到确认,降低重构对跨链交易的影响。

3. 确认期过后,包含Tx1的SPV证明将被发送到链B,链B知晓链A已确实发起并冻结了资产M1,则链B按照一定的比率,在链B上生成对应数量的M2,M1的价值转移到M2上,链A上的资产也就转移到链B上了。

4. 链B在产生M2后,需等待竞争期过后才可解锁M2,以避免链A重构发生双花攻击。

5. 解锁后M2可在链B上自由流通。

6. 若要将M2再从链B转移到链A上,同步骤1、2、3、4。

4)不对称双向锚定侧链

不对称双向锚定是相对于对称双向锚定而言的,双方采用的交易确认方式是不同的。例如侧链的数据结构中嵌套了主链相关的信息,可对主链进行实时的追踪,因此当主链向侧链发起跨链交易时,侧链无需SPV证明即可验证主链的交易。而主链无法知晓侧链的状态,因此在侧链发起跨链交易时还需要侧链提供SPV证明来进行验证。这种方式一方可采用中继/公证人的模式进行交易确认,另一方则采用了嵌入数据结构的榫卯式模式进行直接验证。

4.3.2 Liquid

Liquid[8]是BTC的一条侧链,是多签名公证人机制的典型代表。其专门为满足交易所、做市商、经纪人的BTC快速转账需求而设计,因此Liquid侧链上采用的是联盟链的多重签名模式来确认交易块,可大大提高交易速度。Liquid的侧链建立在Elements代码库的基础之上,并使用Blockstream[9]的Strong Federation技术来支持链之间的1:1的比特币交换,转移到Liquid的BTC都将被冻结在比特币账户中,而Liquid上将增加相同数量的L-BTC,此资产转移交易的确认需要Liquid中联盟成员的多重签名确认。若要将L-BTC从Liquid转移到比特币账本,需在交易确认后销毁Liquid上的L-BTC,并在比特币账本的冻结账户释放等量的BTC。

上文所述的Strong Federation是使用多重签名的载体,其网络节点主要分两种:1)区块验证者(Blocksigners):为侧链中的交易进行签名验证,达成侧链的区块共识。2)观察者(Watchmen):当资产从侧链转移到主链时,负责对主链上的交易进行签名认证,表明侧链资产确实已销毁,主链可解冻对应数量的资产。

这两种节点在功能上是独立的,区块验证者(Blocksigners)负责侧链的共识,观察者(Watchmen)负责跨链交易验证及管理。在联盟式锚定(Federated Peg)模式中,一组在地理位置和管辖权分散的公务节点(Functionaries)将被系统选出,它将同时承担区块验证者(Blocksigners)和观察者(Watchmen)的角色,并且它将同时运行两个链的节点程序(比如比特币节点和Liquid节点),以及一个能同时观察两者状态并执行跨链交易的软件程序。公务节点(Functionaries)就是执行多重签名的联盟节点。

[8]Liquid官网:https://blockstream.com/liquid/

[9]BlockStream是比特币的侧链开发项目,官网:https://blockstream.com/

4.3.3 Elastos

Elastos亦來云[14]为了减轻主链的压力,同时为DApp提供更好的使用体验,采用了主链+侧链的分层架构。主链只担负ELA的流通职责,DApp运行在侧链上,通过亦来云的侧链转账机制完成价值在主链和侧链间的安全转移。

主链通过与比特币联合挖矿共享算力,其主链作为比特币的一条辅链存在,在不增加能源消耗基础之上,依托比特币POW机制保证可信度。主链和侧链是一对多的关系,使用非对称的双向锚定。侧链只保存一份主链的全部区块头信息是可行的,如果主链需要保存所有侧链的区块头信息,其可扩展性将非常差,因此亦来云的主侧链架构上不能够使用对称的基于SPV的双向锚定。

亦来云资产从主链到侧链采用SPV证明确认主链交易,而资产从侧链到主链采用多签名公证人机制来保障转账安全,当超过2/3的公证人对跨链交易签名后,该跨链交易就得到了主链的认可。如下图所示。

28.webp

[10] 示意图摘录自亦来云侧链白皮书

29.webp

[11] 示意图摘录自亦来云侧链白皮书

4.4跨链平台(主动兼容型)

主动兼容的跨链平台通常是指主动去兼容现在已有的区块链项目,他们通常是有不同数据结构、不同共识机制的异构链。Wanchain是这种类型的典型代表,它会一条一条地去适配已有的异构链,并将其接入到Wanchain跨链平台。

4.4.1 Wanchain

Wanchain(万维链)([20]、[21])是2016年发起的区块链跨链平台项目。Wanchain是一个异构跨链框架,主要基于分布式公证人模式实现跨链。该模式主要采用了密码学“安全多方计算(Secure Multi-Party Computation)”和“门限密钥共享技术(Threshold Key Sharing Scheme) ”来实现验证人的分布式签名。

Wanchain为不同区块链网络提供资产跨链转移通道的基础设施,实现资产由其他公有链、联盟链转入Wanchain,再由Wanchain转回原链,以及多种资产在Wanchain上交易等功能。Wanchain3.0打通比特币与以太坊网络连接,当用户向Wanchain发送一定数量的BTC时,资产将被锁定在跨链账户上,由Wanchain的多个Storeman完成交易合法性验证,验证成功后用户在Wanchain上获得1:1映射的WBTC(即Wanchain上特有的BTC);同样的方式可将ETH转为Wanchain上的WETH,WETH和WBTC可在Wanchain上的交易流通;用户将WBTC换成原链的BTC或将WETH换成原链的ETH即可解锁,实现跨链资产转移;资产返回原链后,WBTC或WETH会被销毁。即通过Wanchain实现BTC↔WBTC↔WETH↔ETH之间逐一转换。

30.webp

[12] 摘录自 Wanchain 白皮书

Wanchain上将验证节点设计为三类:普通验证节点(Validator)、跨链交易证明节点(Voucher)和锁定账户管理节点(Storeman)。其中Voucher负责在跨链交易过程中提供原链账户与锁定账户之间交易的证明,Voucher将用户跨链交易证明提供给Storeman,Storeman收到证明后完成后续跨链操作,Validator负责wanchain的共识记账。将交易和验证分开,一定程度规避了合谋作恶,用户发起跨链交易请求后Wanchain确认原链交易的方式如下:

(1)用户在原链的token会被发送至Wanchain在原链的锁定账户,交易由哈希时间锁(Hash Time Lock)锁定;

(2)Voucher验证确认了原链上的交易后,Storeman会在Wanchain上发起跨链的合约交易,将需要映射的Wtoken(Wtoken此处指Wanchain上与原链token等量对应的映射token)转移至用户在Wanchain上的跨链账户,且锁定;

(3)用户钱包检测到跨链合约锁定的交易后,释放密数(Secret)到跨链合约中;

(4)Storeman通过密数得到原链token的控制权,从而实现对原链交易的确认。

如果用户没有在哈希时间锁的范围内释放密数,哈希时间锁到期后跨连合约的交易自动失效,用户重获原链token的控制权。

Wanchain采用安全多方计算+门限密钥方式。Storeman进行账户锁定操作时,锁定账户的私钥以碎片形式分散到多个Storeman手中,超过一定比例的Storeman见证人完成签名才可最终确认。且为避免合谋作恶,Storeman需缴纳一定量的保证金才能参与验证,作恶会被扣除,正常保障跨链的运行则会获得奖励。为保证原子性,Wanchain采用哈希时间锁的方式将跨链交易锁定,保证不会出现用户或Storeman只完成单侧交易。同时,Wanchain上还为Storeman设有与原链token对应的额度:当从原链跨到Wanchain上时,原链token被锁定,Storeman额度冻结,生成等量的映射Wtoken;从Wanchain跨到原链时,Wtoken销毁,恢复Storeman额度,原链token解锁。以Storeman额度的逻辑限制其跨链交易承载能力,降低Storeman作恶风险。

在Wanchain的跨链机制中,由于不改变原链,需要根据原链的特性适配开发,这也是异构跨链的难度所在。跨链速度受到等待原链的交易确认的影响,在当前比特币和以太坊的出块速度下,需要数分钟完成一次跨链交易。

4.5跨链平台(被动兼容型)

被动兼容的跨链平台主要是为未来的区块链项目建立了一个同构化的底层平台,它是被动地去兼容其它的区块链,或者说是其它的区块链来主动地兼容它。基于这个平台可快速开发独立的区块链并且可方便地实现跨链互联互通。Cosmos和Polkadot是这类项目的典型代表。

4.5.1 Cosmos

Cosmos[15]是由Tendermint团队于2017年发起的跨链平台项目,支持模块化建立Cosmos同构链,也支持通过Bridge的方式对接外部异构链。其最大的特点是Cosmos系统内的所有链(Zone)都是同构链且可更方便地支持资产跨链流转,所有的Zone都共享通一套网络协议、共识机制以及数据存储方式,可模块化地通过API接口组装新的Zone区块链。

1)Cosmos总体架构设计

Cosmos的整体架构如下图所示,Hub上可以连接很多Zone(Hub是一条链,每一个Zone也是一条链),Cosmos Hub维护了一个多资产分布式账本,掌握了与其相连的所有Zone的资产种类以及数量情况。每一个Zone也是能维护多资产类型的账本,其可接收其它Zone传来的资产,也可将自己的资产转移到其它的Zone。每一个Zone会同步Hub的状态,但Zone和Zone之间的交流只能通过Hub间接地进行。每一次跨链资产转移都需要发送Zone、Hub、和接收Zone的共同确认才可成功。你也可以认为Zone是Hub的一种资产子分片。

Zone和Zone之间通过消息(数据包)进行信息传输,基于IBC(Intra Block Communication)通讯协议。某空间内的区块将要传递的数据打包成标准的IBC数据包,最终通过网络层的UDP或TCP协议完成传输。

31.webp

如下图所示,可将Cosmos体系可分为4层架构。分别为数据层、网络层、共识层以及应用层。

32.webp

Ø数据层

数据层为最底层的数据存储持久化层,包括空间内区块链的账本数据。Cosmos采用轻节点策略,无需存储大量重复性数据,即每个节点无需像基于POW共识节点那样下载从头到尾所有的区块头,用以挑出来最长的区块链,受益于Tendermint拜占庭共识机制,节点只需验证所有验证人的签名集合即可达成共识。只要验证人不频繁变更,轻节点就不用频繁地更新验证人集合数据。

Ø网络层

网络层实现了不同空间节点之间进行数据传输。Cosmos的网络通信基于IBC通讯协议,其传送的数据包为IBC数据包,底层基于TCP或UDP协议。

Ø共识层

共识层为Cosmos设计的关键技术点,其通过Tendermint Core配合ABCI接口实现了基于不同共识算法的区块链之间建立起无障碍交流机制。使得不同的区块链空间能方便快捷地连接到Cosmos HUB成为可能。

Ø应用层

由于共识层ABCI通用接口的存在,应用层可支持不同编程语言、不同类型的区块链应用,并且Cosmos还开发了一套Cosmos SDK,让更多地应用能更快速地兼容到Cosmos网络,实现可插拔式加入。其中,共识层Tendermint CORE和应用层直接通过Tendermint SOCKET协议进行通信。

2)Cosmos Zone资产转移机制

Cosmos Zone之间的资产转移主要是依托于IBC通讯机制。Cosmos定义了两种IBC消息类型:一种是IBCBlockCommitTx,将发送链最新的区块头部信息传递到目标链,这样目标链就获得了发送链的Merkle Root。另一种是IBCPacketTx,为了传递跨链的交易信息(payload信息),该消息附带着发送链的Merkle Proof。接收链通过Hub作为中继,接收来自发送链的信息,并通过Merkle Proof以及验证节点的签名情况来判断发送链的交易是否最终确认。

如下图所示,为Zone 1空间向Zone 2空间传递代币的消息时序图,我们将以此为例来说明IBC通讯协议的详细过程。

33.webp

1)  Zone 1发起IBCBlockCommitTx交易,将新区块头部信息(包括所有验证人的公钥)传递到HUB;

2)  Zone 1发起代币转移交易;

3)  Zone 1对该交易进行逻辑验证,是否合法有效;

4)  将该合法交易放到面向HUB的消息队列中;

5)  Zone 1的中继程序监听到队列中有新的消息,即生成Merkle Proof,并作为IBCPacketTx的Payload发送给HUB。(在每个空间内都有一个独立的第三方中继程序,它负责从原链生成Merkle Proof并组装成Packet,并发起交易,传递到目标链上);

6)  HUB验证Merkle Proof是否有效,若有效则发送消息给Zone 2(HUB给Zone2发送消息的过程同步骤1~6);

7)  Zone2在接收到HUB的消息后验证Zone1为真实有效的交易,发送消息给HUB确认可接收来自Zone1的资产;

8)  HUB给Zone2发送消息,将资产发送给Zone 2,完成了资产在不同区块链之间的一次转移;

如果由于攻击或者网络原因,Zone 2发送给HUB的消息丢失,如下图所示,则HUB在等待一段时间后,发送消息告诉Zone1当前交易timeout,交易失败。

34.webp

3)Cosmos-Bridge

Cosmos和系统外的其它异构链进行跨链交易需要通过Cosmos Bridge进行,Bridge-Zone将专门负责和原链的对接,包括对原链的交易确认、在Cosmos上创建/销毁对应的跨链代币等工作。

以以太坊到Cosmos Bridge-Zone资产转移为例。以太坊内部将部署一个bridge-contract的智能合约,负责以太坊到Cosmos的跨链交易处理。用户如果需要转账到Cosmos,可直接将ETH转移到bridge-contract合约即可,转移到合约后ETH资产即被冻结,除非跨链交易失败或者bridge-contract检测到Cosmos有资产转移过来(bridge-contract会追踪Bridge-Zone验证节点的状态,Cosmos-Bridge可以和Cosmos Hub共享同一组验证节点)。Bridge-Zone的验证节点将对以太坊上bridge-contract的交易进行验证,若验证通过,可以在Bridge-Zone生成对应的Cosmos-ETH。将Cosmos-ETH转移到以太坊上过程也类似,只不过Bridge-Zone转到以太坊的Cosmos-ETH将被销毁,而冻结在bridge-contract的ETH会被解锁,并转移到某账户地址中。

4)Tendermint共识

Cosmos采用Tendermint共识机制,它是衍生于经典拜占庭共识算法(PBFT)+POS的一种共识策略,相较于PBFT,它保证区块的顺序增加,不容许链的分叉,若区块N未增加到链上,那区块N+1也无法提交,这是一种牺牲了可用性来保证安全性的机制,也消除了链由于分叉带来的复杂性。但若系统的作恶验证人超过了1/3(这里的1/3不是指的验证节点数量,而是资产量,即融合了POS的概念),使系统产生了硬分叉,则需要启动特别协调机制来进行外部调节,动用惩罚、法律等手段来打压作恶者并协商恢复网络。

Tendermint共识引入了LOCK的概念来确保每个区块高度只有一个块能够被提交,也就是保证了不会被分叉。如下图所示,展示了Tendermint共识算法的详细流程:

1)  提议者发起一个新区块的提议,系统进入Prevote阶段;

2)  每个验证人依据收到的信息进行判断,若交易合法则Prevote block同意这一阶段的交易请求;若发现交易不合法或者因为网络原因未收到,则Prevote Nil不同意请求;

3)  系统等待,直到收到2/3的验证人prevote Block的签名集合(称为Polka),之前提交Prevote的验证人将被锁定在当前的区块上,只能对该区块进行下一轮的投票(保证了每次只能在同一高度提交一个区块);若未收到2/3的Prevote,则跳过对该区块的投票,转而对下一个区块的申请进行处理;

4)  系统进入precommit阶段;

5)  若验证人认为区块交易合法,则投precommit block认可增加该区块;若不同意则投precommit Nil;

6)  系统等待,直到有超过2/3的验证人投票支持,则系统正式commit,同意将该区块增加到链上;若未到达2/3的验证人同意则系统放弃该区块,重新对下一个区块进行投票。

35.webp

5)安全机制

Cosmos由于是基于拜占庭容错算法,理论上来讲可以抵御1/3节点的恶意攻击,单由于验证人节点数量较少,难以形成规模,所以节点联合进行攻击的风险较高,对系统安全性提出了较大的挑战。因此,需要依赖很多其它的机制或者策略来增加节点作恶的成本,并提高对其的处罚力度。系统较为主要的几个安全机制设计包括:新链注册机制、验证节点变更机制、验证人奖惩制度、黑客激励制度、远距离攻击应对策略以及分叉及审查应对策略。

Ø注册机制

Cosmos旨在建立一个跨链网络,在允许新网络加入之前,为了保证系统的安全性,必须要对新链进行注册。让所有客户端都拥有一个对新网络的信任种子,当该网络中出现恶意分叉时能正确识别那条正确的链。这个信任的种子就靠加入网络时的注册机制来种下。当然这个信任也是互相的,若要Zone1和Zone2直接建立信任,则需要互相注册。

比如要在Zone1中注册Zone2,Zone1要为Zone2添加一个可信的消息头和验证节点集合,保存在其安全数据库中,当Zone2发送消息时即可以此为凭证来验证消息是否来自Zone2正确的链。当然,每个网络中验证节点是会变更的,因此Zone1还需要同步Zone2的验证节点集合信息。在Cosmos网络,为了防止远距离攻击(LRA),验证人变更会有一个解绑期,因此Zone1同步Zone2的时间间隔和解绑期保持一致即可。

Ø验证节点变更

那么,注册完以后如何知晓其它网络验证节点变更了呢?Comos提供了一种特殊的数据包来向其它链发送本区块tendermint区块头和新验证人集合。这个验证人集合是一个拥有超过一定阈值数量的与给定公钥集相匹配的数字签名集。其它链空间在接收该标准格式的数据包时就会更新本地的验证人节点集合数据,从而保证了链和链之间的信息及安全同步。

Ø验证人奖惩机制

为了增加验证人作恶的成本,提高其对系统做贡献的积极性,Cosmos设定了一套针对验证人的奖惩制度。

首先,所有的验证人都必须将其所拥有的一定数量资产进行质押,作为保证金,当该验证人被发现参与了系统恶意分叉或者其他破坏行为,将被罚没所有保证金,并被剔除验证组。其次,若验证人参与不够积极,当缺失投票超过一定时间后,也将被进行处罚,在一定时间内将失去投票的权力,也叫缺席惩罚。再次,若验证人能尽职尽责为系统服务,还能从每一笔交易中收取一定的交易费用。

Ø黑客激励机制

为了提高系统的安全性,Cosmos允许黑客们帮忙来测试系统的安全性,对于成功发现系统漏洞的黑客,可以提交ReportHackTX交易来邀请赏金,而赏金则来源于被攻破的节点拥有的一定比例的ATOM。该机制对于发现系统漏洞,提高系统安全性是一种非常好的主动进化策略。

Ø远距离攻击(LRA)应对策略

由于拜占庭共识算法的局限性导致的远距离攻击漏洞是不可忽视的一个问题。所谓远距离攻击是由于验证人变动期间,新的验证组暂未被某些节点同步,而旧的验证人已经解除了质押的绑定,因此其可仍然冒充验证人,在未同步节点上建立新的区块链,形成分叉。针对远距离攻击,Cosmos提出了如下几条策略:

设定解绑期。验证人被替换后,期质押的资产不会立即释放,而是会有一段时间的解绑期,当解绑期结束后,足够多的节点同步了新的验证组后,其质押的资产才会被释放,不然其若在解绑期作恶,将被罚没所有资产。

多次验证。客户端节点在第一次链接网络时,为了确保安全,必须依据可信源验证最近的多个区块哈希,确认验证人集合是否有变更。

积极更新验证组集合。为了确保节点所拥有的验证人集合与其它链同步,则必须积极同步信息,同步周期可以和验证人解绑期一致(无需每次交易都进行同步),当然,这是建立在解绑期旧的验证人不会作恶的前提下,因为此阶段作恶成本高。

Ø分叉及审查攻击应对策略

Cosmos Tendermint共识本身不会让系统产生分叉,但不排除作恶阶段通过硬分叉或者拒绝服务等方式让系统分裂或者陷入瘫痪。Tendermint 中的Lock机制保证了每个高度只产生一个区块,单若是验证人不遵守Lock机制,采用了双重签名,对多个区块同时投赞成票,则会让系统产生分叉。由于验证人的数量有限,无法排除验证人进行线下联合,发动拒绝服务攻击,使得区块无法通过2/3验证要求而无法提交,导致网络瘫痪,新区块无法提交,交易中断。

以上问题也是拜占庭共识算法的缺陷,必须通过某些特殊手段加以弥补,比如通过组织特别协商来进行修复,采用系统外的某种线上或者线下方式来协商解决。由于Cosmos的验证人是在系统建立的时候就已经提前选定好的,与现实社会的人身身份是绑定的,所以如果验证人作恶,除了罚没虚拟世界资产外,还可以在现实世界采取某些法律措施来进行限制。

6)Cosmos应用示例

Cosmos的Hub并不是只有一个,而是谁有需求谁就可以建立一个Hub,类似于建立自己的局域网,Hub和Hub之间可以连通,也就意味着各局域网之间可以互相连接形成广域的Cosmos网络。

由边界智能与Tendermint团队合作打造的IRISnet是Cosmos生态中的第一个区域性枢纽(Hub)。如下图所示,IRIS网络在设计上与Cosmos网络具有相同的拓扑结构。 并将IRIS Hub作为Cosmos众多分区和区域型Hub之一与Cosmos Hub连接起来。

36.webp

[13] 图片来源于 IRIS 白皮书:https://github.com/irisnet/irisnet/blob/master/WHITEPAPER.md

IRIS网络的目标是支持构建复杂分布式商业应用的下一代公链,其核心创新是一个支持分布式应用被友好开发的服务框架,能实现链上链下通联、数据隐私保护和安全使用,同时IRIS在Cosmos的跨链协议上进行创新,允许数据及复杂计算能跨异构网络被调用。

具体来说,IRIS提供iService服务,可将公共链、联盟区块链以及现有企业系统中的业务服务注册到IRIS网络,统一适配为iService服务,供IRIS网络中的需求方调用。iServices通过标准的ABCI交易可实现服务的注册,绑定,调用,查询,分析和管理。并且IRIS通过扩展优化的IBC协议支持在IRIS区块链网络中直接调用iServices服务。

2018年9月,IRIS已发布伏羲-3001测试网络,39名验证人参与了测试网络,预计和Cosmos同时发布主网。

4.5.2 Polkadot

Polkadot[22]是Web3基金会支持的跨链项目,前以太坊的CTO Gavin Wood博士在2016年11月发布了Polkadot白皮书。Polkadot打造一种可扩展的异构多链架构,旨在解决区块链的互操作性、可扩展性和贡献安全,连接各种公有链、联盟链和私有链。Polkadot的名字是Polka dot(波尔卡圆点)的组合,波尔卡圆点是一种由一系列实心圆点构成的花纹,前卫艺术家草间弥生的作品中大量使用波尔卡圆点而闻名,以圆点营造无限的世界。而Polka一般指波尔卡舞,是一种捷克民间舞蹈,舞者们常站成一个圆圈,半步半步地跳;在Tendermint共识的规则中,验证人的操作被类比跳波卡舞。从Polkadot的名字,可看到它一定程度上受到Tendermint的影响,以及它连接扩展多元区块链世界的宏愿。

37.webp

[14] 左:《 Polkadot Lightpaper》HELLO@WEB3.FOUNDATION | 20-09-2017 | VERSION: 1 封面图 右:草间弥生,《我对南瓜所有的永恒的爱》(2016)图片: Courtesy KUSAMA Enterprise, Ota Fine Arts, Tokyo / Singapore and Victoria Miro, London © Yayoi Kusama

1)基础架构

Polkadot的结构如下图所示,由Relay chain(中继链)、Parachains(平行链)和Bridges(转接桥)组成。Relay chain是Polkadot网络的中枢神经系统,协调链间的共识和交易,主要记录账户信息和交易状态;Parachains可以由开发者或企业构建,收集并处理交易,传送到Relay chain;Bridges将其它异构区块链(如以太坊)到Polkadot网络。当以太坊的需要与Polkadot交互时候,以太坊的数据会通过针对以太坊专门开发的Bridge转换成在Polkadot中交互所需的模式。

38.webp

[15] 来自 polkadot.network

Polkadot的网络中有4种角色:Collators(收集用户的交易,验证并提交给Validators)、Validators(验证并广播Collators提交的交易数据,验证区块并支付押金)、Nominators(投资押金选出信任的Validators)和Fishermen(监督网络中的作恶行为)。进行跨链操作时,Collators和Validators是主要事务的执行者,Nominators和Fishermen是维持系统信任的参与者。

2)兼容与扩展

Substrate是Polkadot运行环境(PRE,Polkadot Runtime Environment)的实现,Polkadot本身基于Substrate构建;新的区块链如果基于Substrate框架构建,可直接连接到Polkadot网络,成为Parachain。连接Polkadot的链需要符合2个标准[23]:(1)能够证明其交易有效性,比如通过轻客户端证明出块状态的最终确认、包含比特币的UTXO或以太坊的日志信息;(2)必须有授权交易的方式,如门限签名方案或能针对多签名条件构造逻辑的智能合约。比特币和以太坊并不完全符合,需要开发特殊的Bridge以连接到Polkadot。而使用Substrate构建的Parachain,已经包括对共识、网络、WebAssembly、数据库、客户端等的支持,无需从头开发;且Polkadot对Parachain的结构没有要求硬性要求,非区块链的系统或数据结构(比如DAG)也可以成为Parachain。基础的Polkadot设计可以连数十、数百条链,也可通过连接类似Polkadot的链,形成二级Relay chain,使整个Polkadot网络连接无限的链[24]。

3)跨链概况

Parachain可以共享整个Polkadot网络的安全性和信任,但也让渡了一定的确认权到Relay chain;当用户在Parachain A上的交易信息,向Parachain B传输时,情形如下:

(1) 交易被发送到Parachain A上的Collator;

(2)Collator对该交易进行有效性验证,并打包进区块;

(3)Collator将该区块和状态过渡证明提交给Parachain A上的Validator;

(4)Validator验证其收到的只包含有效交易的区块,并支付一定押金;

(5)在足够多的Nominators为Validator支付押金后,广播该区块到Relay chain;

(6)执行交易并将Parachain A的数据传输到Parachain B。

Polkadot要实现的跨链,不仅限于信息交换、资产转移,还支持跨链互操作和区块链无限扩展。目前Polkadot已经发布了测试网,预计2019Q3发布主网。

4.6典型跨链项目简介

本小节梳理了20个涉及跨链的项目,其中包括跨链平台、用跨链来支持扩容或者某些特定应用的平台类项目,利用跨链技术来解决某个领域的应用问题等,如下表所示。

39.webp

第五章 项目市场及应用场景分析

5.1跨链项目市场分析

跨链项目已成为区块链领域一条重要的赛道,也有越来越多的项目加入进来,火币研究院在22个不同类型的跨链项目中对其整体概况、技术开发、社群建设等进行了多维度分析[16]。

[16]本章数据均来自火币研究院整理1)整体概况

总体来说,跨链项目可分为两大类型,平台类和应用类,分别占比63.6%和36.4%,如下图所示。其中平台类又包含两种,一种是跨链平台,作为其他区块链的跨链基础设施而存在;另外一种是平台类项目,借助跨链技术来实现扩容或者是实现跨链支付等功能。应用类项目多集中在金融和支付领域,以解决资产跨账本流通难题;也有一小部分致力于锚定某条主链做其侧链平台,该侧链平台可部署DApp应用,并可建立与主链资产的双向流通通道。

40.webp

从发起时间来看,跨链项目启动主要集中在近3年,并呈现出逐年增长的趋势,2017年,跨链项目数量达到峰值。2018年市场整体比较低迷,资金短缺,上半年新项目总体数量较2017年有较大回落,导致新启动跨链类项目也相对较少。

41.webp

2)技术开发

从跨链项目的开发进度来看,约54%的跨链项目已上线主网。也有33%的项目还在开发过程中。从开发周期上来看,大部分项目开发周期在一年以内,个别难度较大的项目开发周期在3年以上。

42.webp

对于在GitHub开源的跨链项目[17],我们统计了其项目关注度情况,如下图所示,77%的项目GitHub关注度都低于1000,其中Fusion的关注度最低,仅有9个关注;关注度超过1000的有四个项目,其中Ripple关注度最高,获得了2956个关注。

[17]数据统计时间为2018.9.29日,数据来源为:https://github.com

43.webp

3)社群建设

从跨链项目的社群热度来看,绝大部分项目的社群人数在1万到10万之间,约占68.75%;社群人数超过20万的,只有12.5%,其中,Ripple的社群人数远超其它同类项目,高达91万之多。

44.webp

[18] 数据统计时间为 2018.9.29 日,数据来源为 facebook、Twitter、Telegram、Slack、Instagram、 Medium、YouTube、BitcoinTalk 和新浪微博社交网站。

5.2 跨链应用场景分析

区块链跨链网络的建设对行业发展有着至关重要的作用,这主要得益于其应用场景的巨大想象空间,本小节仅列举了其中部分典型类型,以抛砖引玉。

1)底层平台扩容

目前区块链底层平台的性能成为制约区块链应用发展的瓶颈之一,而扩容的方案很多,主链+侧链的模式成为其中重要的一种,将主链的很多事务处理、计算开销都转移到侧链,并通过主链和侧链的跨链技术将其维护为有机结合的整体。该类模式已被很多项目采用,如Aelf、Lisk、Plasma等项目。

2)支付结算

正如5.1小节对跨链项目的分析显示,目前应用类的跨链项目多致力于解决跨账本支付结算的难题。如Ripple和Zipper主要解决中心化账本跨境汇款问题,BTC-Relay解决的是以太坊和比特币网络的跨链支付问题等。

3)去中心化交易所

区块链世界的一大特点是分布式、去中心化,而作为现实世界和区块链世界连接的入口,绝大多数交易所却是中心化存在的。由于目前的技术限制,交易所暂时只能用中心化的方式实现。而跨链技术为去中心化交易所提供了可能。

4)跨链钱包

区块链数字钱包是存储区块链数字资产的主要场所之一,而目前的钱包主要用于存储数字资产,并不能进行交易。跨链技术的发展使钱包具有跨币种交易的能力。目前已经有Kcash,Jaxx,Qbao等多款钱包计划开发跨链功能。数字钱包中跨链模块的实现将使得部分资产交易由现行的交易所逐渐转移到跨链钱包的场景中。

5)主网资产映射

在公链主网上线之前,很多区块链项目会用ERC20代币来代替主网原生数字货币进行流通。当公链主网上线后,就面临ERC20代币映射成主网代币的问题。由于映射过程非常复杂,用户在映射过程中非常容易因为操作失误导致映射失败,这将会使用户承担资产损失的风险,非常不人性化。跨链技术可以免去很多复杂的映射操作,用户可能只要一键操作即可以完成ERC20代币到主网原生代币的转换。

6)跨链预言机

目前的区块链只能获取自身链的信息,而对其他链上的事件、状态等信息一无所知,这就限制了区块链只能在很小范围内应用。跨链技术可以实现不同链之间信息的交互,链A的智能合约可以因链B的状态而触发和执行,从而实现跨链预言机的功能。比如,跨链预言机可以实现根据链A上的资产证明来对链B上的资产进行操作,分配处理链B的数字资产。链与链之间不再完全割裂,孤立的各区块链被打通,形成可以相互影响和联动的区块链网络,催生出更有价值的区块链应用。

7)资产抵押

由于跨链可以实现不同链之间的交互,我们可以将跨链技术应用在资产抵押场景中。用户可以用链A的数字资产作为抵押,取得链B资产的使用权。如果在规定时间内用户使用完链B资产并归还,用户可以收回链A中锁定的个人资产;若用户没有按照约定归还链B资产,链A上锁定的资产将被处置。资产抵押功能使得用户可以获得更广泛的资产使用权,同时也保证了资产出借者的权益。这项应用可以将现实世界中的产权抵押转移到区块链世界中。

8)实物资产链上交易

在未来,越来越多的实物资产会映射到区块链上,成为数字资产,而跨链技术可以让这类数字资产在不同链中转移、抵押和交易,极大地提高了资产交易的安全性、可追溯性和便捷性。

9)其他应用

就像受闪电网络、雷电网络启发而应用的哈希时间锁技术,在跨链领域有较好的应用一样,跨链技术也可以对其他领域有一定的启发。跨链的一个核心的要点是保证交易的原子性,这一技术或许可以应用到货银对付、外汇货币同步交收等场景中。

 

第六章 现状及未来

跨链项目总体处于探索阶段,未有大规模应用。目前专门做跨链的平台类项目从数量上来说并不多,总体处于探索阶段。一方面,区块链底层基础平台技术攻坚还未完成,难以支持应用产品落地,从而对于更近一步的跨链服务需求并不强烈;另一方面,跨链技术并不成熟,跨链对现有区块链体系的安全性影响有待考验。

跨链技术成熟度较低,仍有较大发展空间。现有的跨链技术主要致力于解决可用性问题,对于跨链易用性、可扩展性以及安全性的研究还非常缺乏,但这些方面都是跨链能大规模应用的前提条件。因此,当前跨链的技术还有很大的提高和完善空间。

跨链的推动依赖于区块链应用的实质性落地。区块链应用的进一步落地隐患了两层含义,其一是区块链基础设施完备,足以支持区块链应用落地;其二是区块链的应用能获得更多的实际用户,通证的使用功能和使用场景能进一步落地,通证经济在实体产业中开始发挥其特有的优势。跨链的进一步发展之所以需要依赖区块链应用的推动,是因为跨链交易的场景更多地依赖于人们对区块链应用的使用,更多地依赖于通证所代表功能和权益的使用,而不仅仅只是交易,如资产上链、跨链预言机、资产置留等场景。而且区块链网络建立的前提条件也必然是单个区块链体系内部的完整性和可用性。

跨链网络将推动数字资产金融的繁荣。跨链网络的建设将打通各孤岛式数字资产的流通网络,将各独立经济体推向“全球化”发展,同时,“全球化”经济体的建立也依赖于货币的自由流通。特别是在数字资产支付、借贷、清算、汇兑以及投融资等领域有广阔的发展空间。

跨链标准的建立将会是区块链行业发展的强劲引擎。对于现有异构链区块链系统,如果要将其一一打通互联,是非常费时费力的一件事。就像计算机网络的发展那样,我们需要一套区块互联互通的跨链标准,但这并不是一件容易的事情。且不说这个标准是否容易制定,即使这个标准制定好了也不一定能得到广泛应用,通常这会演变成产业为主要力量推动的事情,当绝大多数项目都遵循统一易用的协议,这个标准才能真正建立起来,而当这个标准建立起来的时候对行业来说绝对是一个前进的重要里程碑,它意味着行业快速发展的基础已奠定。各独立的区块链体系之间已不存在隔膜,可实现快速的互联互通,信息的快速流通必然带动了效率的提高,成为区块链行业发展的内在动力。


    免责声明:本文为转载,仅为传播消息之用,不代表矿机之家观点,不构成投资建议!

责任编辑:mumu

已赞+1 已有人赞过
评论

  • 最新