摘要区块链技术作为分布式账本的关键技术之一,其在不依赖于任何第三方可信机构的前提下,解决开放网络中的信任问题,去中心化的特点使其有着广泛的应用前景,但面临着可扩展性不足的瓶颈.目前,区块链可扩展性的瓶颈主要体现在2个方面:性能效率低下、功能难以扩展.以比特币为例,从性能上讲,当前仅支持7笔?秒的交易吞吐量,显然无法满足现今数字支付的场景,也无法承载在数字支付领域外的其他应用.从功能上讲,当前不同区块链系统之间的资产或数据难以交互.在现实情况中,不同的区块链系统承载着不同的业务和需求.为此,需要实现链与链之间的交互,才能打通不同区块链之间的信息或价值通道,避免每一区块链成为信息或价值孤岛,并在此基础上实现价值互联网.区块链可扩展性的研究已经引起了学术界及产业界越来越多的关注,将从区块链性能提升及功能扩展2个角度出发,分别介绍区块链可扩展性领域的相关技术和研究进展,其中包括3类当前主流的、提升区块链交易吞吐量的方案:链下支付网络、Bitcoin-NG和分片机制;以及4类代表性的、实现区块链功能扩展的跨链互通技术.分析对比不同方案的特性、适合场景及可能存在的不足之处,并在此基础上给出进一步研究方向.
关键词区块链;可扩展性;链下支付通道;Bitcoin-NG;分片机制;跨链技术
区块链技术起源于中本聪[1]提出的比特币系统,其真正在开放式的P2P网络中实现了不依赖于可信第三方的数字支付系统.这种去中心化的特性大大有别于现有的商业支付系统,改变了现有系统中的安全信任模型.在比特币的信任模型中,用户之间的信任源于对整个系统的信任,而不是任何第三方中介,只要整个系统的安全假设被满足,这种信任关系就可以持续.去中心化的特性使得区块链技术受到了越来越多的关注,有着广阔的应用前景.
然而当前的区块链系统存在严重的可扩展性瓶颈:
1)交易吞吐量不足.以比特币系统为例,当前系统最高只能支持7笔?秒的交易确认(以区块大小为1MB为例)[2],这使得其难以承担大量交易的及时确认,无法满足现实的应用需求.同时由于其共识过程中可能存在分叉,一笔交易至少需要6个区块的确认(这是推荐的确认数),即至少需要等待1h才能确认单笔交易,这些都限制了其大规模的应用[3];
2)链与链之间的资产(数据)难以交互.不同的应用场景有着不同的用户和需求,因此在现实情况中,很难要求一个区块链系统来承载整个现实生活中的所有应用.为此需要实现链与链之间的交互,才能使得区块链之间不会彼此成为孤岛,从而实现真正的价值互联.
本文阐述当前区块链可扩展性问题的现状,从区块链提升性能和功能扩展2个方面,综述当前主流的解决区块链可扩展性的技术:链下支付网络、Bitcoin-NG、分片机制和跨链技术,分析比较它们的优缺点,并指出现有方案所面临的主要问题和未来研究方向.
1概述
区块链技术提供了在开放网络中新的信任模型,使得任何用户可以在不需要第三方信任机构的情况下建立信任关系,这样的信任关系源于用户对整个系统的信任,而无需信任单个节点.
这样的去中心化特性带来的代价之一就是区块链的性能,主要的指标就是系统的交易吞吐量.当前比特币系统只能支持最高7笔?秒的交易吞吐量,而主流的支付平台如Visa,能够实现平均2000笔?秒,以及峰值56000笔?秒的交易处理速度[4],显然两者之间存在着巨大的差异.
这主要是由于比特币系统的共识机制所带来的代价.在传统的数字支付平台中,往往存在着中心化的第三方机构来完成交易的确认,系统中的其他节点无条件信任第三方机构的执行结果.而在以比特币为代表的数字货币系统中,需要全网的节点来对系统中的每一笔交易进行共识,每个节点都拥有各自的账本并且通过共识机制来完成对账本的修改并保证一致性.在当前区块链的共识机制中,无论是工作量证明机制(proofofwork,PoW)还是权益证明机制(proofofstake,PoS)本质上都是全网节点参与并竞争账本的记账权,并且保证了系统中的任何节点能够独占记账权并进行双花攻击的代价极高或者攻击成功的可能性极低.每轮拥有记账权的用户以区块的形式确认交易,这样的共识机制和区块大小的限制使得每轮共识的交易确认数有限,造成了区块链系统交易吞吐量的瓶颈.
相关知识推荐:区块链技术论文容易成功发表吗
显然增大区块容量是一个能够提升区块链交易吞吐量的简单办法[5-6].更大的区块能够使得一轮的共识过程中确认更多的交易.然而仅仅提高区块大小并不能完全解决问题.首先是更大的区块可能会导致网络的拥塞,影响系统的性能,其次以比特币为例,即使将当前的区块大小提升到8MB,系统的交易吞吐量依然小于100笔?秒,依旧无法满足现实的业务需求.
当前针对区块链性能提升的主流方案主要包含3类:
1)利用支付通道技术,通过链下交易的方式来提升交易的吞吐量,同时保证交易的安全性;
2)Bitcoin-NG[7]等方案,将原先比特币中的共识过程拆分成记账人选取和交易排序2个阶段,通过记账人选取阶段保证区块链安全性,在交易排序阶段由记账人进行大量交易数据的处理.其在保证了分布式一致性的基础上,提升了一轮共识过程中的交易确认数,从而在区块链上增加交易吞吐量;
3)分片机制,通过将全网节点划分成不同的集合(shard),每个集合并行地进行共识,确认交易,从而使得系统的交易吞吐量随着全网中参与共识节点的增加而近似线性地增加.
区块链的可扩展性问题除了表现在性能上,即系统的交易吞吐量外,在功能上也同样存在瓶颈.区块链技术诞生之初,主要是为了实现去中心化的数字支付系统,然而随着人们对区块链的理解和技术的发展,出现了各种区块链项目,他们有着不同的特性,能够满足不同的业务需求.在数字支付领域,有ETH[8]基于账户模型实现了图灵完备的智能合约,Zcash[9]利用零知识证明技术实现了交易过程中的隐私保护等.利用区块链去中心化的特性,也可以实现除数字支付以外的应用[10],如分布式文件存储、征信、供应链及金融应用等.然而在区块链设计之初很少考虑到不同的链之间交互的需求,这使得不同的链之间完全割裂,不同的资产无法相互转换,不同的应用无法相互协同,从而无法实现真正的价值互联.为此,需构建跨链技术来解决链与链之间的交互问题.
当前代表性跨链技术主要包含4类:
1)公证人技术;
2)侧链?中继技术;
3)基于Hash锁定技术;
4)分布式密钥控制技术.
其中公证人技术引入了可信第三方,作为跨链过程中的资产保管人,侧链?中继技术利用SPV(simplifiedpaymentverification)证明、中继链等技术,实现了不同区块链之间的可信互通,基于Hash锁定利用了Hash原像脚本,实现了公平的跨链资产交换,分布式密钥控制技术利用分布式密钥生成算法,使得跨链过程中的资产保管人角色由全网节点承担,而不是少数第三方.
2性能扩展的主流技术
在本节中,我们主要介绍3类提升区块链性能的主流技术,包括链下支付网络技术,涉及经典闪电网络及其相关改进方案的构造;提升链上交易容量的Bitcoin-NG方案;提升链上交易容量的分片机制.
2.1链下支付网络
链下支付网络通过将大量交易离线处理,同时将区块链作为仲裁平台,处理通道支付过程中的异常情况,如双方对通道的状态有分歧等,其间接地提升了系统的交易吞吐量.
双向通道支付过程可分为3个阶段:1)初始阶段,用于双方建立通道;2)支付阶段,通道双方完成支付,即通道状态的更新;3)关闭通道阶段,双方关闭通道,赎回通道中自己的资金,在关闭通道过程中,一旦某一方作恶,即利用之前的通道状态来谋利,将会触发提交阶段.在提交阶段中,双方提交证据(交易)使得外界(区块链)确定通道内的真实状态.
2.1.1闪电网络
闪电网络[11]是最早的通过链下支付通道形成支付网络、提升区块链交易吞吐量的方案.闪电网络主要包含2个协议RSMC(recoverablesequencematuritycontract)和HTLC(hashedtimelockcon-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交易所对应的惩罚交易.
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完成支付后整个流程结束.
2.1.2相关改进方案
针对闪电网络的改进主要包含效率、支付成本、通信开销、可持久化、寻路算法等.
1)Duplexpaymentchannel
Duplex[18]支付通道协议利用了比特币系统中的时间锁机制设计了InvalidationTree的结构,来保证通道的可持久性.同时利用2条单向通道,来实现A,B之间的双向支付.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)Raidennetwork
在闪电网络方案中存在着效率及可用性不足的缺陷.在其双向支付通道协议中,受制于比特币系统脚本的限制,为了防止通道某一方作恶,另一方需要存储对方在之前的每一轮交互的惩罚交易,而伴随着高频交易持续的发生,存储这些交易的代价将会越来越大,给用户带来极大的负担.而在跨支付通道协议中,在当前比特币系统中也仅支持基于Hash原象的构造,无法支持其他更灵活的条件.
这些问题在以太坊的方案中得到了解决.由于以太坊实现了图灵完备的脚本系统,可以实现更为灵活的智能合约.因此基于以太坊模型设计的Raiden[19]网络尽管借鉴了上述闪电网络的构造,却并不存在上述问题.在Raiden网络中,通道支付的惩罚交易是基于用户双方对交易轮数i的签名,只要一方出示了双方对更高交易轮数i的交易的签名,即可判定另一方作恶[20].
3)Sprites
Miller等人[21]提出了Sprites的方案,是针对闪电网络方案效率方面的改进,目的是解决当跨通道支付不成功时,用户所消耗的时间成本过大的问题.显然,通道支付协议可以看作一种储蓄卡机制,用户可以通过通道内储蓄的金额,来为他人提供跨通道支付,跨通道支付的手续费即用户提供跨通道支付的激励,类似储蓄卡的利息.然而用户在跨通道支付的过程中,用于支付的资金是处于冻结状态,直到跨通道支付成功或者失败.在该过程中用户无法使用被冻结的资金,因此用户在跨通道支付时所付出的成本可以用支付过程中被冻结的资金和所冻结的时间的乘积来衡量.
* 稍后学术顾问联系您