潘 晨 刘志强 刘 振 龙 宇
(上海交通大学计算机科学与工程系 上海 200240)
区块链技术起源于中本聪[1]提出的比特币系统,其真正在开放式的P2P网络中实现了不依赖于可信第三方的数字支付系统.这种去中心化的特性大大有别于现有的商业支付系统,改变了现有系统中的安全信任模型.在比特币的信任模型中,用户之间的信任源于对整个系统的信任,而不是任何第三方中介,只要整个系统的安全假设被满足,这种信任关系就可以持续.去中心化的特性使得区块链技术受到了越来越多的关注,有着广阔的应用前景.
然而当前的区块链系统存在严重的可扩展性瓶颈:
1) 交易吞吐量不足.以比特币系统为例,当前系统最高只能支持7笔/秒的交易确认(以区块大小为1 MB为例)[2],这使得其难以承担大量交易的及时确认,无法满足现实的应用需求.同时由于其共识过程中可能存在分叉,一笔交易至少需要6个区块的确认(这是推荐的确认数) ,即至少需要等待1 h才能确认单笔交易,这些都限制了其大规模的应用[3];
2) 链与链之间的资产(数据)难以交互.不同的应用场景有着不同的用户和需求,因此在现实情况中,很难要求一个区块链系统来承载整个现实生活中的所有应用.为此需要实现链与链之间的交互,才能使得区块链之间不会彼此成为孤岛,从而实现真正的价值互联.
本文阐述当前区块链可扩展性问题的现状,从区块链提升性能和功能扩展2个方面,综述当前主流的解决区块链可扩展性的技术:链下支付网络、Bitcoin-NG、分片机制和跨链技术,分析比较它们的优缺点,并指出现有方案所面临的主要问题和未来研究方向.
区块链技术提供了在开放网络中新的信任模型,使得任何用户可以在不需要第三方信任机构的情况下建立信任关系,这样的信任关系源于用户对整个系统的信任,而无需信任单个节点.
这样的去中心化特性带来的代价之一就是区块链的性能,主要的指标就是系统的交易吞吐量.当前比特币系统只能支持最高7笔/秒的交易吞吐量,而主流的支付平台如Visa,能够实现平均2 000笔/秒,以及峰值56 000笔/秒的交易处理速度[4],显然两者之间存在着巨大的差异.
这主要是由于比特币系统的共识机制所带来的代价.在传统的数字支付平台中,往往存在着中心化的第三方机构来完成交易的确认,系统中的其他节点无条件信任第三方机构的执行结果.而在以比特币为代表的数字货币系统中,需要全网的节点来对系统中的每一笔交易进行共识,每个节点都拥有各自的账本并且通过共识机制来完成对账本的修改并保证一致性.在当前区块链的共识机制中,无论是工作量证明机制(proof of work, PoW)还是权益证明机制(proof of stake, PoS)本质上都是全网节点参与并竞争账本的记账权,并且保证了系统中的任何节点能够独占记账权并进行双花攻击的代价极高或者攻击成功的可能性极低.每轮拥有记账权的用户以区块的形式确认交易,这样的共识机制和区块大小的限制使得每轮共识的交易确认数有限,造成了区块链系统交易吞吐量的瓶颈.
显然增大区块容量是一个能够提升区块链交易吞吐量的简单办法[5-6].更大的区块能够使得一轮的共识过程中确认更多的交易.然而仅仅提高区块大小并不能完全解决问题.首先是更大的区块可能会导致网络的拥塞,影响系统的性能,其次以比特币为例,即使将当前的区块大小提升到8 MB,系统的交易吞吐量依然小于100笔/秒,依旧无法满足现实的业务需求.
当前针对区块链性能提升的主流方案主要包含3类:
1) 利用支付通道技术,通过链下交易的方式来提升交易的吞吐量,同时保证交易的安全性;
2) Bitcoin-NG[7]等方案,将原先比特币中的共识过程拆分成记账人选取和交易排序2个阶段,通过记账人选取阶段保证区块链安全性,在交易排序阶段由记账人进行大量交易数据的处理.其在保证了分布式一致性的基础上,提升了一轮共识过程中的交易确认数,从而在区块链上增加交易吞吐量;
3) 分片机制,通过将全网节点划分成不同的集合(shard),每个集合并行地进行共识,确认交易,从而使得系统的交易吞吐量随着全网中参与共识节点的增加而近似线性地增加.
区块链的可扩展性问题除了表现在性能上,即系统的交易吞吐量外,在功能上也同样存在瓶颈.区块链技术诞生之初,主要是为了实现去中心化的数字支付系统,然而随着人们对区块链的理解和技术的发展,出现了各种区块链项目,他们有着不同的特性,能够满足不同的业务需求.在数字支付领域,有ETH[8]基于账户模型实现了图灵完备的智能合约,Zcash[9]利用零知识证明技术实现了交易过程中的隐私保护等.利用区块链去中心化的特性,也可以实现除数字支付以外的应用[10],如分布式文件存储、征信、供应链及金融应用等.然而在区块链设计之初很少考虑到不同的链之间交互的需求,这使得不同的链之间完全割裂,不同的资产无法相互转换,不同的应用无法相互协同,从而无法实现真正的价值互联.为此,需构建跨链技术来解决链与链之间的交互问题.
当前代表性跨链技术主要包含4类:
1) 公证人技术;
2) 侧链/中继技术;
3) 基于Hash锁定技术;
4) 分布式密钥控制技术.
其中公证人技术引入了可信第三方,作为跨链过程中的资产保管人,侧链/中继技术利用SPV(simplified payment verification)证明、中继链等技术,实现了不同区块链之间的可信互通,基于Hash锁定利用了Hash原像脚本,实现了公平的跨链资产交换,分布式密钥控制技术利用分布式密钥生成算法,使得跨链过程中的资产保管人角色由全网节点承担,而不是少数第三方.
在本节中,我们主要介绍3类提升区块链性能的主流技术,包括链下支付网络技术,涉及经典闪电网络及其相关改进方案的构造;提升链上交易容量的Bitcoin-NG方案;提升链上交易容量的分片机制.
链下支付网络通过将大量交易离线处理,同时将区块链作为仲裁平台,处理通道支付过程中的异常情况,如双方对通道的状态有分歧等,其间接地提升了系统的交易吞吐量.
双向通道支付过程可分为3个阶段:1)初始阶段,用于双方建立通道;2)支付阶段,通道双方完成支付,即通道状态的更新;3)关闭通道阶段,双方关闭通道,赎回通道中自己的资金,在关闭通道过程中,一旦某一方作恶,即利用之前的通道状态来谋利,将会触发提交阶段.在提交阶段中,双方提交证据(交易)使得外界(区块链)确定通道内的真实状态.
2.1.1 闪电网络
闪电网络[11]是最早的通过链下支付通道形成支付网络、提升区块链交易吞吐量的方案.闪电网络主要包含2个协议RSMC(recoverable sequence maturity contract)和 HTLC(hashed timelock con-tract)[12].其相关其他方案主要是在2个协议上进行修改.RSMC主要实现了双人双向的支付通道,使得通道双方可以在交易不上链的情况下即时确认交易.HTLC则实现了系统内任意2个节点的转账可以通过一条支付通道来实现.通过这样的方式,只要在系统中存在一条Alice到Bob之间的通路,Alice就可以借用他人的通道来实现支付操作,无需直接与Bob建立通道.跨通道支付协议是基于条件支付的想法,即接收者必须满足一定的条件才能接受到钱款.在该协议中,条件支付的构造基于Hash原象,从而来同步支付路径上所有用户的支付情况[13].类似的条件支付在其他方案中也广泛存在[14-15].
Spilman[16]首次提出了基于比特币系统的通道支付协议.该协议包含2个阶段,初始阶段和支付阶段.初始阶段Alice首先向一个智能合约的脚本地址中进行充值,这个智能合约就是Alice和Bob的多签名脚本,只有在2人共同对交易签名时,才能从该脚本地址将钱转出.这样的支付通道建立后,双方就可以在交易不上链的情况下即时确认交易.具体的过程:以Alice向Bob支付为例,Bob将包含此次支付后通道中金额的分配情况的交易发送给Alice, Alice确认金额后签名并将其发送给Bob,Bob收到该交易后即确认这个支付操作的完成.当Bob想要关闭支付通道时,只需在最新的由Alice签名的交易中附上自己的签名后在系统中广播,矿工确认这笔交易并上链后,该支付通道即为关闭.通道支付协议实现了交易的即时确认.这个通道支付协议的特点是在通道的支付过程中属于Bob的金额始终是增长的,这保证了Bob只会向区块链公布通道内的最新状态,不然Bob就会受到损失.但是这样的特点使得通道支付协议存在局限性,即该通道支付协议只支持单向的支付,只满足单一的用户向商家支付的场景.
然而当支付通道协议要支持双向支付时,需要一种机制来保证通道双方始终公布通道内的最新状态,闪电网络中的RSMC实现了这个机制.
主要原理.通过时间锁(timelock)[17]的机制来延迟通道一方取回通道资产的时间,同时引入惩罚交易的概念来保证通道双方的资产状态是基于最新的交易情况,一旦某一方试图使用之前的通道状态来谋利,另一方可以在这段延迟时间内(timelock)发现,并没收其通道内资产作为惩罚.
如图1所示,每一轮通道状态更新需要通道双方更新Commitment交易以及上一轮Commitment交易所对应的惩罚交易.
Fig. 1 The transaction structure of lightning payment channel图1 闪电网络双向支付通道结构
1) 初始阶段.通道双方A,B生成未签名的funding交易,将各自的押金存入通道中,funding交易引用A与B的输出.A,B生成初始的commitment交易C1,A,C1,B,确定通道内的初始状态,并且交换对双方commitment交易的签名σA,σB.之后A,B双方交互对funding交易的签名,并将交易广播到区块链中.
2) 支付阶段.支付过程相当于通道状态的更新,即产生新的commitment交易Cj,A,Cj,B.此时通道内上一轮状态交易Cj-1,A,Cj-1,B和新产生的状态交易Cj,A,Cj,B同时处于有效状态,因此需要额外交互惩罚交易来作废上一轮的状态交易Cj-1,A,Cj-1,B.以A为例,A拥有状态更新交易Cj,A,包含2笔输出:输出1是A在通道内的资金,输出2是B在通道内的资金.正常情况下输出1的花费交易RDj,A设置了时间锁λ,即需要等待Cj,A经过λ区块确认后,该交易才能上链.在惩罚交易的机制中,为了防止A公布上一轮的状态交易Cj-1,A,A需要向B交互BRj-1,B,并签名σA,该交易没有时间锁,可以在Cj-1,A上链后立即上链确认.一旦A公布Cj-1,A进行作恶,B立刻公布BRj-1,B,将Cj-1,A的输出1作为罚金输入到自己的地址中.
3) 结束阶段.关闭通道需要通道双方公布最新的通道状态信息Cj,A或者Cj,B.
HTLC用于跨通道支付,实现了多个支付通道间资产的公平交换.其利用的是条件支付,即支付成功的条件为收款者给出秘密(Hash的原像).在不同的通道间可以利用这个秘密完成跨通道的支付,保证了支付的原子性,即不同通道同时支付成功或者同时失败.
如图2所示,假设Alice需要向Dave完成支付,Alice并没有直接和Dave建立的通道,但是Alice找到一条支付通路,即Alice,Bob,Caroline,Dave,使得Alice可以通过向Bob支付,Bob向Caroline支付,Caroline向Dave支付的方式完成支付.协议可以分为2个阶段:第1阶段Dave随机生成原像R,并且将Hash值H(R) 发送给Alice,Alice与Bob依此建立条件支付合约,通路上的其他节点以此类推.第2阶段,当通路上所有通道都建立条件支付合约后,Dave通过出示Hash原像R,完成与Caroline的支付,Caroline获得原像R后,能够完成与Bob的支付,以此类推,最终Alice与Bob完成支付后整个流程结束.
Fig. 2 The process of cross channel payment图2 跨通道支付流程
2.1.2 相关改进方案
针对闪电网络的改进主要包含效率、支付成本、通信开销、可持久化、寻路算法等.
1) Duplex payment channel
Duplex[18]支付通道协议利用了比特币系统中的时间锁机制设计了Invalidation Tree的结构,来保证通道的可持久性.同时利用2条单向通道,来实现A,B之间的双向支付.
Fig. 3 The structure of invalidation tree图3 Duplex通道支付协议结构
如图3所示,A与B之间有2条单向支付通道,用于完成A,B间的相互支付.不同于闪电网络需要设计惩罚机制来保证结束通道时,双方公开最新的通道状态,Duplex利用了单向通道支付方向单一的特点,保证了分别作为2条通道的收款者A,B只会公开各自收款通道的最新状态.由于2条通道的金额互不联通,在高频交易的场景下,2条通道中付款者的押金将会很快被耗尽.因此,利用Invalidation 树和时间锁机制设计了reset阶段,使得2条通道内的资金可以相互转移.
在reset阶段中,通道双方基于2条通道内共同的资金分配情况,调整2条单向通道的状态,如A在通道中CAB作为付款者,在CBA中作为收款者,通过reset阶段,A可以将自己在CBA中收到的资金转入CAB中用作之后的支付.为了作废原先的状态,新的交易设置较小的时间锁,使得新的状态更新交易进入区块链.每进行一轮reset将会使新的记录通道状态的交易上的时间锁递减.
支付阶段和提交阶段与传统的单向通道支付协议类似,区别在于Duplex在结束通道时需要同时公开2条通道内的状态.
2) Raiden network
在闪电网络方案中存在着效率及可用性不足的缺陷.在其双向支付通道协议中,受制于比特币系统脚本的限制,为了防止通道某一方作恶,另一方需要存储对方在之前的每一轮交互的惩罚交易,而伴随着高频交易持续的发生,存储这些交易的代价将会越来越大,给用户带来极大的负担.而在跨支付通道协议中,在当前比特币系统中也仅支持基于Hash原象的构造,无法支持其他更灵活的条件.
这些问题在以太坊的方案中得到了解决.由于以太坊实现了图灵完备的脚本系统,可以实现更为灵活的智能合约.因此基于以太坊模型设计的Raiden[19]网络尽管借鉴了上述闪电网络的构造,却并不存在上述问题.在Raiden网络中,通道支付的惩罚交易是基于用户双方对交易轮数i的签名,只要一方出示了双方对更高交易轮数i的交易的签名,即可判定另一方作恶[20].
3) Sprites
Miller等人[21]提出了Sprites的方案,是针对闪电网络方案效率方面的改进,目的是解决当跨通道支付不成功时,用户所消耗的时间成本过大的问题.显然,通道支付协议可以看作一种储蓄卡机制,用户可以通过通道内储蓄的金额,来为他人提供跨通道支付,跨通道支付的手续费即用户提供跨通道支付的激励,类似储蓄卡的利息.然而用户在跨通道支付的过程中,用于支付的资金是处于冻结状态,直到跨通道支付成功或者失败.在该过程中用户无法使用被冻结的资金,因此用户在跨通道支付时所付出的成本可以用支付过程中被冻结的资金和所冻结的时间的乘积来衡量.
在原先的跨通道支付协议中,为了保证安全性,在通路上的所有用户获知Hash原象,从而完成支付的行为是串行的,因此在最坏情况下,支付路径上最后的用户需要等待支付路径的跳数(L)乘以每一跳交互的最长时延(t)的时间才能确认交易是否成功完成,而在这期间内他的资金处于冻结状态,而在Sprites的方案中,利用以太坊平台所提供的智能合约,设计了全局的Hash原像管理合约(preimage manage contract),从而使得用户可以通过调用该合约的状态,近似并行地获知交易是否成功完成,大大减少了在最坏情况下用户的等待时间,从而减少了时间成本.
Sprites的支付过程与Raiden网络类似,区别在于跨通道支付时条件支付协议.HTLC的条件是基于Hash原像的公布,在Sprites中条件支付的条件为Hash原像管理合约的输出.一旦支付通路上的某个节点向Hash原像管理合约提交Hash原像,通路上的其他节点就可以同时得知Hash原像的公布结果,并且确认跨通道支付的完成.
4) 可持久化机制
对上述支付网络的分析可知,支付网络对系统的交易吞吐量的提升是巨大的,方案理论上对系统的交易吞吐量没有限制.然而在实际应用中,由于链下支付网络将区块链看作解决通道双方争议,防止攻击者作恶的仲裁平台[22],因此所有结束通道的交易必须上链进行共识.因而频繁的开关通道势必会影响区块链的交易吞吐量,限制链下支付网络的优势.
Revive[23]实现了通道支付网络中的可持久化机制.主要原理为:利用跨通道支付协议,使得在支付网络中存在支付环路的节点间可以通过跨通道支付,模拟正常的支付,将押金充裕的通道内的资金流向押金将要耗尽的通道.
5) 寻路算法
在实际应用中一个完整的链下支付网络方案除了需要解决双向通道支付和跨通道支付外,还需要设计高效的寻路算法.在链下支付网络方案中,节点间建立通道需要较高成本(交易费、押金和交易确认时间),因此一个节点能够维持的通道数是有限的,而频繁的建立和关闭通道会影响到通道支付协议的效率和可用性.从支付开销的角度讲,在实际应用中,链下支付网络应尽量借助他人已有的通道来实现支付功能,而不是直接建立与收款者建立通道.因此存在着在支付网络中寻找支付通路的需求.现有相关的研究成果较少,主要包含2类:基于最大流算法和基于Landmark算法.基于最大流算法要求节点保存着全网的通道图,并利用经典最大流算法,如Push-Relabel[24]等算法寻找到目标点的可行支付路径;基于landmark算法主要包括Flare,Landmark Routing[25-27]等方案,将支付网络中建立的通道较多的若干节点作为信标点,使得用户只需存储相邻通道及到信标点的路径信息,支付时双方交换存储的路径信息并取交集,即可得到双方之间的支付路径.
比特币的共识机制PoW保证了开放网络中区块链状态的一致性(弱一致性),但其并未考虑效率,因此Eyal等人提出了Bitcoin-NG的方案,旨在提升一轮共识中的交易确认数,从而提升系统的交易吞吐量.Bitcoin-NG将比特币的共识过程拆分成2个阶段:记账人选取和交易排序.在记账人选取阶段仍然采用原先的工作量证明算法,由全网节点竞争该轮的记账权,在交易排序阶段由该轮的记账人确认交易并打包区块、全网广播.记账人选取阶段产生key-block的过程和原先比特币中产生区块的过程一致,因此Bitcoin-NG基于key-block的最长链原则保证了其安全性(容错)和比特币一致.同时,当节点通过工作量证明成为记账人后,其可以在下一位记账人产生之前,确认打包交易并生成micro-block.其实质是利用了两轮记账人选取阶段的空隙,由记账人产生包含交易数据的micro-block,在不影响其容错性的前提下,提升了一轮共识过程中的交易确认数.
然而,在Bitcoin-NG中也引入了记账人大量广播micro-block造成系统网络阻塞的风险.因此Wan等人[28]提出了Goshawk方案,设计了双层链+两级挖矿机制,即key-block和micro-block是由全网节点通过2个难度不同的工作量证明机制来产生,从而有效避免了micro-block swamping攻击;此外, Goshawk引入了投票机制来抵抗自私挖矿和51%算力攻击,并支持系统协议的动态升级.该方案在保持了Bitcoin-NG原有的效率提升基础上,进一步加强了系统的安全性和可用性.
除2.1节和2.2节2类方案外,在借鉴传统分布式数据库领域的分片技术的基础上,通过在开放的区块链网络中设计可靠的分片机制也可以提高系统的交易吞吐量[29-31].
分片机制通过将全网节点划分成不同的集合(shard),使每个集合独立并行地运行共识协议,完成交易确认,从而使得系统的交易吞吐量随着全网节点的增加而近似线性地增加.
传统的区块链共识机制的容错上限为51%,如比特币的工作量证明敌手在不掌握51%算力的情况下难以发动双花攻击.不同于传统区块链共识机制,在原有系统容错性保持不变的情况下,分片机制需要面临的挑战是1%攻击,即保证攻击者在分片过程中无法在任何一个分片中实现51%攻击,以及如何保证攻击者无法在分片处理交易的过程中,实现双花攻击.
2.3.1 随机算法
有效抵御1%攻击的措施是在分片的过程中,参与共识的节点需要随机地被分配到不同的分片,这样当分片大小(size)足够大时,分片内出现51%攻击的概率可以忽略不计.当前在区块链分片机制中被使用的随机算法主要基于2类:工作量证明(PoW)和权益证明(PoS).两者实质都是随机过程.
在Elastico和Zilliqa的方案中都采用了工作量证明作为分片的随机算法.上述方案在片内进行共识时采用了PBFT算法.PBFT算法的安全假设基于在参与共识的节点数中恶意节点不超过1/3,因此为了抵御女巫攻击[32](sybil attack),节点需要在一轮共识开始的阶段,进行简单的工作量证明以获得参与PBFT[33]共识的身份.将节点划分成不同集合的标准基于节点工作量证明的结果.通过建立概率模型可以得到当分片大小达到600时,即使攻击者拥有1/3的算力,其能够控制一个分片(即在任何分片中拥有超过1/3节点)的可能性可以忽略不计(2-20).
其具体过程可抽象为:
1) 节点进行工作量证明获得身份,并划分成不同的集合.
2) 在各个分片内部通过PBFT算法,进行分片内的交易共识
3) 将各个分片共识后的交易集及共识过程中的签名广播给某一个分片,由该分片校验签名,进行分片内共识后,打包成区块并全网广播.
2.3.2 交易处理
根据区块链的模型可以将系统的交易处理分为2类:基于UTXO模型和基于账户模型.
Elastico的方案基于UTXO模型,因此在交易处理时,通过交易的输入作为基准映射到不同的分片处理.在UTXO模型中,攻击者想要实现双花必须产生2笔引用同一输出的交易.因此Elastico可有效抵御在交易处理过程中的双花攻击.
Zilliqa的方案基于账户模型,因此在交易处理时,通过发送者的身份作为基准映射到不同的分片中.一轮共识过程中,不同发送者的交易可能映射到不同的分片(不同验证者),但同一发送者的交易都会由同一分片处理,因此分片内的诚实节点对特定发送者的状态是确定的.因此其能够在基于账户的模型下抵御双花攻击.
在本节中,我们将首先分析比较各种链下支付协议,再分析对比Bitcoin-NG、链下支付协议及分片机制的优缺点和适用场景,并基于此给出下一步研究方向.
如表1所示,不同的支付通道协议在不同的阶段交互所需要的签名数不同.在建立通道阶段,所有的通道支付协议都需要对funding交易进行签名,闪电网络需要通道额外交互初始的commitment交易来确定初始状态,Duplex方案中则需要额外建立深度为d的初始Invalidation 树来确定初始状态.Raiden和Sprites中初始状态由funding交易生成,智能合约通过funding交易确认通道初始状态,不需要额外的update交易.在支付阶段,由于Duplex使用了2条单向通道实现双向通道的功能,因此,一轮支付只需要更新一条单向通道的状态,单向通道的状态更新在交互时只需要付款者一方的签名.而其他方案基本采取了与闪电网络相同的通道更新方式,因而每轮更新需要通道双方各自对通道内的最新状态进行签名.在结束通道阶段,Duplex需要提交2个单向通道的状态,而闪电网络由于设计了惩罚交易来作废通道之前的状态,因此需要在提交阶段公开3笔交易,而Raiden和Sprites等方案采用了其他更新状态的机制,因此只需要在提交阶段公开记录最新状态的交易,而不需要额外的惩罚交易.Duplex在协议运行中还包括reset阶段来调节2条单向通道间的资金分配,而其他协议均设计了双向支付通道,并不包含该阶段.
如表2所示,不同的支付通道协议在性能,隐私性,存储开销,支付开销上存在着差异和折中.所有通道支付协议都实现了双向支付的功能,Duplex采用2条单向支付通道,而其他协议都只有一条双向支付通道.在通道双方的本地存储开销上,Duplex采用了Invalidation树的结构来作废通道之前的状态,其存储开销取决于树的深度d.闪电网络需要双方存储作废之前状态的所有惩罚交易,因此其存储开销取决于交易的轮数N.在其他方案中双方都只需存储最新一轮的状态更新交易.当结束通道时,基于通道内最新状态的交易会进行上链共识,闪电网络引入了惩罚交易,一轮完整的状态更新需要3笔交易.而Duplex需要公开2个单向通道内的最新状态,因此需要上链2笔交易,其他支付通道协议只需要共识一笔交易.在支付开销上,Sprites使用了基于智能合约执行结果的条件支付协议,因此在跨通道支付过程中资金所需要被冻结的时间最短,为通路跳数L加上通道内双方交互的最长时延t.其他协议均需要两者相乘.
Table 1 Comparison on the Number of Signatures Required for Each Stage
Table 2 Characters of Different Payment Channels
在3类主流的提升区块链性能的方案中,链下支付网络并未真正提升区块链本身的交易容量,其大量交易在离线情况下完成,而将区块链作为仲裁平台,只有在关闭通道分配通道资金或者通道双方对通道状态存在不一致的情况下,才将交易公开上链.因此,尽管链下支付网络对交易吞吐量的提升是巨大的,完全可以满足现有需求,但是其只能支持数字支付领域,在区块链的其他应用场景中,链下支付网络技术无法提升区块链的性能.同时,链下支付网络在建立通道和关闭通道阶段均有交易上链的过程,因此在实际应用中其性能提升有赖于区块链本身的交易容量.而Bitcoin-NG和分片机制旨在提升区块链本身的性能,提高了一轮共识过程中的交易处理数.然而受制于分布式网络结构复杂,节点的存储空间和处理性能有限等限制,两者对系统交易吞吐量的提升无法和链下支付网络相比.实验表明,在Bitcoin-NG等方案中,系统交易吞吐量的量级在102,分片机制对系统交易吞吐量的提升与全网参与共识的节点呈近似线性关系,而链下支付网络对系统的交易吞吐量在理论上没有作限制.但是后2个方案是直接提升区块链本身的性能,因此其能够在区块链的其他应用场景,如分布式文件存储、征信、供应链及金融领域等起到提升系统性能的效果.
基于上述对提升区块链性能的3类主流方案的分析,未来进一步的研究方向包括4个方面:
1) 在链下支付网络方案中,当前在支付开销、交互开销上最优的方案是Sprites,然而其引入的原像管理合约只能应用于以太坊等平台中,无法在现有比特币中实现.而实际中基于比特币的区块链平台众多,因此需要研究基于比特币平台的链下支付网络效率改进方案.
2) 在实际应用中,链下支付网络的高效寻路算法也值得进一步研究,当前的2类方案中,基于最大流方案存储开销和运行成本过大,基于Landmark的方案中虽然不需要节点存储整个网络图,但其寻路的成功率取决于选取信标点集的方式和大小,并且无法保证寻找到的路径是否为最优路径.
3) 在分片机制中系统交易吞吐量的提升取决于参与全网参与共识的节点数,然而当前在其激励机制方面研究不足,同时对其安全性的相关分析也较少,并且已有的方案在分片过程中,如Elastico和Zilliqa,由于网络延迟等因素可能存在被恶意者攻击的可能.
4) 在Bitcoin-NG等方案中,可考虑结合DAG(directed acyclic graph)结构进一步提升交易吞吐量.
跨链技术旨在解决链与链之间的交互问题[34].当前跨链交互的过程可分为2个阶段:资产在链A上的锁定阶段和相应资产在链B上的解锁阶段.其面临的主要挑战是链A上的资产如何保证被锁定,如何确定解锁链B上的资产以及保证资产的锁定与解锁在链A,B之间保证原子性,即2条链之间相应的资产要么同时锁定/解锁成功,要么同时锁定/解锁失败.针对上述2个挑战,不同的跨链技术被提出,主要包含4类:
1) 多中心化公证人;
2) 侧链/中继技术;
3) 基于Hash锁定;
4) 分布式密钥控制.
公证人机制利用公证人来保证资产在不同链上的锁定与解锁.主要利用了区块链脚本中的多签名脚本,可以实现链与链之间双向的交换.具体流程为:用户在链A上向多个公证人的多签名脚本地址上转入链A的资产进行锁定,公证人在确认(共识)后在链B向用户的地址释放相应的资产.
侧链技术[35-36]或者中继技术[37-38]提供的是一种更去中心化的解决方案.不同于公证人机制,侧链技术或者中继技术旨在通过去中心化的方式使得不同链之间的状态可以互相交互.
以较早的BTC-Relay为例,BTC-Relay通过ETH上的智能合约存储比特币中的区块头,使得ETH链上可以获知比特币系统中发生的事件,实现了ETH作为比特币侧链的功能.利用比特币区块头数据相当于在ETH里创建了一条简易的比特币区块链.但是由于ETH智能合约中比特币的区块头信息是由中心化的节点(Relayer)提供的.因此其去中心化程度不足.使用BTC-Relay可以实现比特币和ETH之间的兑换,具体流程如下:
1) Alice和Bob使用智能合约来进行交易,Alice使用BTC币兑换Bob的ETH币,Bob把他的ETH币发送到智能合约中;
2) Alice向Bob的地址发送BTC币;
3) Alice通过比特币的交易信息,生成SPV证明,并将证明输入到ETH系统上的合约中;
4) 合约在被触发后确认SPV证明,然后释放之前Bob的ETH币到Alice的地址中.
Cosmos使用中继技术来实现不同区块链之间数据的交互.如图4所示,在Cosmos中不同的区块链相当于不同的区域(Zone),Hub连接所有的区块链,实现链于链之间的中继功能,每条链上状态的更新都需要告知Hub,因此Hub中的状态相当于所有链的叠加,保证了所有链中的代币总量不变.Cosmos中链A与链B之间状态的确认可以通过Hub来实现.
Fig. 4 Structure on cosmos relay network图4 Cosmos中继技术结构
Hash锁定的原理与闪电网络中HTLC相同,将Hash的原象作为秘密,利用条件支付,可以在无可信第三方参与的情况下保证不同交易的原子性,实现公平的跨链交换.
如图5所示,跨链原子交换的流程为:
1)A产生随机数r,并计算r的Hash值h,将h发送给B.
2)A与B利用HTLC相继将用于交换的资产锁定.要求A的锁定时间需要比B长,即T1 3)A通过公布原像r获得B锁定的资产.同时B得到了秘密r,并且通过公布r在另一条链上得到A锁定的资产. Fig. 5 Process of cross-chain atomic swap图5 跨链原子交易流程 通过分布式密钥控制机制来实现去中心化的跨链交换的方案是由Fusion[39]提出的,其利用密码学中的分布式密钥生成算法[40]和门限签名技术[41]保证了跨链过程中资产锁定和解锁由系统参与共识的所有节点决定并且在此过程系统中的任何节点或者少数节点联合都无法拥有资产的使用权.整个过程可分为2个阶段:锁定资产阶段和解锁资产阶段.以比特币和Fusion交互为例: 锁定阶段: 1)A向Fusion发起锁定资产请求,通过调用智能合约,利用分布式密钥生成算法.该过程中,智能合约将密钥碎片随机分发给Fusion中不同的节点. 2) 智能合约返回私钥对应的公钥地址.A收到地址后,将资产锁定在该公钥地址中. 3) 智能合约确认A的资产确实锁定后更新A在Fusion中的资产信息. 解锁阶段: 1)A向Fusion发起解锁资产请求. 2) 智能合约确认A在Fusion中的资产信息后,锁定A在Fusion中的相应资产并广播解锁交易签名请求. 3) 拥有私钥碎片的节点检查解锁交易后签名. 4) 节点将签名后的交易在比特币平台广播,将锁定的资产输出到A的地址. 5) 智能合约确认A的资产确实解锁后更新A在Fusion中的资产信息. 在本节中,我们将分析比较各种典型跨链技术的优缺点和适用场景,并在此基础上给出相关研究挑战. 如表3所示,不同的跨链技术在适用的场景、信任模型、支持的功能以及实现难易程度上存在差异和折中.在应用场景中,中继技术中的BTC-Relay只支持单向的跨链交换,如通过BTC-Relay实现了ETH作为BTC的侧链功能,然而BTC不是ETH的侧链,而采用中继链技术的其他中继方案和另3种技术都实现了不同链之间的双向交换.从信任模型上,公证人机制通过多中心化的方式,安全假设要求多数公证人的诚实,而其他方案的安全假设则和主链一致,即51%假设.在具体应用上,Hash锁定只支持代币的兑换,链之间的数据仍是不相通的,而其他方案既支持代币的兑换,又能实现数据的交互,可以满足更多的应用场景,如跨链资产抵押,跨链信息交互等.从实现角度说,公证人机制和Hash锁定都是较成熟且简便的方案,但是带来的缺点是引入中心化机构,改变了原本的信任模型行或者支持功能单一,只能满足代币兑换场景,而其他方案设计较为复杂,但是能满足更多业务场景. Table 3 Characters of Cross-Chain Technology表3 不同跨链技术的特性对比 在跨链技术方面,当前的研究挑战主要包括2个方面: 1) 当前支持双向跨链信息交互的跨链技术如中继和分布式密钥,都需要不同链之间彼此获知链的更新状态,其大多采用了成熟的SPV证明技术,使用区块头在不同链中构建了微型的目标链,然而当需要交互的链数目较多时,其带来的开销必然对区块链的性能带来影响. 2) 在当前的跨链技术中,除了支持应用有限的基于Hash锁定方案,其余方案出于安全和效率的考虑,直接或间接的引入了第三方,如SPV证明中区块头的提供者,因此可能存在着第三方作恶的风险. 区块链技术拥有去中心化、不可篡改、可编程等特点,这使得其在数字支付、分布式存储、征信、供应链、金融等领域中拥有广泛的应用前景.然而其所面临的可扩展性瓶颈,包括性能效率低下、功能难以扩展,都限制了区块链技术的应用. 本文对近些年来解决区块链可扩展性问题的方案和技术进行了综述,讨论了提升区块链性能的3类主流方案和扩展区块链功能的4类代表性跨链技术,详细分析比较了各种方案和技术的优缺点及适用场景,并讨论了需进一步研究的问题和方向.4.4 分布式密钥控制
5 跨链技术分析对比与挑战
5.1 现有技术分析对比
5.2 相关研究挑战
6 总 结