谢家贵,李志平,金 键
(中国信息通信研究院工业互联网与物联网研究所,北京 100191)
区块链技术是由对等(Peer-to-Peer,P2P)网络、密码学、数据库等多种技术融合的创新技术,本质上是一个去中心化的分布式账本,账本可以在整个区块链网络中复制和传播,区块链中每个区块都包含许多交易,当区块链上发生新交易时,该交易记录就会添加到每个参与者的账本中,由多个参与者共同管理。区块链公开透明、集体维护、难以篡改等特点,使其具有较高的可信性和安全性[1-2]。
自中本聪2008 年发表《比特币:一种点对点的电子现金系统》[3]以来,区块链技术已发展十余年,从比特币到以太坊,从最初仅用于货币支付到后来支持智能合约[4],从去中心化应用程序(decentralized Application,dApp)发展到未来的Web 3.0,区块链技术不断实现突破,应用场景不断扩大。尤其是从去年开始,区块链被正式纳入国家发改委新基建范畴,迎来多行业场景布局和应用加速落地新阶段,各种公有链、联盟链如雨后春笋般涌现,呈现出百家争鸣的局面[5]。中国信息通信研究院研究设计了自主可控的星火区块链(以下简称星火链)。星火链采用许可公有区块链技术,可以为人、企业、设备和数字对象等提供数字身份、数字资产管理、公共数据服务、监测监管等基础服务[6]。
区块链的蓬勃发展有利于科技发展和人类文明的进步,但是目前发展存在一个突出问题:各个链都在独立发展,形成一个个“孤岛”,比如比特币、以太坊,以及国内的Fisco 等区块链,都是在自己的生态内独自发展,彼此之间不能互通,无法互联[7]。当然从安全的角度考虑,这无可厚非,但是未来社会发展趋势是一个万物互联的社会,尤其大数据、5G 技术兴起后,更让万物互联的观念深入人心。如果不同区块链之间始终是孤立和封闭的状态,不能实现数据互通,资源共享,就会阻碍它们之间的协同操作,限制区块链的发挥空间,难免会给用户造成一些不便,甚至影响区块链行业的发展[8]。因此跨链研究势在必行,实现多种公有链、联盟链之间互联互通,既可以打破“信息壁垒”与“价值孤岛”,又有利于区块链间的数据资源共享和价值转移,实现数据驱动下的治理与协同,从而推动整个区块链行业的发展[9]。
鉴于此,本文深入探讨了跨链技术实现,系统分析了现有跨链项目特点,并借鉴现有跨链技术,设计星火链基于主子链架构的新型跨链方案,实现用户的跨链需求,进一步丰富区块链跨链生态系统。
不同区块链间无法相互通信,使人们无法享受区块链技术的全部好处。跨链技术的出现,致力于通过实现区块链之间互操作来解决这些问题,从而使不同区块链之间易于相互通信并共享信息[10]。目前主流的区块链跨链技术主要包括公证人机制、中继机制和哈希锁定。
1.1.1 公证人机制
公证人机制是一种最简单实现跨链的方法[11]。如图1所示,通过引入一个或多个可信实体作为“公证人”,在两条区块链之间完成数据收集和交易验证[12]。在跨链过程中,可信实体向一条链声明另一条链上发生了某事件,为跨链行为做背书。这些可信实体既可以不断监听链上事件,达到条件后自动地作出响应;又可以在收到请求时才对某些消息进行签名。根据公证人类型又可以分为三类:单签名公证人机制、多签名公证人机制、分布式签名公证人机制。
图1 公证人机制Fig.1 Notary mechanism
单签名公证人机制,即中心化公证人机制,是最简单也是最容易理解的一种模式,一般是由一个单独的中心化节点充当公证人,这个单独的公证人负责所有跨链数据的收集验证工作。常见的中心化交易所本质上就是这种模式,交易所作为公证人,为不同用户之间交易做背书。这种模式虽然简捷高效,但是存在中心化风险,于是就产生了多签名公证人机制。
多签名公证人机制,顾名思义,是由多个公证人组成的公证人小组,组内每个人都有一个属于自己的私钥,跨链时需要一定数量的签名达成共识,交易才能完成。这种方式与单签名公证人机制比起来更加安全和稳定,但同时存在一定局限性,需要跨链双方链上都要支持多重签名功能,有一定的实现难度。
分布式签名公证人机制实现起来相对比较复杂,该机制借鉴安全多方计算的思想,基本思路是整个系统只产生一个私钥,然后将私钥拆散成多个碎片,并进行加密处理后随机分配给各个公证人,公证人之间互相不知道对方的密钥。跨链时只有达到一定比例的公证人签名才能复原出完整私钥,验证完成跨链交易。这种方式更加安全,当少数公证人遭受攻击时,不会对系统稳定性造成影响。
1.1.2 侧链/中继机制
侧链是一条区块链(主链)将另一条区块链作为自身的延伸(侧链),主链维护一个资产分类账本,并连接到侧链,侧链是通过跨链通信协议连接到主链的独立系统。这里侧链不一定是次要的,两条链可以成为彼此的侧链[13]。最常见的是主链与侧链之间资产转移:当用户想从主链向侧链转移资产时,首先在主链上向一个特殊地址发送X个令牌,这些资金即被锁定在主链上,同时相应数量代币被创建在侧链上,于是完成跨链资产转移,用户就可以使用侧链上的令牌。如果用户想换回主链令牌,侧链上的资产被锁定或销毁,同时将主链上的令牌解锁。主侧链的连接验证方式一般通过简单支付证明(Simplified Payment Verification,SPV)完成,由轻客户端完成,只需区块头数据即可验证区块链上的交易,而无需完整的区块数据。如BTC-Relayer 中的Relayer,由美国区块链ConsenSys 团队设计开发[14],被认为是区块链上的第一个侧链,通过以太坊上的智能合约读取比特币链的区块头并对其执行计算。Relayer 使用SPV,仅使用区块头来验证支付,事务验证是通过对存储的Merkle 树进行计算来实现的[15]。
中继机制是侧链与公证人机制的一种融合。如图2 所示,与公证人机制相比,中继机制用中继链代替原先的公证人,接管公证人的任务,是一种去中心化的公证机制。中继链是一条功能完备的区块链,可以读取并验证连接到其上的区块链数据信息,中继机制可以说是一种更加直接地实现跨链的方法。中继机制可以在不依赖可信第三方的情况下完成交易验证,是一种更加灵活、更易于扩展的跨链技术,实现形式多种多样,如Cosmos 中的Hub、Polkadot 中的中继链等都充当中继的角色,一些侧链的实现也采用了中继模式[16]。
图2 中继机制Fig.2 Relay mechanism
1.1.3 哈希锁定
哈希锁定最初是作为集中式交换的替代品出现的,支持跨链原子操作,即允许一个用户向另一个用户发送一定数量的加密货币,交换另一个区块链上持有的加密货币[17]。哈希锁定主要利用哈希锁和时间锁技术,不需要两条链之间过多交互,不需要第三方公证人存在,通过交易者承诺在超时前向另一方提供加密证明来进行交易。
如图3 所示,假设Alice 和Bob 想要交换不同链上的资产,哈希锁定流程机制如下:
图3 哈希锁定Fig.3 Hash lock
1)Alice 生成一个随机数s,计算其哈希值h=hash(s),然后将h发送给Bob。
2)Alice 将她的资产锁定在一个智能合约中,并设定好解锁条件:Bob 在规定时间T内用猜出密钥s,用s取走智能合约中锁定的资金;否则资金将被退回Alice。
3)Bob 将其资产锁定在另一个智能合约中,解锁条件为:如果t≤T,Alice 可以输入密钥s,取走锁定的资金;如果t>T,资金将被退回给Bob。
4)Alice 及时调用合约,提供正确的s,向Bob 兑换资产。
5)Bob 从Alice 处获取s后,在剩余的时间内,从Alice 处兑换资产。
这个过程中,Alice 和Bob 取走资产的时间不确定,并且在不同链条上有所不同。这个过程可以说是原子级的,在Alice 采取操作后,Bob 有足够的时间获取资金;否则Alice 可能会拒绝输入密钥s,所有资金都将被退回。然而在某些情况下,比如汇率波动时,Alice 会占据有利地位,Alice 可以在时间t内等待有利的汇率。为了缓解这种不平衡,经常利用状态通道来加速交换,从而削弱发起方的优势。在跨链操作的情况下,哈希锁定只能支持原子交换,在资产可移植性和数据跨链方面还存在困难。
跨链的实现是一个相对比较复杂的过程,其本质是将一条链上的消息安全可信地转移到另一条链上并在该链上达到预期效果[18]。公证人机制、侧链/中继机制、哈希锁定机制三种技术各有侧重,公证人机制跨链方式比较简单和单一,只支持资产交换;侧链/中继机制更加稳定和易于扩展,可以实现资产转移,数据交换,或者其他更加复杂的需求;哈希锁定机制只适合偏资产或者关键数据的交换,在支付领域应用较多。
在这些跨链技术的基础上,目前已涌现出非常多的跨链项目,致力于推动区块链网络的发展和完善,实现区块链互联互通。
跨链的实现,旨在打破数据孤岛,解决价值交换,完成区块互联,达成数据共享。近两年来,跨链项目的数量呈逐年增长态势,总体还处于探索阶段,实质性落地和成熟度较低,仍然有非常大的发展空间。本节主要介绍主流跨链项目Cosmos 和Polkadot。
1.2.1 Cosmos
Cosmos 是由伯克利的Tendermint 团队为核心团队开发的跨链项目,于2019 年3 月主网上线。Cosmos 是一个分散的独立平行区块链网络[19]。该项目的目标是创建一个允许所有其他区块链相互通信的网络,改善区块链之间的互操作性,并以最高效,最快的方式进行通信。
Cosmos 网络由应用层、共识层、网络层三层组成,其中:应用层主要用于具体业务逻辑设计,处理交易并更新网络状态;共识层,主要负责共识机制的设计,帮助节点就系统当前状态达成一致共识;网络层,用于交易和区块链之间的通信,负责通信协议和底层数据结构的设计。
Cosmos Hub 是第一个在Cosmos 网络上启动的区块链,如图4 所示,通过跨链协议与Hub 连接的区块链被称作Zone,Hub 在Cosmos 网络中充当所有独立区块链Zone 之间的中介。在Cosmos 中,每个区域都可以自行执行其基本功能,包括验证账户和交易、创建和分配新令牌等。Cosmos Hub 的任务是通过跟踪其状态来促进网络中所有区域之间的互操作性。
图4 Cosmos区块链体系架构Fig.4 Cosmos blockchain architecture
不同Zone 区域通过跨链通信协议(Inter-Blockchain Communication,IBC)连接到Cosmos Hub,该机制使信息能够在每个连接的区域之间自由安全地传播。将Zone 连接到Cosmos Hub 后,它即可与连接到该Hub 的其他Zone 区域互操作,从而使不同共识机制和验证机制的区块链之间可以交换数据。例如,链A 上的智能合约希望确定链B 上是否发生了事件。为此,链B 上的智能合约需要获取链A 的区块头,并验证它是否满足共识并达成最终结果[20]。
IBC 定义了链与链之间的通信标准,负责将数据包路由到目标区块链,目标区块链可以处理任意来自另一个区块链的特定有序数据包。连接到Hub 的每个区块链跟踪其他区块链的区块头。当链A 向链B 转移一笔资金时,通过IBC 协议会首先锁定A 链上的资产,然后向目标区块链B 链发送证明,于是目标区块链上相应创建与锁定资产等值的资产。恢复原始链A 上的资产时也采用类似机制。对于未采用IBC协议的其他类型区块链接入,会为原先的链开发一条既遵守原链通信标准又遵循IBC 标准的代理链,通过代理链来实现跨链。
1.2.2 Polkadot
Polkadot[21]是一个可伸缩的支持多种同构、异构链接入的多链跨链平台。Polkadot 体系结构围绕三个要素构建:中继链、平行链和转接桥。Polkadot 区块链是中继链,它位于生态系统的中心,并传递跨链信息;平行链是连接到中继链的现有区块链,它们可以是比特币区块链、以太坊区块链或者是基于Polkadot 开发工具构建的区块链;转接桥是将异构平行链连接到中继链的网关,同构链不需要转接桥,因为它们与中继链的共识机制相同。
Polkadot 区块链中设计了四个角色,分别是验证者、提名者、收集者和钓鱼者,如图5 所示,从而使中继链和平行链在不信任的环境中协同工作。
图5 Polkadot区块链中四个角色的交互Fig.5 Interaction of four roles in Polkadot blockchain
验证者主要负责创建和提议区块,执行交易的验证工作,具有非常高的权限。验证人需要抵押足够多Polkadot 区块链中的代币作为押金,同时需要运行一个完整的中继链节点。
收集者负责运行全节点平行链,并收集平行链数据,打包新的区块并执行交易,然后会将一个零知识证明附在执行结果上,一起提交给该平行链区块的验证者。
提名者是拥有投票权益的人,他们选举出他们信任的验证者,并把押金抵押给验证者,代表他们维护整个网络。根据抵押的资金比例,提名者也会受到和验证人同样比例的奖励和惩罚,从而保证整个Polkadot 网络的安全。
钓鱼者在Polkadot 网络中是一个监管的角色,他们不直接和区块打包过程相关。通过举报并证明有抵押的参与方存在作恶行为,就能获得可观奖励。
Polkadot 网络可以看作是一个网络结构,如图6 所示,中继链是网络的中心,中继链上有一定数量的插槽,可以外接平行链。收集者会监听平行链上的交易,收集相关交易并进行广播,把未确认的区块提交给验证者,中继链上验证者通过签名共识阶段后确认区块。每个平行链都会设置一个队列,区块链中的所有跨链交易都会被收集人放入这个队列中,然后这些交易被收集者或验证者路由到目标平行链[22]。
图6 Polkadot区块链体系架构Fig.6 Polkadot blockchain architecture
作为目前热门的跨链项目,Polkadot 和Cosmos 很好地解决了不同区块链间数据无法交互,价值不能流通的痛点,通过定义兼容性强的跨链协议,为用户提供一个跨链中继枢纽平台,支持多链互联互通,在完全去中心化的网络中交互操作,从而轻松实现跨链交互,尽可能满足大多跨链应用场景需求,未来有望大规模应用起来[23]。
Polkadot 和Cosmos 项目采用的都是中继链机制,中继链本质上是侧链与公证人机制的一种扩展,Polkadot 和Cosmos的可扩展性和交互性更强,连接到中继链上的各条区块链都可以通过中继链互相交互,不需要依赖可信第三方就可以完成交易验证、数据同步、价值转移等,更加灵活、高效。不同的是Polkadot 和Cosmos 拥有不同的共识机制[24],Polkadot 平行链和中继链都需要维护自己的区块状态,中继链需要对最终的安全性负责。而Cosmos 则不同,Cosmos 的Zone 区域需要找到自己去中心化的验证者,Cosmos 的Hub 验证者无需对链安全性负责;但同时Polkadot 和Cosmos 项目也存在一些缺点,跨链实现方式逻辑复杂,对异构链接入不够友好,如果是一个异构区块链,都需要桥接来进行跨链。尽管如此,Polkadot 和Cosmos 仍有很多值得借鉴的地方,融合公证人机制和中继链核心思想,解决复杂跨链难题,实现链与链之间互通互联,具有非常大的优势。本文借鉴相关跨链设计经验和思路,提出星火区块链的跨链方案。
星火区块链采用的是主子链架构,即“主链+子链”的1+N 架构模式。主链是一条基于中继链技术的许可公有链,许可公有区块链是一种既兼容公有区块链开放接入、灵活、可扩展性等特性,又融合联盟区块链易于监管、高性能、安全可控等特性的区块链技术系统。主链支持同构和异构子链接入,子链注册后可以通过中继链实现跨链,在去中心化同时能保证数据的安全可靠。
在星火区块链中,主链保证链群高效运行,负责链群管理和价值锚定;子链采用自治理模式,针对不同业务场景独立设计,实现数据安全隔离,保证在不同场景中对隐私性、有效性的不同要求。如图7 所示。
图7 星火区块链体系架构Fig.7 Spark blockchain architecture
星火区块链中设置了三类节点,分别是超级节点、骨干节点和业务节点,不同类型节点分工合作,保证链网稳定运行。
超级节点主要负责执行主链共识,具备数据托管、资质审核、链群管理等功能。链群中所有节点可申请成为超级节点候选人,并拥有超级节点被选举权。
骨干节点具有锚定主链、子链共识、子链监管、智能合约部署等功能,子链通过骨干节点与主链执行跨链交互过程,同时担负着跨链网关职责,是主链和子链的桥梁,实现主子链跨链通信。星火跨链技术是以高性能共识主链为核心的跨链网络结构以及子链动态接入机制,骨干节点作为跨链桥接器,保证跨链技术的高效性、扩展性和安全性。
业务节点协同骨干节点执行共识,执行业务活动,其权限由骨干节点管理。
在星火链主子链架构中,主链是星火链的核心,由多个超级节点组成,超级节点负责维护整个区块链安全稳定运行,维护各个子链的注册申请和信息维护,链接各个区块链的跨链交易和交易验证过程,为保证链群高效运行,为整个链群生态健康发展保驾护航。子链是所有参与接入跨链生态的同构/异构区块链,可以是各种公有链、联盟链、私有链等,有较强的独立性,即使出现异常也不会影响其他子链正常的跨链过程。
通过对常见跨链机制分析,以及对Cosmos 和Polkadot 项目的研究,借鉴其公证人机制和中继链核心思想,提出星火区块链跨链技术,实现跨链交互,解决资产和数据的自由流通,链与链之间互通互联,保证链与链之间互相信任。
星火链的跨链技术支持资产跨链、数据跨链、智能合约跨链互操作三种服务能力,促进子链资产价值锚定、数据资产价值化流转和业务跨链互操作。其中,资产跨链支持与主链原生资产同构的子链间资产转移,同时支持异构原生资产通过主链兑换实现资产交换,促进子链资产与主链的价值锚定和跨链价值流转;数据跨链支持与主链数据同构的子链间数据跨链交互,同时支持异构数据通过主链规范化要求转化;数据跨链交互形式包括数据的查看、数据的写入和数据所有权转移等,实现数据资产跨链价值化交换过程;智能合约跨链互操作支持用户跨链调用智能合约,并传递交互参数,实现智能合约跨链访问、智能设备跨链点对点互操作等功能,进而打破传统互联网协议横向隔阂造成的数据孤岛问题,通过连接各业务场景的底层协议,将各平台、联盟链系统等数据链接起来,实现万物互联互通目标。如图8 所示。
图8 星火区块链的跨链流程Fig.8 Cross-chain process of Spark blockchain
星火区块链跨链设计了许多关键核心组件来保证跨链机制的进行。
1)智能合约组件。子链在向主链注册的同时会进行相关跨链合约部署,子链通过跨链智能合约,向主链发起注册请求,连接到主链。以主链为中心可以和其他子链进行跨链操作,保证主子链间跨链顺利实现,支撑跨链业务核心逻辑,保证跨链交易有效性与安全性。主链上部署中继合约,用于跨链时主子链间数据同步与确认,保证主链作为中继实现链间通信。
2)交易校验组件。通过区块头Merkle 树数据进行SPV简单支付验证。SPV 能够以最小的代价来计算判断某条交易是否已经被验证过。主链承担子链交易数据校验的责任,校验组件会校验并保存提交上来的子链区块头和相关交易SPV 数据,以此来证明子链数据有效性。
3)交易超时组件。保证跨链交易有效性和完整性。星火区块链中内置高性能时钟,跨链交易过程中,每次跨链操作开始时都会进行计时,每一步交易都需要在规定时间内反馈成功或失败信息,进而根据反馈信息进行后续操作。同时主链和子链在跨链区块确认时都会有一个候选区块池,候选区块池中的区块交易只有在收到跨链成功反馈时才会变为正式区块。
基于上述关键组件,对星火链的跨链流程进行了优化。一个典型的主子链间跨链交易主要分为以下阶段:
1)交易发起阶段,主要是骨干节点监听用户发起的交易,并提交到跨链消息队列中。在星火链中,骨干节点会监听并获取网络中的跨链请求,用户调用跨链合约发起子链A向子链B 的跨链请求时,该请求会被骨干节点获取,骨干节点会对该请求进行验证,确认请求发起者权限、跨链内容和跨链序号等,验证通过无误后将跨链请求信息形成特定格式的数据,提交到跨链消息队列中。如果检查中存在问题,则中止交易,返回错误信息。
2)交易路由阶段,主要是跨链消息的中继和路由。主链中的中继合约负责跨链消息队列中跨链请求的中继和路由,统筹协调路由分配,将跨链交易信息传递到对应的子链。子链A 到子链B 的跨链请求被送入消息队列后,中继合约监听到并查询验证对应请求信息,之后根据路由信息将请求转发至对应的子链B,主链同时启动消息计时程序,若在规定时间内没有收到对应子链的反馈信息,则按超时失败处理。
对应子链的骨干节点会监听所有的跨链交易请求,当收到中继合约转发过来的跨链交易请求后,交易会被提交到子链的跨链合约中进行处理;子链B 的跨链合约对骨干节点提交的交易进行校验,通过节点签名投票后提交候选区块,把相关信息同步给主链,提交跨链反馈。同时开启计时程序,等待在规定时间内接收主链的反馈信息。
3)交易核验阶段,主要是交易数据的验证与同步。主链收到子链B 反馈的跨链信息后,首先对跨链交易进行SPV 验证,即通过交易哈希值和Merkle 树进行简单验证。验证通过后,转发给跨链的发起者子链A。跨链发起者子链A 的骨干节点监听到主链发来的跨链确认信息后,向子链A 提交跨链反馈,子链A 会对该比跨链交易进行确认,把确认的跨链交易提交到跨链合约中;子链A 的跨链合约对提交的确认交易信息进行校验,验证跨链交易确实来自于主链,然后进行投票验证,保证交易的执行,同时返回相应的回执信息。
4)交易确认阶段,主要是主链完成最终确认并生成跨链存证。主链收到反馈信息后,会进行SPV 验证,同时对相应的子链数据信息进行同步,更新区块头数据,提交候选区块,等待子链确认跨链信息后候选区块变成正式区块。同时生成一个跨链存证,确保跨链交易真实有效。跨链存证生成后,标示此次跨链交易过程正常结束。
一个跨链存证的信息示意如下,清楚明了地记录了跨链信息,并附有签名作为信用背书。
根据上述跨链交易过程,假设用户Alice 向Bob 进行一笔转账,该笔转账只能通过子链A 向子链B 进行跨链交易来实现,以此为例来说明星火区块链的跨链交易流程。
1)用户Alice 调用跨链合约向子链A 的业务节点发起向Bob 跨链转账交易申请;
2)子链A 的业务节点将该请求对外进行广播,骨干节点会监听并获取该跨链请求;
3)骨干节点对该请求进行验证,验证通过后将该请求提交到跨链消息队列;
4)主链中的中继合约监听到跨链消息队列的消息后,会对其进行校验,校验通过后该请求被路由转发到子链B;
5)子链B 的骨干节点会监听转发给自己的跨链交易请求,收到请求后,将交易提交到子链B 的跨链合约中进行处理;
6)子链B 的跨链合约对该交易进行校验,业务节点通过共识确认,签名投票打包,提交候选区块,更新交易状态,把信息反馈给主链;
7)主链收到跨链反馈后会对该交易进行验证,验证无误后将消息转发至子链A,子链A 监听到主链发来的跨链消息后,把确认的跨链交易提交到子链A 的跨链合约中;
8)子链A 的跨链合约对提交的确认接收跨链交易进行校验,校验通过后进行投票验证,提交候选区块,同时反馈信息;
9)主链收到反馈信息后,会同步该条信息,提交候选区块。同时生成跨链存证,至此该跨链交易全部完成。
上述介绍的星火区块链跨链方案的实现,通过特定的主子链架构,设计关键核心组件保证跨链的进行,实现不同子链间跨链交互,打破不同链之间的价值隔离困境,促进子链资产价值锚定、数据资产价值化流转和业务跨链互操作,安全实现链与链之间的价值互通,将满足不同业务场景跨链需求。
根据星火区块链的跨链方案,设计可行的实验进行性能测试和安全性测试。实验环境选用20 台云服务器,服务器配置为64 GB 内存,32 核Intel Core 的CPU,500 GB 硬盘。由于系统采用“主链+子链”架构,其中10 台服务器作为10 个节点,用于主链搭建和部署,剩余10 台搭建2 条子链,每条子链部署5 个节点。
性能测试实验从交易延迟、交易吞吐量、尖峰冲击下的稳定性等方面进行评估。对于交易延迟、交易吞吐量实验,每个实验进行24 h,每6 min 记录一次数据;对于尖峰冲击测试,分别进行2 倍流量、3 倍流量的冲击,实验各进行3 min,比较冲击前后的交易延迟数据。同时与超级账本Fabric、企业以太坊联盟Quorum 区块链进行对比实验。
1)交易延迟,是衡量区块链系统性能的一个重要指标。实验过程中会记录两个时间节点:一是交易发起的时间,即在交易发起阶段用户发起交易,被骨干节点监听并提交到跨链消息队列;二是交易处理完成的时间,即在交易确认阶段主链完成最终确认并生成跨链存证。通过计算两个时间节点之间的时间差来统计交易延迟。如图9 所示,Fabric、Quorum 区块链的平均延迟时间均超过了10 s,而星火区块链跨链交易延迟时间较短,平均延迟时间约为7~8 s,低于其他区块链延迟时间,交易效率较高。
图9 交易延迟时间Fig.9 Transaction delay time
2)交易吞吐量。区块链的吞吐能力也是衡量区块链系统性能的重要指标,一般用每秒事务处理量(Transactions Per Second,TPS)来表示,指系统单位时间内写入区块链的总交易数量。实验中通过自定义脚本持续发送大量的交易请求,然后统计计算单位时间处理完成的交易的数量。图10 是交易吞吐量实验图,星火区块链的吞吐量最高可达到25 000 TPS,高于Fabric、Quorum 区块链的1 000 TPS 左右的数值,星火区块链中的交易并发处理能力较高,具有较好的性能。
图10 交易吞吐量Fig.10 Transaction throughput
3)尖峰冲击下的系统稳定性。
为了确保区块链长期稳定运行,就需要了解流量峰值时系统的状况,保证每个访问者流畅的使用体验,因此,通过尖峰冲击压力测试来验证评估瞬间大流量冲击区块链时系统的稳定性,是非常重要的。如图11 所示,星火区块链的交易延迟随着流量的增加并未出现明显变化,系统运行平稳,平均延迟时间在8~9 s,而Fabric 的延迟在流量突然增大到2 倍时,有一个明显的增长,Quorum 区块链的延迟在流量突然增大到2 倍和3 倍时,都有较明显的增长。
图11 不同流量峰值下的交易延迟时间对比Fig.11 Comparison of transaction delay time under different traffic peaks
上述实验结果表明,星火区块链在交易延迟、吞吐量和尖峰冲击测试等方面均有较好的表现,具有较显著的优势,稳定性较高,从而有效保证了星火区块链的性能。
安全性是保证用户资产和数据进行跨链转移的关键,是系统平稳运行的核心指标。实验分别设置不同的恶意节点,测试恶意节点的比例对区块链交易成功率的影响。选取0个、4 个、5 个、7 个恶意节点进行四组实验,代表的恶意节点比例分别为0、20%、25%和大于30%。通过自定义脚本持续发送交易并监测交易的完成情况,最后的交易成功率如表1所示。当恶意节点数小于30%时,跨链交易的成功率均达到100%;当恶意节点数大于30%时,跨链交易的成功率会有显著的下降。由于星火链采用的许可公有区块链技术,成为星火链的节点需要严格的资格审核,所以恶意节点的比例会比较低,一般不会超过10%,这种情况下跨链交易的成功率为100%,可以充分保证区块链运行的安全。
表1 不同恶意节点的交易成功率Tab.1 Transaction success rate of different malicious nodes
进一步讲,本文在设计跨链机制的过程中,就已经充分考虑了整个系统的安全性,具体表现在以下三方面。
系统设计的智能合约组件,保证子链在向主链注册的过程中是安全可控的。子链注册接入主链时,需要进行相应的认证,抵押一定的资产后才可发起注册提案。注册完成后会为对应的子链分配唯一的编号。主链也可以通过智能合约组件进行节点投票注销恶意注册的信息,拒绝所有该恶意子链信息的跨链请求。
跨链的共识机制采用的是基于委托权益证明(Delegated Proof Of Stake,DPOS)、可验证随机函数(Verified Random Function,VRF)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等算法改进的创新双层共识。DPOS 阶段节点会通过质押大量资产获得打包区块的资格,节点参与共识时受到其他节点的监督,主动作恶会被罚没质押的资产,通过这种手段使得作恶的成本远大于收益。VRF 阶段用于辅助增强PBFT 的安全性,通过随机选择算法降低打包区块节点被提前预测和攻击的风险,PBFT 阶段的安全性由算法逻辑来保障,通过系统节点对信息的多次转发和确认来保证节点间的信息一致性。整个系统从经济博弈、算法逻辑本身等方面都充分保证跨链共识的安全性。
另外,由于星火区块链采用的是主子链架构,该架构使不同业务场景对应的各个子链之间网络和数据相互隔离,不能直接通信,从根源确保隐私数据无泄漏风险,保证了整个链群安全与稳定。
跨链技术让不同区块链之间实现了互联互通,为不同技术底层的区块链之间相互交互确立了统一标准,区块链不再是一个个孤岛,跨链技术区块链从小范围探索实验走向大规模应用成为可能。因此不同区块链间实现跨链数据互通,会进一步成为未来研究热点。本文通过跨链机制及方案的分析与研究,对比现有主流跨链项目,对星火区块链跨链技术进行了设计与探索,提出星火链的跨链方案,构建区块链主子链体系架构,通过中继方式实现跨链,各子链之间通过主链实现互联互通、跨链数据交互共享,可以针对不同业务场景独立运行,为区块链生态发展提供一个数据共享平台,进一步丰富区块链跨链生态系统。期望这项研究设计可以为下一步的深入研究提供一个稳健可靠的起点,相关开发者和研究人员可以重点关注星火区块链跨链技术在供应链管理、联合溯源等场景的应用,并结合应用场景对跨链机制进行优化升级,进一步完善跨链流程与标准,为区块链行业的发展作出贡献。