区块链性能的量化分析研究

2020-02-19 14:07甘国华吴凌云
计算机工程与应用 2020年3期
关键词:传输速度矿工阈值

王 旭,甘国华,吴凌云

1.中国科学院 数学与系统科学研究院 应用数学研究所 管理、决策与信息系统重点实验室,北京100190

2.北京太一云科技有限公司,北京100012

3.中国科学院大学 数学科学学院,北京100049

4.中国科学院 国家数学与交叉科学中心 大数据与区块链实验室,北京100190

5.北京科技大学,北京100083

1 引言

自从2009年中本聪发表了论文《比特币:一个P2P电子现金系统》[1],区块链作为一种去中心化的分布式数据库技术,逐渐进入人们的视野中。区块链技术的主要特性包括去中心化、公开透明、可追溯、防篡改等。区块链技术利用数字加密技术以及分布式共识算法,可以实现在无需信任单个节点的情形下建立一个去中心化的可信任系统。

区块链技术已经被应用到许多行业和领域。Dennis等人针对目前名誉系统所存在的安全漏洞,设计了一种基于区块链技术的用于多重网络的名誉记录系统[2]。赵赫等人基于区块链技术提出了一种传感数据真实性保障方法,能够保障采样机器人在执行任务的时候,不会受到不当的人为影响[3]。张宁等人把区块链技术应用到能源互联网中,介绍了区块链技术对能源互联网中源、网、荷、储等不同主体在计量认证、能源金融等不同环节所发挥的作用,通过碳排放权认证为例说明区块链技术在能源互联网中的具体应用[4]。陈化飞等人将区块链技术应用到由生产商和零售商构成的农鲜产品供应链的决策中,抑制了生产商谎报鲜活度信息这一行为,不仅提升供应链总利润,也提升了各方成员的利润[5]。张帅等人基于区块链智能合约,构建众筹区块链,开发了众筹合约系统,保障了众筹项目的可靠与可信[6]。在军事方面,王飞跃等人介绍区块链在军事领域的潜在应用,提出了平行军事区块链的概念框架、理论和方法体系,有助于促使不对称信息军事博弈转变为对称信息博弈,不对称的战争转化为对称的合作[7]。

学术界从理论上对区块链技术也进行了积极探索。Kawase等人提出了区块链系统的排队模型,对整个系统进行研究,得出了一味增加区块的大小不是解决交易确认时间问题的有效方法[8]。Li等人在Kawase等人的基础上进行了改进,设计了具有两个不同服务阶段的分组服务排队系统,构造了排队中交易数量、区块中交易数量以及交易确认时间三个量化指标[9]。Decker等人研究在比特币网络中的信息传递,给出了区块链分叉的概率模型,也验证了信息传递的延迟是造成区块链分叉的主要原因[10]。Eyal等人针对区块链可扩展的限制,提出了新的可扩展的区块链协议—比特币NG[11]。他们还构造了一些对系统安全性进行量化的指标,来对这两种区块链协议进行比较。Lewenberg等人用合作博弈理论模型研究矿池成员如何公平合理地分配矿池收益[12]。Sompolinsky等人针对高的吞吐量会引起安全性降低的问题,提出了GHOST规则来代替最长链规则,在分叉的时候选择最重的子树来确定区块链中的主链[13]。袁勇等人通过将区块链技术与平行智能理论方法相结合提出了平行区块链的概念,使得目前的区块链技术具有计算实验和平行决策的功能,实现了描述、预测、引导相结合的区块链系统管理与决策[14]。袁勇等人还撰写了多篇综述来总结区块链的基本原理、技术方法和应用,区块链中的共识算法以及安全性问题、智能合约[15-18],为以后的研究提供了基础和参考。

区块链的性能瓶颈是目前区块链技术面临的一个主要挑战。区块链性能的主要指标是每秒交易处理量(Transaction Per Second,TPS)。例如比特币的TPS为大约为7(随着交易越来越复杂导致每笔交易记录所需空间增加,比特币的平均TPS已经下降到了3.5),远远低于信用卡每秒钟处理成千上万笔的交易量。区块链较低的性能很大程度上制约着其应用,尤其是应用于金融系统中高频交易的场景。有一些研究人员尝试提出各种技术改进区块链的性能。例如Lewenberg等人在区块链系统中引入了有向无圈图(DAG),一个区块可以引用多个祖先区块,使得网络中可以并行打包多个区块,以容纳更多的交易,而且交易确认时间会随着越来越多的用户加入而缩短[19],并在此基础上提出了一些新的区块链协议——SPECTRE[20]和PHANTOM[21]。蔡维德等人为了解决区块链性能瓶颈,使其更好地应用于对可扩展性、运行速度要求比较高的金融业,提出了双链模型,即账户区块链(Account BlockChain,ABC)和交易区块链(Trading BlockChain,TBC)[22]。除了理论研究,业界也提出了多个比特币扩容方案,例如2 MB区块、隔离见证(SegWit)、闪电网络等。2 MB区块方案直接将比特币区块大小的限制从1 MB修改为2 MB,这样可以增加单个区块中可记录的交易数量,提升区块链的交易处理速度。隔离见证方案则是通过把交易数据从基本结构中去掉,从而增加单个区块中记录的交易数量。闪电网络通过链下补充链上,在用户之间建立双向的微支付通道,将大量高频交易放在区块链之外进行,最终的阶段交易结果通过区块链来确认。曾帅等人对扩容关键技术以及发展现状进行了分析,总结了影响比特币扩容的宏微观因素[23]。

但是目前还缺乏在理论上对区块链性能与影响因素之间定量关系的研究。在部署区块链应用或者改善现有区块链应用的性能时,需要定量地分析各种参数(影响因素)对区块链性能的影响,对区块链参数进行优化。本文尝试建立区块链性能的数学模型,评估区块链各主要参数对区块链性能的影响,进而预测区块链性能,为部署和优化区块链的应用提供理论支持。

2 区块链技术与性能问题

区块链是由一系列区块有序链接起来所形成的一种数据结构。区块是组成区块链的基本单元,由两部分构成,即区块头和区块主体。区块主体利用默克尔树结构来记录交易信息,这些交易信息通过默克尔树的哈希过程形成唯一的默克尔根记录在区块头当中。区块头主要由版本号、父区块的哈希值、默克尔根、时间戳(timestamp)、难度目标以及随机数(Nonce)所组成。父区块的哈希值是根据前一个区块头数据进行哈希计算(SHA256算法)得到的,使得新挖出来的区块能够按照顺序接在前一个区块的后面。而难度目标和Nonce则是用于验证区块的有效性。产生区块的过程即所谓的挖矿,利用计算机(矿机)的算力,经过大量的计算所试出来的一个数(Nonce),使得区块的哈希值满足要求。最先构造出正确的区块并经过全体矿工验证的矿工,即可获得当前区块的记账权及相应的记账收益。

区块链的区块产生机制是随机的,这导致了分叉的产生。当两个矿工几乎同时挖出新的区块,由于矿工之间距离远近和信息传输时间的差异,其他矿工看到这两个区块的先后顺序是不一样的。矿工会把自己先看到的区块复制过来,在这个基础上进行后续的挖矿工作,此时区块链会出现短暂的分叉。由于不同的矿工选择了不同的链,就会导致分叉出来的两条链上的算力是有区别的,而区块生成能力和算力是成正比的,因此造成了两条链的增长速度不同。一段时间之后,总会有一条链的长度会超过另外一条链。在以工作量证明(Proof of Work,POW)机制为共识算法的区块链系统中,当发现分叉的时候,矿工总是选择把新的区块链接在累计工作量证明最大的链(即最长链)上,而其他链上的区块就会被抛弃掉,其中的交易自然变成无效的。

综上所述,区块链的性能主要是由区块生成速率和区块大小决定的,提高区块生成速率或者增加区块大小,都可以提高区块链性能。然而区块链性能与其影响因素之间并不是简单的线性关系。提高区块生成速率或者增加区块大小,也会导致分叉的增加,使得更多的区块成为无效区块,降低区块链性能。

3 区块链性能模型

区块链性能,即每秒交易处理量,可以由有效区块(即主链)的增长速率与每个区块包含的平均交易数量的乘积计算得到。记β为主链的增长速率(block/s),S为区块大小,R为平均每个交易记录需要的存储空间,则有:

在不产生分叉的情形下,所有生成的区块都被链接到主链上,因此主链的增长速率β就等于整个区块链系统的区块生成速率λ,此时区块链的性能很容易就可以计算得到:

这也是区块链性能的理论最大值。而实际情况下,分叉导致一些区块被链接到主链之外成为无效区块,因此有β≤λ。下面对β进行估计。

考虑一个简化的区块链生成概率模型。在这个区块链系统中有N个矿工,区块以λblock/s的速率匀速生成,生成每个区块的矿工服从独立的均匀分布,即每个矿工挖到区块的概率为1 N,区块在P2P网络中传输的平均时间为D s。在这个模型中,区块大小、P2P网络带宽等影响因素都是通过区块在P2P网络中传输平均时间D来影响区块链性能。具体的:

其中S为区块大小(MB),B为网络带宽(Kb/s),1 024是MB与KB单位之间的转换,8为KB与Kb单位之间的转换。

对所有区块按照其实际生成时间进行编号。假设最新的区块为第t个区块,由第Kt个矿工生成。随机变量Xi表示第t-i个区块从第Kt-i个矿工传输到第Kt个矿工所需要的时间。当Xi≤i/λ,第Kt个矿工在生成第t个区块时已经收到第t-i个区块的信息,第t个区块可以链接到第t-i个区块或者更新的区块上。相反的,当Xi>i/λ,第Kt个矿工无法及时收到第t-i个区块的信息,因此第t个区块无法链接到第t-i个区块上。

考虑在最新的区块生成时产生分叉的概率,可以得到β的期望。当X1≤1/λ时,系统不会产生分叉,此时β=λ。X1>1/λ且X2≤2/λ时,系统产生了分叉,最新的区块总是被链接到第t-2个区块上,此时β=λ/2。以此类推,可以得到所有情形下β的估计值。因此,β的期望为:

在上面的模型中,β的期望依赖于P2P网络中区块传输时间的分布。假设P2P网络下区块传输时间服从均值为D的均匀分布,即[0,2D]上的均匀分布。在这种假设下区块链的性能取决于P2P网络平均传输时间D与区块生成速率λ之间的关系:一个更接近实际数据的假设是P2P网络传输间服从众数为D的Gamma分布。此时β的期望为:

定理1在采用Gamma分布假设的区块链性能模型中,同比例地变化区块生成速率λ和区块大小S对区块链性能的影响是相同的,即对任意a>0有TPSTPS

证明

最后,来看一下区块链性能与安全性之间的关系。假设一个攻击者拥有的算力与正常算力之间的比值为q,即攻击者以qλ的速率生成区块,正常矿工以λ的速率生成区块。由于攻击者可以将自己生成的区块链成一个单链,当qλ>β时,攻击者产生的链的增长速度就会超过正常的主链,攻击者就有可能用他产生的链来取代主链。因此,可以把βλ作为系统的安全阈值。安全阈值越高,攻击者获胜需要的算力比例就越高,系统就越安全。

4 区块链性能的数值分析

给定P2P网络下区块传输时间服从的概率分布,根据上章建立的数学模型,可以计算得到区块链性能的预测值。当区块传输时间服从均匀分布时,模型可以直接计算得到结果。而对于更一般的概率分布,例如Gamma分布,则需要计算一个无穷级数。注意到当i趋于无穷大时趋于无穷小而P趋近于1,因此可以对级数进行截断以得到一个近似解。具体的,取一个阈值(例如10-100),当:

时停止计算,忽略掉后面的项。在后面的分析中,如果没有特别指出,模型中的参数采用如下的缺省值:区块生成速率为1/600 block/s,区块大小为1 MB,平均每个交易占用空间大小为500 B,P2P网络的平均传输带宽为512 Kb/s。

图1展示了当模型中区块的传输时间分别服从均匀分布和Gamma分布时,区块链性能与区块生成速率之间的关系。其中,带三角形的线表示理论最大值(即没有分叉发生时的区块链性能),带圆形的线表示均匀分布假设下的区块链性能曲线,带加号的线表示在Gamma分布假设下的区块链性能曲线。由图1可以看出,随着区块生成速率的增加,区块链性能的增加越来越缓慢,与理论最大值的差距越来越大。这是由于区块生成速率增加造成了分叉越来越严重,无效区块所占的比例越来越大,使得区块生成速率增加对区块链性能提升的边际效应越来越弱,增加的区块更多地成为无效区块,而不是用于提高区块链性能。例如当区块生成速率由1增加到2时,每秒交易量只增加了大约28%,新增区块中的72%都作为无效区块被浪费了。

图1 不同假设下的区块链性能

图2展示了当区块生成速率较低时的区块链性能。在区块生成速率低于0.1时,基于Gamma分布假设和均匀分布假设的模型结果都很接近理论最大值,意味着此时分叉很少。由图中可以看出,当区块生成速率为1/600≈0.001 67时(即每10 min产生一个区块),每秒交易量大约为3.5,与目前比特币的实际情形一致。

图2 区块生成速率较低时的区块链性能曲线

从图1和图2可以看出,基于均匀分布假设的模型估计得到的区块链性能要高于基于Gamma分布假设的模型,这是因为均匀分布假设低估了区块在P2P网络上传输的时间。在下面的分析中,将主要基于Gamma分布假设模型来分析区块生成速率、区块大小、P2P网络传输速度与区块链性能以及系统安全性之间的关系。

图3和图4给出了区块生成速率、区块大小与区块链性能之间的关系。图3所显示的结果与Zohar等人所模拟出来的结果(图4)是基本一致的[13],表明了模型的合理性。图中的虚线部分表示的是在没有分叉的情形下,区块的生成速率或者是区块的大小与区块链性能之间的关系,这种关系是线性的。当出现分叉之后,即图3和图4中的实线部分,它们之间就不再呈现出线性关系,随着区块生成速率的增加,当区块大小不变时,区块链性能在增加,但增加的速率越来越慢。随着区块大小的增加,在区块生成速率不变的情形下,区块链性能在增加,但也是增加的越来越慢。图3和图4也验证了定理1的结论,即通过增加区块生成速率和区块大小来提升区块链性能是等效的。例如,当区块生成速率为0.025 block/s,区块大小为1 MB时,区块链性能为44.79 tx/s。当区块生成速率变为0.05 block/s,区块大小不变,区块链性能为67.64 tx/s,而当区块生成速率保持0.025 block/s,区块大小变为2 MB时,区块链性能也为67.64 tx/s。区块大小增加一倍和区块生成速率增加一倍对区块链性能的影响是一样的。此时,区块链性能仅提升了约50%。

图3 不同区块大小时区块生成速率对区块链性能的影响

图4 不同区块生成速率时区块大小对区块链性能的影响

图5给出了不同区块大小时P2P网络传输速度对区块链性能的影响。虚线表示在没有分叉的时候,P2P网络的传输速度对区块链性能没有影响。在出现分叉后,可以看出P2P网络传输速度高于某个阈值时区块链性能不受网络传输速度的影响,而这个阈值与区块大小成正比。换句话说,更大的区块需要更快的网络。如果区块大小与P2P网络传输速度不匹配,则会严重降低区块链性能。因此不考虑P2P网络的实际情况,仅仅增加区块大小对区块链性能的提高会大打折扣。同样通过分析不同区块生成速率时P2P网络传输速度对区块链性能的影响可知,更快的区块生成速率也需要更快的网络。这与定理1的结论是一致的。

图5 网络传输速度对区块链性能的影响

最后分析区块链系统的安全性。图6给出了区块生成速率、区块大小与区块链系统安全阈值之间的关系。当没有发生分叉时,区块链系统的安全阈值为1,如图中的虚线所示。在考虑分叉之后,随着区块生成速率或者区块大小的增加,分叉越来越多,导致安全阈值显著降低。这种降低随着区块大小或者是区块生成速率的增加而减慢。区块生成速率固定为1/150(block/s)的时候,当区块大小由10 MB增加到20 MB,系统的安全阈值从0.55降低到了0.37,当区块大小由20 MB增加到40 MB,系统的安全阈值从0.37降低到了0.24。即当区块大小增加到40 MB时攻击者只需要有比正常矿工算力的24%多的算力就能获胜。图6所显示的结果与Zohar等人所模拟出来的结果(图5)也是基本一致的,进一步证明了本文模型的合理性[13]。

图6 区块生成速率、区块大小对系统安全阈值的影响

图7给出了不同区块大小情况下,P2P网络传输速度对区块链系统安全阈值的影响。可以看出,当P2P网络的传输速度高于某个阈值的时候,区块链系统的安全阈值达到了最大值,而这个阈值与区块大小成正比。这与网络传输速度对区块链性能的影响是一致的。不同区块生成速率时,P2P网络传输速度对区块链系统安全阈值的影响也是如此。因此如果区块大小、区块生成速率与P2P网络传输速度不匹配的话,就会严重降低区块链系统的安全性。

图7 网络传输速度对系统安全阈值的影响

5 结束语

本文建立了区块链性能数学模型,对影响区块链性能的因素进行量化分析。通过模型分析找出了影响区块链性能的主要因素及其与区块链性能之间的定量关系。一方面该模型可以为定制区块链系统提供理论支持。例如,根据实际应用的性能要求,通过区块链性能模型可以确定合适的区块链系统参数,包括区块生成速率、区块大小等。通过对区块链性能模型的分析可以知道,在设计提升区块链性能的技术方案时,需要综合考虑区块生成速率、区块大小、网络传输速度三方面的影响因素。如果这三方面影响因素之间不匹配的话,区块链的性能和安全性都无法达到预期目标。

另一方面该模型也可以帮助人们深入了解区块链性能的影响因素和机理,为进一步发展更高效的区块链技术提供参考。通过对现有区块链系统的分析发现,导致区块链可扩展性差的一个主要原因就是分叉。分叉频率的增加导致了区块链性能提升呈现边际效应递减,同时也严重降低了区块链系统的安全阈值。要解决这两方面的问题,需要考虑如何降低甚至消除分叉的影响。例如,基于有向无圈图(DAG)的新型区块链技术就是一种很有发展前景的解决方案[19-21]。希望本文所提出的区块链性能模型可以为后续的研究提供一定的理论指导和参考。

猜你喜欢
传输速度矿工阈值
金牌挖矿工
小波阈值去噪在深小孔钻削声发射信号处理中的应用
SSD移动硬盘大降价,可以考虑了
基于CS-TWR的动态阈值贪婪算法成像研究
老矿工的家国情怀
基于自适应阈值和连通域的隧道裂缝提取
矿工老李
基于迟滞比较器的双阈值稳压供电控制电路
电网中无线通信技术的应用探析
浅谈提升互联网信息传输速度技术分析