检测型的联盟区块链共识算法d-PBFT

2021‑03‑10
计算机应用,Journal of Computer Applications 2021,41(3):756-762ISSN 1001‑9081
自动化机械手臂
CODEN JYIIDU http ://www.joca
检测型的联盟区块共识算法d -PBFT
宇1,2,朱朝阳2,3,李金泽1,2,劳源基1,2,覃团发1,
2*
(1.广西大学计算机与电子信息学院,南宁530004;2.广西多媒体通信与网络技术重点实验室(广西大学),南宁530004;
3.华南理工大学电子与信息学院,广州510641)(∗通信作者tfqin@gxu.edu )
摘要:联盟区块链通常都会采用严格的身份准入机制,但然而该机制不能完全保证联盟网络中不会混入拜占庭
恶意节点,也不能担保现有的联盟成员节点一定不会被第三方敌手劫持利用。针对这类问题,提出了一种能够监控节点状态的检测型实用拜占庭容错(d -PBFT )共识算法。首先,选举主节点并校验主节点的其状态,以保证选举出来的主节点从未有过作恶历史;然后,经历“预准备—准备—提交”的共识三阶段过程,尝试来完成客户端提交的共识请求;最后,会根据三阶段完成的情况对主节点的状态进行评估,将有故障或作恶行为的主节点标记出来,并将作恶的主节点加入到隔离区等待处理。该算法在容忍一定数量拜占庭节点的基础上还能随时监控各个节点的状态,并对恶意节点能够进行隔离,从而降低恶意节点对整个联盟系统的不良影响。实验结果表明,采用d -PBFT 算法的网络拥有较高的吞吐量和较低的共识时延,并且在联盟网络中有拜占庭节点的情况下相较原实用拜占庭容错(PBFT )算法的共识生成量提升了26.1%。d -PBFT 算法不仅提高了联盟网络的健壮性,还进一步提升了网络的吞吐量。
关键词:联盟区块链;拜占庭错误;节点监控;检测型实用拜占庭容错共识算法;吞吐量中图分类号:TP311
文献标志码:A
d -PBFT :detection consensus algorithm for allianc
e blockchain
LIU Yu 1,2,ZHU Chaoyang 2,3,LI Jinze 1,2,LAO Yuanji 1,2,QIN Tuanfa 1,
2*
(1.School of Computer ,Electronics and Information ,Guangxi University ,Nanning Guangxi 530004,China ;
2.Guangxi Key Laboratory of Multimedia Communications and Network Technology (Guangxi University ),Nanning Guangxi 530004,China ;
3.School of Electronic and Information Engineering ,South China University of Technology ,Guangzhou Guangdong 510641,China )
Abstract:There is an identity authentication mechanism in alliance blockchain ,but even by using the mechanism ,
Byzantine malicious nodes still exist in the network ,and the member nodes in the alliance may be controlled and utilized by
金丝雀定位
the third -party enemies.To solve these problems ,a detection -Practical Byzantine Fault Tolerance
(d -PBFT )consensus algorithm that can monitor the node states was proposed.Firstly ,the primary node was elected and the its state was checked to ensure that the elected primary node never be malicious before.Secondly ,the consensus request submitted by the client was executed through the three -stage consensus process “pre -prepare -prepare -commit ”.Finally ,the primary node state was assessed according to the three -stage achievement state.If primary node was unstable or malicious ,it would be marked ,and the malicious node would be added to the quarantine to wait for processing.In this algorithm ,based on tolerating a specific number of Byzantine nodes ,every node state was monitored all the time and the malicious nods would be isolated.In
this case ,the bad impact of malicious nodes on the alliance would be reduced.Experimental results show that the network with d -PBFT algorithm has high throughput and low consensus delay ,and the consensus generation amount of the algorithm is 26.1%more than that of Practical Byzantine Fault Tolerance (PBFT )algorithm when alliance network includes Byzantine
nodes.The d -PBFT algorithm not only improves the robustness of alliance network ,but also improves the network throughput.
Key words:alliance blockchain;Byzantine error;node monitoring;detection -Practical Byzantine Fault Tolerance (d -
PBFT)consensus algorithm;throughput
0引言
在用户的信息安全方面,为了保证用户数据的完整性和
隐私性,本文将区块链技术应用到其中。区块链是一个去中心化的分布式账本数据库[1],其中去中心化是指区块链中的任何决策都是经过所有人投票决定的,需要一个达成共识的
文章编号:1001-9081(2021)03-0756-07
DOI :10.11772/j.issn.1001-9081.2020060900
收稿日期:2020‑06‑28;修回日期:2020‑11‑06;录用日期:2020‑11‑13。
基金项目:国家自然科学基金资助项目(61761007);广西自然科学基金资助项目(2016GXNSFAA380222)。作者简介:刘宇(1995—),男,四川成都人,硕士研究生,主要研究
方向:区块链、体域网数据安全;朱朝阳(1981—),男,广西贺州人,讲师,博士研究生,主要研究方向:密码学、区块链;李金泽(1996—),男,山东烟台人,硕士研究生,主要研究方向:认知无线电、区块链;劳源基(1996—),男,广西北海人,硕士研究生,主要研究方向:北斗精密点定位、区块链;覃团发(1966—),男,广西宾阳人,教授、博士生导师,博士,主要研究方向:无线多媒体通信、网络编码。
第3期刘宇等:检测型的联盟区块链共识算法d-PBFT
过程;而分布式账本表示每一个区块链节点会有一份数据账本用于存储达成共识的结果,这是能保证用户信息不会被篡改的关键所在。区块链作为一个去中心化的技术,意味着区块链中的分布式成员节点没有一个中心化、统一化的首领来发号施令,成员节点只能彼此之间相互讨论才能达成一致的结果,而这个讨论的方法和过程就是由共识层中的共识算法来决定的[2],这是分布式的区块链保持信息中心和用户的信息一致所要用到的关键技术。
目前,主流的区块链应用平台采用到了包括工作量证明(Proof of Work,PoW)、权益证明(Proof of Stack,PoS)、股份授权证明(Delegated Proof of Stake,DPoS)、Raft共识和实用拜占庭(Practical Byzantine Fault Tolerance,PBFT)等共识算法。不同的共识算法具有不同的特点,大致上可以分为两种类型:一种是BFT(Byzantine Fault Tolerance)类[3]共识算法,这类算法能容忍
网络中一定比例的拜占庭节点并达成共识,虽然网络会更加安全但共识耗费的时间相对更长。例如文献[4]使用了PoW算法来作为比特币网络的共识算法,该算法要求区块链节点计算随机哈希散列数值来证明自己的工作量,并且该结果必须得到至少51%的全网节点认同才能达成最终的共识。文献[5]提出了一种可扩展的拜占庭容错(Scalable
Byzantine Fault Tolerance,SBFT)算法,该算法能容忍小于1/3节点总数的拜占庭节点存在于网络当中,并且选定了一个Leader节点来统计区块链节点对共识提案的通过票数,该机制可以减少区块链节点间的通信开销,因此可以进一步扩展节点的规模。另一类算法是崩溃容错(Crash Fault Tolerance,CFT)算法[6],这类共识算法能容忍网络中的故障崩溃节点并达成共识,它虽然能帮助网络快速达成共识但是需要运行在有身份认证机制的网络中,且要保证节点都是诚实节点。文献[7]提出了一种能容忍节点故障崩溃的经典共识算法,在没有作恶节点的系统中这种算法能够容忍不超过50%的节点宕机故障,提升了系统的可用性。文献[8]提出了一种部分去中心化的共识算法,该算法中区块链节点的地位并不是完全平等的,算法会在开始共识之前选举出一个领导者,通过领导者来分发共识请求并收集投票从而大大地提升通信效率,但前提是推举出来的领导者是可信任的。
综上所述,共识算法中有的更注重共识安全,有的更侧重于共识效率,本文选择兼顾安全和效率的实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法加以改进,引入了节点监控和恶意
节点隔离的能力,剔除了残留在网络中的拜占庭节点,消除了联盟网络中的隐患并持续维护网络安全。
1实用拜占庭容错共识算法
1.1实用拜占庭共识算法概述
拜占庭将军问题(Byzantine Generals Problem),是Lamport等[9]在1982年提出用来解释一致性问题的一个虚构模型。在现实的联盟链系统中,从信息中心的节点中选举出Leader节点。通过先期的联盟链会员资格审查,能保证加入到联盟中的节点绝大部分都是诚实可靠的,但也不能完全确定其中就一定没有“叛徒”,这些“叛徒”节点称之为拜占庭节点,一旦它们被选举成主节点就有可能会丢弃或更改用户的隐私数据。
实用拜占庭容错(PBFT)共识算法于1999年由Castro 等[10]提出,该算法可以容忍不超过1/3节点总数的拜占庭节点存在网络之中,是一种解决拜占庭问题的实用方法,它的出现将BFT指数级的复杂度降低到了多项式级别,让人们得以在实际生产中使用它。
在PBFT共识算法模型中,节点分为主节点和备份节点两种,主节点是轮流当选的,主节点的编号p由视图编号对节点总数取模得到:
p=v mod|R|(1)当主节点是诚实节点时,主节点协同备份节点完成预准备(pre-prepare)—准备(prepare)—提交(commit)的三阶段协议;当主节点完成一次完整共识或是出现拜占庭错误的情况,则会引发备份节点发动视图切换(view-change)协议重新推举出新的主节点。
1.2实用拜占庭算法的不足
相较于Raft共识只能容忍节点的故障崩溃,PBFT共识算法可以很好地容忍拜占庭节点错误,能够在很大程度上为联盟网络的隐私提供保护,但即便如此PBFT算法仍然有需要改进完善的地方。
首先,PBFT共识算法本身是可以容忍不超过1/3节点总数的恶意拜占庭节点[11],但由于主节点的选取是轮询得到,而算法本身缺乏对于节点状态的判断,因此很有可能会将拜占庭节点选为主节点。一旦拜占庭节点当选为主节点进行作恶,它可能会丢弃、篡改客户端的提案,导致提案无法达成全网共识,直到被其他备份节点发现后执行视图切换协议,这个过程需要重新选举主节点并重新执行提案请求,会产生十分昂贵的开销。
其次,PBFT共识可以容纳一定数量的拜占庭节点在系统中而不影响剩余的诚实节点达成共识,但却不会处理这些恶意节点,更不会惩罚这些作恶节点,这些拜占庭节点可以不停作恶而不用付出任何代价,如果放任不管的话这些拜占庭节点可能会形成一定的规模,一旦轮询到它们担任主节点就会大大地降低共识效率,因此PBFT共识算法亟须一种惩罚手段。针对这些可改进的内容,本文提出了一种
能够监控节点状态的检测型实用拜占庭容错(detection-Practical Byzantine Fault Tolerance,d-PBFT)算法,并详细阐述了算法的共识流程。
2改进PBFT共识算法
2.1方案对比
针对PBFT实用拜占庭共识算法,已经有专家和学者对该算法进行了改进和完善,如文献[12]提出了基于候补集合投票的改进PBFT算法(Improved Practical Byzantine Fault Tolerance,IPBFT),算法优化了共识过程,减少了节点间的通信次数,但仍然会将拜占庭节点纳入到候补集合中作为下一轮选举的竞选者,一旦网络中潜藏的拜占庭节点形成了一定规模甚至会导致主节点频繁切换。文献[13]在PBFT共识三阶段之前引入了可验证随机函数(Verifiable Random Function,VRF)来进一步保证主节点选举的随机性,但随着节点规模的增大VRF会导致系统性能下降得很快。
757
第41卷
计算机应用
上述改进算法虽然巧妙,但仍会残留拜占庭节点于网络中。本文提出的d -PBFT 检测型实用拜占庭共识算法会在共识开始前校验主节点的节点状态,避免拜占庭节点担任主节点,减少无效的通信,同时会将这些恶意节点纳入隔离区,追查来源并将其踢出网络。2.2
d -PBFT 拜占庭容错能力
在有严格会员准入机制的联盟区块链网络中,不能排除
竖流式沉淀池
仍然有第三方敌手将拜占庭节点伪装成正常节点混入到联盟网络中,假设存在f 个拜占庭节点,需要容忍这f 个节点的恶意行为并且还要保证它们的行为不会对共识结果产生影响,这就需要给定一个恰当的节点总数n ,使得恶意节点f 不会成为网络中的多数派。在确定节点总数n 之前,首先需要明确这些恶意节点可能会产生的恶意行为,其中一个行为是不应答,即收到共识请求后不返回执行结果;另一个行为是错误应答,即返回一个错误的共识结果来欺骗网络中的其他节点。
在此前提条件下,当一个客户端提出共识请求后,若网络节点正常则本应该收到n 条消息,但由于拜占庭节点不应答的原因,因此只收到了n -f 条应答消息,为了让应答的消息占据大多数就必须有n -f >f 成立,所以节点总数n 必须大于2f 。另一方面,即便有f 个节点没有应答客户端,但也可能是其他诚实节点暂时掉线了,即在应答的n -f 条消息中可能存在着错误应答的拜占庭节点,为了确保系统的安全性需要考虑到最坏的因素即当前不应答的节点全是由诚实节点意外掉线导致的,因此最坏情况下n -f
条消息中还包含着f 条来自拜占庭节点的错误消息。为了保证诚实节点的消息数为大多数,
n -f 条应答消息还需要细分为n -f -f 条诚实应答消息和f 条错误应答消息,所以可以得出n -f -f >f 即n >3f 。所以为了容忍f 个拜占庭节点,网络中的节点总数n 至少为n =3f +1。
综上所述,只要联盟网络中的拜占庭节点数f ≤ëû(n -1)/3,
这些拜占庭节点就无法左右系统达成一致的共识结果。然而随着时间的增长,假设每经过一段Δt 时间后,系
统内就会新增一个拜占庭节点,如果这些拜占庭节点没有得到及时的处理,不仅会降低系统的性能,还有可能造成f >ëû(n -1)/3进而威胁联盟网络安全,
因此本文提出了节点状态监测和隔离惩罚的机制,可以在经过m 轮共识后及时汇报节点的状态,以便剔除网络中的拜占庭节点。改进后的效果如
图1所示。
2.3
新增节点状态监测
与公有区块链中节点匿名加入网络不同,联盟区块链有
严格的会员准入机制,无论是企业还是个人加入联盟链都会受到身份资格的审查,并且从可信度、安全和性能三个方面考虑,联盟链中参与共识的节点都是由组建联盟的信息中心和企业提供,个人用户的节点只参与健康提案的发起和结果校验。因此,本文考虑为这些参与共识的节点新增节点状态的属性,与此同时每一个参与共识的节点都需要维护一份节点状态信息表如表1所示。
在本文的联盟区块链中,用户节点可能有很多,但真正参与共识的节点都是来自联盟中的信息中心和企业,并且由于原PBFT 算法本身通信开销和性能的因素,参与共识的节点数目通常不会超过100个,因而维护这样一张表不会给每个节点造成额外的负担。
在系统首次运行时,每个共识节点的表中都不会记录任何节点及其状态。在执行三阶段共识协议之前,先检查主节点在节点状态表中的状态,如果没有在表中到该主节点,就先验证该节点的签名,签名通过则添加该节点到表中。开始执行共识协议后,每完成(或终止)一轮共识,参与共识的备份节点才会为当前视图的主节点打上标记如图2所示。
如果一轮共识是按照三阶段协议的预准备-准备-提交的流程正常运转,那么在结束的时候其他备份节点就应当为主节点打上normal 标记。如果在执行共识期间,主节点长时间没有响应直到超出预分配时间还未完成共识,由于无法判断该主节点是意外掉线还是故意不分发共识提案,此时其他备份节点应当标记主节点状态为unstable ,之后发起视图切换view -change 协议推举新的主节点重新完成共识。带有unstable 标记的节点如果连续两次担任主节点都超时,就会被
其他节点标记为malicious 节点;但unstable 节点如果在下一次担任主节点时顺利完成共识,那么仍然
可以恢复成normal 节点。在一轮共识中,有备份节点发现了主节点有任意作恶行为,如伪造签名、分配错误的提案序号、篡改提案信息等,
图1
d -PBFT 算法的拜占庭容错能力
Fig.1Byzantine fault tolerance performance of
d -PBFT algorithm
表1
节点状态Tab.1
Node states
节点编号Node 0
Node 1︙Node n
节点状态normal unstable ︙
malicious
图2
节点标记过程
Fig.2
增压供水Process of node marking 758
第3期刘宇等:检测型的联盟区块链共识算法d -PBFT
当即刻发起视图切换view -change 协议,如果view -change 被全网一致通过则标记主节点为malicious 节点。2.4
追查惩罚机制
假设联盟中共有n 个节点参与共识,那么在n 轮共识过后,所有的节点都轮询担任过主节点,每一个参与共识的节点都会维护一张完整的节点状态表,如果联盟中的节点十分诚实,那么大部分节点的评
级都应该是normal ,可能会有少部分节点为unstable ,这表明联盟的网络状态十分健康。现实中的区块链网络可能会存在拜占庭节点,由于联盟系统有严格的身份准入机制,这些拜占庭节点的数量很难超过共识节点总数的1/3,因此它们作为备份节点出现时对共识过程的影响不大,它们产生的恶意结果会在共识过程中被舍弃掉[14],如果这些拜占庭节点作为主节点出现在共识系统中即便无法篡改用户数据,但仍然会带来较大的性能和恶意超时的影响。因此,在这些拜占庭节点担任过一次主节点后,它的作恶行为会让它在其他诚实节点的节点状态表中被打上malicious 标记,当这些拜占庭节点再一次竞选主节点时,可以通过malicious 标记直接把这些拜占庭节点排除掉,不给它们作恶机会,同时避免浪费不必要的共识纠错时间。
同时本文还为unstable 节点和malicious 节点设立了一个“隔离区”,隔离区隶属于共识模块,如果节点曾经被标记过unstable 状态,则会被隔离区记录unstable 次数,次数累计较多
的节点会被视作故障老化的节点最终被移除网络。如果节点被打上malicious 标记,则会立即被收纳到隔离区中,每经历m 轮共识后(m 视联盟的实际需求而定)系统就发起一次针对隔离区的系统共识,系统管理员就可以通过隔离区中记录的节点信息追查和处理这些拜占庭节点的所属组织。2.5
d -PBFT 算法共识流程
d -PBFT 共识算法敌手模型为n =3f +1,其中n 代表参与共识的总节点数,f 为拜占庭节点数且f ≤ëû(n -
1)/3。整个共
识网络中的节点都统称为replica 复制节点,因为原PBFT 算法就是基于状态机复制原理的算法[15]。replica 节点又可以细分为一个Primary 主节点和众多的Backup 备份节点,主节点是根据replica 节点的编号依次轮询到的,主节点和备份节点都会运行在一个称之为视图view 的地方,每个主节点都会对应一个视图,如果主节点被更换了那就需要运行视图切换协议,图3展示的是一个主节点在一个任期内运行d -PBFT 共识算法达成共识的流程。
d -PBFT 算法沿用了PBFT 共识算法的三阶段协议,而d -
PBFT 算法新增的检测主节点状态、标识主节点状态和隔离拜占庭节点的过程都夹杂在pre -prepare 、prepare 和commit 过程
之中,当主节点有任何超时和作弊的行为都会被其他备份节
点标记下来。图3反映的是成功达成共识需要经历的5个步骤:
1)请求(request )步骤。首先,用户通过网络客户端client
向联盟中的主节点Primary 发送提案请求REQUEST ,m ,t ,c ,其中提案内容表示为m ,发送方表示为c 用来表明客户端身份,该提案的时间戳表示为t 。这个阶段就是用户向联盟提交需要共识的提案信息,该消息会被客户端签名,然后再进入共识的核心流程。
封装盒2)预准备(pre -prepare )步骤。在视图view 上,主节点会
校验发送方的身份,然后将提案内容m 编上序号并为它生成
摘要,然后将它们一并打包分发给网络中的备份节点,消息内容为PRE ‑PREPARE ,v ,n ,d ,m ,p 。其中:v 记录的是运行
共识所在视图的编号,n 表示主节点为提案m 设定的序号,d 则是提案生成的哈希摘要,p 表示为主节点的节点编号。
如果主节点直到超时还未将预准备消息发送出去,其他的备份节点会将该编号的主节点标记为unstable 状态,若已经是unstable 状态的节点连续两次担任主节点都发生了超时,该节点就会被拉黑
为malicious 节点,之后其他节点就不会再选取该节点作为主节点了;但如果标记为unstable 的节点在下一次担任主节点时恢复正常,那么它的节点状态仍然可以恢复为normal 状态。
3)准备(prepare )步骤。当所有的备份节点Backup 接收到
主节点发来的消息后,选取其中一个备份节点b 1来进行说明,首先b 1通过主节点的编号p 在自己记录的节点状态表中查询主节点的状态,如果主节点是malicious 状态的,那么备份节点b 1就直接发起视图切换协议请求更换新的主节点;如果主节点是
normal 状态或unstable 状态,则准备广播PREPARE ,
v ,n ,d ,i 消息给除b 1以外的其他节点,其中i 代表的是备份节点b 1的编号。
4)提交(commit )步骤。其他节点接收到来自b 1备份节点
的prepare 消息,同理b 1也会接收到其他备份节点发过来的prepare 消息。首先,b 1会检查消息的签名是否正确,其他节点prepare 消息的视图编号是否和主节点pre -prepare 消息发送的
视图编号一致等。当有至少2f 个来自其他备份节点的prepare 信息能和主节点的pre -prepare 信息核对一致时,此时
的b 1备份节点就可以广播COMMIT ,v ,n ,D (m ),i 消息给其他节点,D (m )是b 1对于提案m 的可验证签名。
同理,如果b 1备份节点广播的prepare 消息正常的话,也
会收到其他备份节点返回的commit 消息,当commit 消息达到
至少2f +1条时表明全网已经达成共识。但在达成共识前,如果主节点被发现有任何作弊的行为,会引发备份节点发起视图切换协议,并把该编号的主节点记录为malicious 节点,之后会把它移交到隔离区等待联盟管理员处理。
5)应答(reply )步骤。进入到reply 步骤意味着核心的共
识过程已经结束,接下来就是所有的节点将
REPLY ,v ,t ,c ,i ,r 消息返还给客户端,其中的r 代表节点执行
的结果,由于该网络只能容忍f 个拜占庭节点,因此当客户端收到至少2f +1个reply 消息即表明该返回结果确实已经达成了全网的共识认证。2.6
视图切换流程
当备份节点感知到当前主节点p 有异常行为如超时、作弊行为时,备份节点会发起视图切换协议并发
图3
d -PBFT 三阶段协议
Fig.3
d -PBFT thre
e -stage agreement
759
第41卷
计算机应用
VIEW‑CHANGE,v+1,n,C,P,i消息广播给全网,其中,v+1
表示新的视图编号,n表示最近checkpoint消息检查点的编号
用于检验最新的消息log,C表示已经验证过的2f+1个
checkpoint消息集合,P表示因超时导致未完成的pre-prepare
消息和prepare消息的集合。
当网络中有至少2f+1个节点发起视图切换协议,网络就
会开始重新选举节点p+1作为主节点,所在的视图view也会
从v变更为视图v+1。之后,新的主节点p+1将会发送
NEW‑VIEW,v+1,V,O消息广播给全网节点,其中,V表示备
份节点发出的有效的view-change消息集合,O表示重新发起
上一轮未完成的pre-prepare消息的集合。备份节点接收到
new-view消息后,比对其中有效的view-change消息集合,确认
无误后正式加入到新节点的视图v+1中并完成上一轮未完成
的pre-prepare消息。
3改进PBFT算法测试评估
本文提出了一种改进PBFT的d-PBFT共识算法,之后需
要对该算法进行测试评估,并在无拜占庭节点和有拜占庭节
点的情况下分别对其表现进行评估,以验证该算法在联盟网
络中的实用性。
单向离合器轴承3.1测试环境
本测试评估将会在实验室电脑上进行,本次测试使用4
台实验室电脑配置如表2所示。
本文的测试将会对比PoW、Raft、PBFT和d-PBFT四种共
识算法在无拜占庭节点情况下和有拜占庭节点情况下的吞吐
量和时延,该测试不会运行在某一个特定的区块链平台,而是
使用go语言实现[16]并部署在4台实验室电脑中。
在本章需要测试共识算法在同一环境下的性能,因此采
用一个轻量级的开源测试框架wrk,它是一款基于HTTP协议
的测试工具,能够利用异步事件驱动框架给予系统很大的并
发量。由于wrk框架是一个轻量级框架,默认支持GET方式
发起请求,而本文的客户端节点需要提交联盟用户的信息和
数据,因此需要借助lua脚本启用POST方式向其他节点发送
请求。
3.2测试结果
3.2.1共识算法TPS测试
本文在无拜占庭节点和有拜占庭节点的两种情况下分别
对d-PBFT算法进行了吞吐量测试并与PoW、Raft和PBFT算
法进行对比,测试结果如图4所示。
图4是网络中无拜占庭节点的情况下测得的共识算法吞
吐量,在区块链中吞吐量(Transactions Per Seconds,TPS)的计
算方式为:
TPS=Transactions
Seconds(2)
实验中,对共识算法进行了30次测试,由图4可知在无拜占庭节点的情况下部分去中心化的Raft算法吞吐量最高,完全由Leader节点分发客户端请求,Follower节点只验证Leader 节点信息内容,却不会在Follower之间判断Leader节点是否是拜占庭节点。吞吐量排在并列第二的分别是PBFT和改进
d-PBFT算法,Backup节点不仅会验证Primary节点的信息内容,还会在Backup节点间综合判断Primary节点是否是拜占庭节点,因此为了保证联盟网络更加安全而牺牲了部分吞吐量。最后,吞吐量最差的是PoW共识算法,这个算法是完全去中心化的算法,网络中设定的难度越难产生新的区块就越困难。
受实验室设备的限制,本文仅向网络加入了一个拜占庭节点并测试共识算法的TPS,测试结果如图5所示。
设定节点超时时间为10s,在这一轮测试中针对部分去中心化的算法Raft、PBFT和d-PBFT,让4个节点轮流担任主节点,拜占庭节点也会轮值到主节点,完全去中心化的PoW 算法中节点地位平等而没有主节点机制。由图5可知,当拜占庭节点轮值到主节点时,Raft算法完全没有任何防范能力在图像中用“×”来表示,并且拜占庭主节点不会被揪出而是一直担任着主节点,此时整个网络传递的都是拜占庭节点的消息。而在PBFT算法中,每当拜占庭节点轮值成为主节点时,其他的备份节点会有效地识别出来,但也意味着在这一轮共识中节点都忙于检测主节点存在的问题,导致无法再传输用户信息。基于PBFT改进的d-PBFT共识算法在第一轮也体现了同样的特征,但不同的是在第一次发现了拜占庭节点之后,当再次遇到拜占庭节点时d-PBFT会拒绝它轮值为主节点,使得相同时间内与PBFT算法相比区块生成量提升了26.1%。PoW算法则是完全去中心化的共识算法,只要不是超过51%的节点发起攻击[17],PoW算法都能够正常运行。
表2网络节点配置Tab.2Network node configuration
编号1 2 3 4
配置
Intel Core i5-35508GB
Intel Core i5-25008GB
Intel Core i5-457016GB
Intel Core i5-457016GB
操作系统
CentOS7
CentOS7
CentOS7
CentOS7
IP地址
192.168.1.104
192.168.1.106
192.168.1.115
192.168.1.
123
图4无拜占庭节点下的吞吐量测试
Fig.4TPS test in non-Byzantine
case
图5拜占庭节点下吞吐量测试
Fig.5TPS test in Byzantine case
760

本文发布于:2024-09-22 09:37:58,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/129094.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   共识   算法   网络   区块   消息   备份
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议