CN113570357A - 一种动态分层的高效pbft算法 - Google Patents

一种动态分层的高效pbft算法 Download PDF

Info

Publication number
CN113570357A
CN113570357A CN202111126136.3A CN202111126136A CN113570357A CN 113570357 A CN113570357 A CN 113570357A CN 202111126136 A CN202111126136 A CN 202111126136A CN 113570357 A CN113570357 A CN 113570357A
Authority
CN
China
Prior art keywords
node
nodes
message
local
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111126136.3A
Other languages
English (en)
Other versions
CN113570357B (zh
Inventor
周炜
李佳徽
周昌坤
高礼杰
王超
杜丙瑜
渠忠伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dragon Totem Technology Hefei Co ltd
Original Assignee
Qindao University Of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qindao University Of Technology filed Critical Qindao University Of Technology
Priority to CN202111126136.3A priority Critical patent/CN113570357B/zh
Publication of CN113570357A publication Critical patent/CN113570357A/zh
Application granted granted Critical
Publication of CN113570357B publication Critical patent/CN113570357B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • G06Q20/102Bill distribution or payments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4014Identity check for transactions

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种动态分层的高效PBFT算法,包括步骤1:根据节点网络的状况、可靠性和节点的系统性能在节点加入联盟链时对节点进行审核,确定代理节点和普通节点;步骤2:根据随机平均分组算法进行节点的分组,以选取的代理节点为各组的主节点,当系统中拜占庭节点数量较多需要重新分组时,则重新选择信任度高的节点作为代理节点重新分组;步骤3:在组内实施简化PBFT算法,将组内共识的结果传到组内的代理节点,代理节点负责收集和验证组内的共识结果,并代表各个组参与全局的PBFT算法。本发明可以极大地降低区块链系统的通信次数,减轻了区块链系统的压力,降低拜占庭节点当选为主节点的情况,减少视图切换的次数,极大提升系统的共识效率。

Description

一种动态分层的高效PBFT算法
技术领域
本发明涉及区块链技术领域,尤其是一种动态分层的高效PBFT算法。
背景技术
近些年,区块链技术在许多领域都是研究的热点,尤其是互联网金融领域更是将区块链技术广泛深刻地应用。一切涉及到中心化账本技术的领域都有可能存在区块链的应用前景,可以说区块链是一种既有效率又值得信任的分布式账本技术。去中心化、不可篡改以及具有较高的安全性是区块链的显著特点。
在区块链系统中,共识算法用于解决去中心化多方互信的问题。目前,联盟链大多采用的是PBFT算法,PBFT(Practical Byzantine Fault Tolerance)算法是一个能够容忍拜占庭错误的分布式系统共识算法,PBFT算法采用密码学算法保证节点之间的消息传送是不可篡改的,按照少数服从多数原则,由主节点提交消息其他共识节点进行验证和确认,PBFT算法能容忍f个拜占庭节点(恶意节点),为了保障整个区块链网络可以正常运转,需要有2f+1个正常节点,系统的总节点数为。也就是说,PBFT算法可以容忍小于1/3个无效或者恶意节点。其优点在于可以容忍任何类型的错误,消息验证和记账由多人协同完成。但是,PBFT算法受其时间复杂度的影响,当区块链网络中节点数量较多的时候,系统的共识效率急剧下降,由此可以看出传统的PBFT算法并不能满足实际应用场景中节点数量较多的区块链系统;当恶意节点当选为主节点导致共识失败时,传统的PBFT算法只是进行视图切换的方式来解决,恶意节点仍然存在于区块链系统中并且仍然有当选为主节点的可能,从而影响共识效率。
发明内容
一种动态分层的高效PBFT算法,包括如下步骤:
步骤1:根据节点网络的状况、可靠性和节点的系统性能在节点加入联盟链时对节点进行审核,确定代理节点和普通节点;
步骤2:根据随机平均分组算法进行节点的分组,以选取的代理节点为各组的主节点,当系统中由于全局或者组内拜占庭节点数量较多需要重新分组时,则重新选择信任度高的节点作为代理节点进行重新分组;
步骤3:在组内实施简化的PBFT算法,将组内共识的结果传到组内的代理节点,代理节点负责收集和验证组内的共识结果,并代表各个组参与全局的PBFT算法。
上述的一种动态分层的高效PBFT算法,所述步骤2中代理节点根据节点的积分高低进行选举,积分高的节点会优先被选举为组内代理节点,其余节点负责投票。
上述的一种动态分层的高效PBFT算法,所述节点的积分是由节点积分制度实时计算节点的积分。
上述的一种动态分层的高效PBFT算法,所述节点积分制度具体为:将节点的积分状态标记为Great、Good、Normal、Bad,相应的分值为2、1、0、-1,节点刚加入区块链时状态为Good,此时节点有竞选代理节点、投票和参与共识的权利,节点积分状态为Great时为候补代理节点或代理节点,节点积分状态为Normal时只能进行投票和同步区块,可以参与共识,不能参与代理节点的竞选,节点积分状态为Bad时禁止投票,禁止参与共识和竞选代理节点。
上述的一种动态分层的高效PBFT算法,所述节点积分制度的具体积分增减制度为:普通节点选举的代理节点出块成功且成功同步区块,则普通节点积分+1;若普通节点选择的代理节点被验证为拜占庭节点,则选举节点积分-1,被选举节点积分-2;若节点是代理节点且成功出块则积分+2;若代理节点出块失败则积分-2。
上述的一种动态分层的高效PBFT算法,所述步骤2系统通过节点审查员对拜占庭节点进行审核判断和处理,将拜占庭节点拉进黑名单,并将拜占庭节点放到拜占庭节点组中。
上述的一种动态分层的高效PBFT算法,所述节点审查员管理所有节点信息,管理节点的动态进出,并且维护一个记录节点身份信息的NIT表,且所有节点完全信任节点审查员维护的NIT表中的信息。
上述的一种动态分层的高效PBFT算法,每个节点在本地维护一个NIT表,并实时的与其他节点的NIT表进行同步。
上述的一种动态分层的高效PBFT算法,所示步骤3在组内实施简化的PBFT算法的具体步骤包括:
步骤3.1:请求阶段:向分布式系统中的全局主节点P发送请求,请求形式如下所示,其中:Request为消息名称包括消息内容m以及消息摘要d,o为请求的具体操作,t为请求时客户端追加的时间,c为客户端标识,θ是节点审查员的NIT表
Figure 102795DEST_PATH_IMAGE001
步骤3.2:全局预准备阶段:全局的主节点P为请求Request分配一个序号n,全局的主节点P向系统中所有节点广播Global-Pre-Prepare的消息,并将m附加到所有活跃的代理节点中,将消息m附加到其日志中,并启动计时器T1,消息形式如下所示,其中m是消息内容,v是发送m的视图编号,d是消息摘要,t是发送Global-Pre-Prepare消息的时间,θ是主节点的本地NIT表,σp是节点P的签名;
Figure 551094DEST_PATH_IMAGE002
步骤3.3:向组织内的代理节点回复一个Local-Prepare消息,并将消息添加到它的日志中,消息形式如下,其中m是消息内容,v是发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,t代表发送Local-Prepare消息的时间,θ是主节点的本地NIT表,i是节点的节点号,σi是节点i的签名
Figure 127569DEST_PATH_IMAGE003
步骤3.4:代理节点接收到来自不同的活跃的节点的2f+1正确Local-Prepare消息后,它将发送消息给组织内所有活跃的节点,消息形式如下所示,其中,ψ表示代理节点接收到的2f+1正确Local-Prepare消息集,v表示发送m的视图编号,θ是主节点的本地NIT表,c-t代表发送Local-Prepare-Confirm消息的时间,σp是节点P的签名,组织内其他节点收到消息后对签名进行校验,并检查v、θ是否正确,验证通过节点i进入Local-Commit;
Figure 51007DEST_PATH_IMAGE004
步骤3.5:节点i进入本地提交Local-Commit阶段,消息被发送到代理节点,消息形式如下所示,其中,v表示发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,θ是主节点的本地NIT表,i是节点的节点号,σi是节点i的签名
Figure 396537DEST_PATH_IMAGE005
步骤3.6:代理节点接收2f+1的Local-Commit信息后对消息进行验证,当代理节点接收到来自不同的活跃的节点的2f+1正确Local-Commit消息后,代理节点发送消息是对所有活动备份的多播,消息形式如下所示,其中ψ是一组2f+1正确的Local-Commit消息,v表示发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,θ是主节点的本地NIT表,c-t是Local-Commit-Confirm消息的发送时间,i是节点的节点号,σp是节点P的签名
Figure 953421DEST_PATH_IMAGE006
步骤3.7:组织内节点收到主代理节点发送的Local-Commit-Confirm消息后,如果对Local-Commit-Confirm消息验证成功,则执行请求Local-Reply并回复给代理节点。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1为本发明DHE-PBFT算法流程图;
图2为NIT表示意图;
图3为节点转换示意图;
图4为随机平均分组算法示意图;
图5为组内共识和组件共识示意图;
图6为相同节点数量不同分组时间复杂度对比图;
图7为相同分组不同节点数量时间复杂度对比图;
图8为DHE-PBFT算法与PBFT算法共识时延对比图。
具体实施方式
为使本领域技术人员更好的理解本发明的技术方案,下面结合附图和具体实施方式对本发明作详细说明。
需要说明的是,本发明中公开的一种动态分层的高效PBFT算法重新命名为DHE-PBFT算法,而本发明中的提到的PBFT算法表示传统的PBFT算法。
本实施例DHE-PBFT算法中,假设存在一个异步分布式系统,其中节点通过网络相互连接。系统中的节点分为三类:代理节点、候补节点、普通节点和节点审查员。
代理节点:在网络初选阶段,由系统选取的几个可靠的、网络状态稳定的节点,主要是查看此节点出现宕机的情况和响应时间,在进行代理节点选择时会事先进行节点的网络状况测试,发送相同的消息到各个节点上,并且查看各个节点的响应时间和宕机(失联)次数,优先选举响应时间短并且没有宕机的节点当选为代理节点。在经过了几轮共识之后,如果这几个代理节点出现拜占庭错误或者是宕机,这时相应的组内将进行代理节点的选举。代理节点的积分较高,可以代表当前组织参与全局的PBFT共识,生成区块,并且将信息传到组内节点,让组内进行区块信息的同步。
候选节点:在参与代理节点的竞选中未被选举成为代理节点的积分高的节点,当代理节点出现拜占庭错误的时候,会优先从候选节点中直接选择成为代理节点。
普通节点:具有投票和被投票的权利,可以参与代理节点的竞选(积分低于一定阈值的普通节点不能进行代理节点的竞选),同步代理节点共识成功的块,参与组内共识(简化的PBFT算法)。
节点审查员(Node-Examiner):管理所有副本的信息,管理节点的动态进出,并且维护一个记录节点身份信息的列表NIT(Node information table,NIT),NIT中存储的信息有:节点ID、IP地址、公钥、节点状态(活跃、失联、邪恶)、属于哪个分组(G1、G2……)、积分数量、当前是否是主节点、节点身份(代理节点、候选节点、拜占庭节点或者普通节点)。所有节点完全信任节点审查员中记的身份信息,然而,为了避免对节点审查员安全的过度依赖,每个副本都会在本地维护一个NIT表,实时的与其他节点的NIT表进行同步。NIT表如图2所示。
本实施例高效PBFT算法,如图1所示,包括如下步骤:
步骤1:系统根据节点网络的状况、可靠性和节点的系统性能在节点加入联盟链时对节点进行审核,确定代理节点和普通节点;
步骤2:随机平均分组以选取的代理种子节点为各组的主节点,根据随机平均分组算法进行节点的分组。当系统中由于共识故障(全局或者组内拜占庭节点数量较多时)需要重新分组的时候,则重新选择信任度高的节点当选为代理种子节点,进行重新分组,为了保证区块链系统的稳定,其中
Figure 751612DEST_PATH_IMAGE007
,f是系统内拜占庭节点的数量,组内的节点数量也应该满足
Figure 481671DEST_PATH_IMAGE007
随机平均分组算法,如图4所示,Procedure Random(N,M)//Procedure Random是随机平均分组算法的函数,N和M是此随机平均分组算法中的两个参数,其中N是系统中所有结点的个数,M是分组数量;当区块链中的分组数量M大于等于4组并且每个组中的节点数量大于等于4个节点时,可以进行随机平均分组算法,执行for循环语句,否则执行else语句:分组M的数量不满足PBFT共识算法,组内节点数量(N/M)+1不满足PBFT共识算法;当区块链中的分组数量M大于等于4组并且每个组中的节点数量大于等于4个节点时执行for循环语句,其中i是分组编号(i=1,2……M),G[i]表示第i组中的节点数量,当i不等于M时,G[i]=(N/M)+1;当i等于M时,G[M]=N-(M-1)[(N/M)+1](此结果是将剩余节点全部放入到最后一组中),至此随机平均分组算法完成。
节点的信任度由节点的积分决定,节点的积分制度实时计算节点的积分,将节点积分分为Great、Good、Normal和Bad四级,不同等级的节点有不同的权力和职责,可以完成相应的工作,我们将节点的积分状态标记为:Great、Good、Normal、Bad相应的分值2、1、0、-1,Great:有成为代理节点的可能,最差也是候补代理节点,当本组中参与全局共识的代理节点出现拜占庭错误的时候,组内会首先从候补代理节点中选择下一任代理节点,Good:节点刚加入区块链时的状态时Good,节点有竞选代理节点、给其他竞选代理节点的节点进行投票和参与共识的权力;Normal:节点只能进行投票和同步区块,可以参与共识,不能参与代理节点的竞选;Bad:节点禁止投票、 参与代理节点的竞选和参与共识和投票。
节点积分的增减规则:
(1)当普通节点i选举的代理节点j,节点j出块成功,节点i自身验证消息成功,并且成功的同步区块则普通节点i积分加1(节点的积分最多就是2);
(2)如果节点i选择的代理节点j被验证是拜占庭节点,那么选举节点i积分-1,被选举节点j积分-2;
(3)如果节点i是代理节点并且成功出块则节点i积分加2。(代理节点出块成功积分增加翻倍的原因,代理节点成功出块显然是正常的节点,防止选择到组内的拜占庭节点,因此将此节点分值提升,提升了此节点被选为代理节点的几率);
(4)如果代理节点i出块失败则积分-2,同时相应的组选择候补节点j代替相应组的代理节点i;
(5)当节点i积分等于0时,节点i只能投票和同步区块,不能参与竞选代理节点;
(6)当节点i积分是-1时,节点被禁止参与共识、禁止投票、禁止参与代理节点的竞选。
各个节点的转换图如图3所示,其中A是代理节点(Great),B是普通节点(Great,Good,Normal),C是候补节点(Great,Good),D是拜占庭节点(Bad)。
系统的分组过程具体为:利用节点审查员首先检验要加入节点的网络状况和稳定性,并将其基本信息写入到NIT表中(如图2),由于联盟链的特性,随机分组会使得区块链网络难以维护,并且随机分组之后每个组内成员数量不同,其出现拜占庭错误的概率也难以预测,因此在本实施例中将采用CA机制进行网络节点的审查,并且选定N个网络稳定可靠的代理种子节点为初始的代理节点,例如:表NIT中的Node Identity中的Proxy node就是代理节点,然后采用随机平均分组算法将其余的节点平均随机的分配到各个组中,通过随机平均分组算法可以知道每个组中允许储存的最大节点数量,当节点数量达到最大值的时候,会禁止其节点加入本组。将每个组的节点信息添加进NIT表中,区块链网络中每个节点本地都会维护一个NIT表,各个组的代理节点和其他节点可以根据NIT表互相了解,根据表NIT中的Group就能够知道节点属于哪个分组。在共识过程中各组可能会出现的拜占庭节点,节点审查员会定期清理区块链网络,将低于一定阈值的节点(拜占庭节点)踢出网络,这样会造成分组内的节点数量小于稳定值,这样就会触发重新分组。
当发生数图转换的时候,节点会根据NIT表中的Group的值,将相应组的拜占庭节点替换掉,依次选择NIT表中Node Identity中的Candidate node的节点作为新的代理节点,这样选择积分高的可信的节点做为代理节点,可以有效地减少拜占庭错误,减少视图切换的次数,提高共识效率。
步骤3:在组内实施简化的PBFT算法,将组内共识的结果传到组内的代理节点,代理节点负责收集和验证组内的共识结果,并代表各个组参与全局的PBFT算法。组内实施简化的PBFT算法的具体步骤如下:
Request:客户端向分布式系统中的全局的主节点P发送请求,请求形式如下所示,其中:Request为消息名称(包含消息内容m,以及消息摘要d),o为请求的具体操作,t为请求时客户端追加的时间,c为客户端标识,θ是Node-Examiner的NIT表,客户端节点通过查看NIT表将Request的消息发送到的“当前是否是全局主节点”中为Yes的节点上,然后请求结束
Figure 947287DEST_PATH_IMAGE008
Global-Pre-Prepare:Global-Pre-prepare阶段,全局的主节点P为请求Request分配一个序号n,全局的主节点P向系统中所有节点广播Global-Pre-Prepare的消息,并将m附加到所有活跃的代理节点中,将消息m附加到其日志中,并启动计时器T1,消息形式如下所示,其中m是消息内容,v是发送m的视图编号,d是消息摘要,t是发送Global-Pre-Prepare消息的时间,θ是主节点的本地NIT表,σp是节点P的签名
Figure 471810DEST_PATH_IMAGE009
所有的节点接收Global-Pre-Prepare消息,并且检查Global-Pre-Prepare消息中的签名是正确的,Global-Pre-Prepare在视图v中,并且验证节点本地的NIT与Global Pre-Prepare消息中的NIT相同,它没有接受带有相同v、θ和n但包含不同的消息摘要d的Global-Pre-Prepare消息,Global-Pre-Prepare消息中的序列号n介于低水位线h和高水位线H之间。h和H的定义与PBFT中的定义相同。
Local-Prepare:当所有节点都接受Global-Pre-Prepare消息时,组织内的节点i将进入Local-Prepare阶段,向组织内的代理节点回复一个Local-Prepare消息,并将消息添加到它的日志中。消息形式如下,其中m是消息内容,v是发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,t代表发送Local-Prepare消息的时间,θ是主节点的本地NIT表,i是节点的节点号,σi是节点i的签名
Figure 757297DEST_PATH_IMAGE010
Local-Prepare-Confirm:当代理节点从组织内其他节点接收Local-Prepare消息时,执行Local-Prepare消息验证。当代理节点接收到来自不同的活跃的节点的2f+1正确Local-Prepare消息后,它将发送消息给组织内所有活跃的节点,消息形式如下所示,其中,ψ表示代理节点接收到的2f+1正确Local-Prepare消息集,v表示发送m的视图编号,θ是主节点的本地NIT表,c-t代表发送Local-Prepare-Confirm消息的时间,σp是节点P的签名。
Figure 228730DEST_PATH_IMAGE011
组织内其他节点收到Local-Prepare-Confirm消息后,对签名进行校验,并检查v、θ是否正确。然后,查看
Figure 283274DEST_PATH_IMAGE012
中代理节点接收到的2f+1正确Local-Prepare消息集,当验证通过时节点i进入Local-Commit Phase。
Local-Commit:Local Commit Phase的方案类似于本地准备阶段Local PreparePhase。采用了相同的优化思想,节点i进入本地提交Local-Commit Phase阶段,消息被发送到代理节点,消息形式如下所示,其中,v表示发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,θ是主节点的本地NIT表,i是节点的节点号,σi是节点i的签名
Figure 509856DEST_PATH_IMAGE013
Local-Commit-Confirm:代理节点接收2f+1的Local-Commit信息后(其中一个是由主节点生成)对消息进行验证,当代理节点接收到来自不同的活跃的节点的2f+1正确Local-Commit消息后,代理节点发送消息是对所有活动备份的多播,消息形式如下所示,其中ψ是一组2f+1正确的Local-Commit消息,v表示发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,θ是主节点的本地NIT表,c-t是Local-Commit-Confirm消息的发送时间,i是节点的节点号,σp是节点P的签名
Figure 282640DEST_PATH_IMAGE014
组织内节点收到主代理节点发送的Local-Commit-Confirm消息后,如果对Local-Commit-Confirm消息验证成功,则执行请求Local-Reply并回复给代理节点,组内共识结束。
然后由组内的代理节点执行全局共识,全局共识采用的是传统的PBFT算法,这里就不在详述,组内共识和组间共识如图5所示。
针对本实施例提出的DHE-PBFT算法,进行了仿真实验,通过golang实现PBFT和DHE-PBFT算法,使用不同的通信端口代替大量节点,节点之间的交互使用TCP协议,模拟分布式系统共识过程。环境中包含RSA信息加解密过程和网络信息传递延迟,实验环境:系统:Ubuntu20.04,CPU:Intel i7-11370H 3.30 GHz 4核,内存16G,硬盘PCL-E512G固态硬盘,golang版本:go 1.16。
安全性分析:在DHE-PBFT算法中全局共识采用的是传统的PBFT算法的过程,因此全局共识的算法是安全的,组内是对传统的PBFT算法的Prepare和Commit阶段进行优化,这两个阶段的优化是在这两个阶段内部执行的,节点还需要接收2f+1正确的消息才能达到各阶段的共识,因此,它不影响原PBFT方案的安全性和活性。同时还提升了系统的共识效率。
通信复杂度分析:传统的PBFT算法的各个阶段n个节点的时间复杂度和总共的时间复杂度,Pre-Prepare阶段是n-1,Prepare阶段是(n-1)(n-1),Commit阶段是n(n-1),总共的通信次数是2n(n-1)。
改进后的PBFT算法的各阶段时间复杂度和总共的时间复杂度,假设系统中由n个节点,分成m个组,每组n/m个节点(当每组节点相同时),Global-Pre-Prepare阶段n-1,Local-Pre-Prepare阶段n/m-1,Local-Prepare阶段n/m-1,Local-Prepare-Confirm阶段n/m-1,Local-Commit阶段n/m-1,Local-Commit-Confirm阶段n/m-1,Local-Reply阶段n/m-1,Global-Prepare阶段(m-1)(m-1),Global-Commit阶段m(m-1),总共的时间复杂度是
Figure 88922DEST_PATH_IMAGE015
相同节点数量不同分组情况下的通信复杂度对比,如图6,横轴为节点数量和时间复杂度,纵轴为时间复杂度。从图6中可以看出当节点数量不变的情况下,PBFT算法的通信复杂度保持稳定,并且通信复杂度很高,DHE-PBFT算法的时间复杂度随着分组的不同而变化,在分为5组每组20个结点的时候通信复杂度最低,由此可见分组方式的不同也会影响共识算法的效率。
当分组数量确定,节点数量不同时,如图7所示,横轴为节点数量和分组情况,纵轴为时间复杂度,将节点平均分成5组,当节点数量逐渐增大的时候,PBFT算法的时间复杂度急剧增加,而DHE-PBFT算法的时间复杂度总体趋于稳定。
本实施例还进行了DHE-PBFT算法共识时延实验:共识时延是指从交易提交到交易完成之间所消耗的时间,是衡量共识算法运行速度的重要指标,较低的共识时延使得交易可以快速得到确认,区块链安全性更高,同时也能变得更为实用。测试的共识时延为区块完成一次共识过程的时间,用公式定义时延为:
Figure 263551DEST_PATH_IMAGE016
其中 DelayTime 表示时延,FinishTime表示区块确认完成的时间,StartTime表示提案开始的时间。为了验证DHE-PBFT算法在实际应用中低时延的特点,将DHE-PBFT算法与原始 PBFT算法进行对比,对比结果如图8所示,图8横轴为不同节点数量分为4组的分组方式,纵轴为共识时延,当客户端发送交易请求时PBFT算法和DHE-PBFT算法在完成交易的情况下的共识时延,可以看出PBFT随着节点数量增加,共识时间迅速增加,而本文DHE-PBFT共识由于分组分层,在分组数固定的情况下,组间共识时间基本不变,而组内共识时延增长为线性增长,从横坐标可以看出组内的节点数量增加缓慢,其共识时延也增加缓慢,最终DHE-PBFT算法的整体达成共识时间增加缓慢。从图8中可以看出,当节点数量众多的时候,PBFT算法的共识时延会急剧增长,共识效率会急剧下降,而本文的DHE-PBFT算法的共识时延不会有显著的增长,适合节点众多的情况。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

Claims (9)

1.一种动态分层的高效PBFT算法,其特征在于:包括如下步骤:
步骤1:根据节点网络的状况、可靠性和节点的系统性能在节点加入联盟链时对节点进行审核,确定代理节点和普通节点;
步骤2:根据随机平均分组算法进行节点的分组,以选取的代理节点为各组的主节点,当系统中由于全局或者组内拜占庭节点数量较多需要重新分组时,则重新选择信任度高的节点作为代理节点进行重新分组;
步骤3:在组内实施简化的PBFT算法,将组内共识的结果传到组内的代理节点,代理节点负责收集和验证组内的共识结果,并代表各个组参与全局的PBFT算法。
2.根据权利要求1所述的一种动态分层的高效PBFT算法,其特征在于,所述步骤2中代理节点根据节点的积分高低进行选举,积分高的节点会优先被选举为组内代理节点,其余节点负责投票。
3.根据权利要求2所述的一种动态分层的高效PBFT算法,其特征在于,所述节点的积分是由节点积分制度实时计算节点的积分。
4.根据权利要求3所述的一种动态分层的高效PBFT算法,其特征在于,所述节点积分制度具体为:将节点的积分状态标记为Great、Good、Normal、Bad,相应的分值为2、1、0、-1,节点刚加入区块链时状态为Good,此时节点有竞选代理节点、投票和参与共识的权利,节点积分状态为Great时为候补代理节点或代理节点,节点积分状态为Normal时只能进行投票和同步区块,可以参与共识,不能参与代理节点的竞选,节点积分状态为Bad时禁止投票,禁止参与共识和竞选代理节点。
5.根据权利要求3所述的一种动态分层的高效PBFT算法,其特征在于,所述节点积分制度的具体积分增减制度为:普通节点选举的代理节点出块成功且成功同步区块,则普通节点积分+1;若普通节点选择的代理节点被验证为拜占庭节点,则选举节点积分-1,被选举节点积分-2;若节点是代理节点且成功出块则积分+2;若代理节点出块失败则积分-2。
6.根据权利要求1所述的一种动态分层的高效PBFT算法,其特征在于,所述步骤2系统通过节点审查员对拜占庭节点进行审核判断和处理,将拜占庭节点拉进黑名单,并将拜占庭节点放到拜占庭节点组中。
7.根据权利要求6所述的一种动态分层的高效PBFT算法,其特征在于,所述节点审查员管理所有节点信息,管理节点的动态进出,并且维护一个记录节点身份信息的NIT表,且所有节点完全信任节点审查员维护的NIT表中的信息。
8.根据权利要求7所述的一种动态分层的高效PBFT算法,其特征在于,每个节点在本地维护一个NIT表,并实时的与其他节点的NIT表进行同步。
9.根据权利要求7所述的一种动态分层的高效PBFT算法,其特征在于,所示步骤3在组内实施简化的PBFT算法具体步骤包括:
步骤3.1:请求阶段:向分布式系统中的全局主节点P发送请求,请求形式如下所示,其中:Request为消息名称包括消息内容m以及消息摘要d,o为请求的具体操作,t为请求时客户端追加的时间,c为客户端标识,θ是节点审查员的NIT表
Figure 809246DEST_PATH_IMAGE001
步骤3.2:全局预准备阶段:全局的主节点P为请求Request分配一个序号n,全局的主节点P向系统中所有节点广播Global-Pre-Prepare的消息,并将m附加到所有活跃的代理节点中,将消息m附加到其日志中,并启动计时器T1,消息形式如下所示,其中m是消息内容,v是发送m的视图编号,d是消息摘要,t是发送Global-Pre-Prepare消息的时间,θ是主节点的本地NIT表,σp是节点P的签名;
Figure 257545DEST_PATH_IMAGE002
步骤3.3:向组织内的代理节点回复一个Local-Prepare消息,并将消息添加到它的日志中,消息形式如下所示,其中m是消息内容,v是发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,t代表发送Local-Prepare消息的时间,θ是主节点的本地NIT表,i是节点的节点号,σi是节点i的签名
Figure 571370DEST_PATH_IMAGE003
步骤3.4:代理节点接收到来自不同的活跃的节点的2f+1正确Local-Prepare消息后,它将发送消息给组织内所有活跃的节点,消息形式如下所示,其中ψ表示代理节点接收到的2f+1正确Local-Prepare消息集,v表示发送m的视图编号,θ是主节点的本地NIT表,c-t代表发送Local-Prepare-Confirm消息的时间,σp是节点P的签名,组织内其他节点收到消息后对签名进行校验,并检查v、θ是否正确,验证通过节点i进入Local-Commit;
Figure 497738DEST_PATH_IMAGE004
步骤3.5:节点i进入本地提交Local-Commit阶段,发送消息到代理节点,消息形式如下所示,其中,v表示发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,θ是主节点的本地NIT表,i是节点的节点号,σi是节点i的签名
Figure 843269DEST_PATH_IMAGE005
步骤3.6:代理节点接收2f+1的Local-Commit信息后对消息进行验证,当代理节点接收到来自不同的活跃的节点的2f+1正确Local-Commit消息后,代理节点发送如下消息是对所有活动备份的多播,其中ψ是一组2f+1正确的Local-Commit消息,v表示发送m的视图编号,n是全局的主节点P为请求Request分配的序号,d是消息摘要,θ是主节点的本地NIT表,c-t是Local-Commit-Confirm消息的发送时间,i是节点的节点号,σp是节点P的签名
Figure 196890DEST_PATH_IMAGE006
步骤3.7:组织内节点收到主代理节点发送的Local-Commit-Confirm消息后,如果对Local-Commit-Confirm消息验证成功,则执行请求Local-Reply并回复给代理节点。
CN202111126136.3A 2021-09-26 2021-09-26 一种动态分层的高效pbft算法 Active CN113570357B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111126136.3A CN113570357B (zh) 2021-09-26 2021-09-26 一种动态分层的高效pbft算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111126136.3A CN113570357B (zh) 2021-09-26 2021-09-26 一种动态分层的高效pbft算法

Publications (2)

Publication Number Publication Date
CN113570357A true CN113570357A (zh) 2021-10-29
CN113570357B CN113570357B (zh) 2021-12-17

Family

ID=78174504

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111126136.3A Active CN113570357B (zh) 2021-09-26 2021-09-26 一种动态分层的高效pbft算法

Country Status (1)

Country Link
CN (1) CN113570357B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114221963A (zh) * 2021-11-15 2022-03-22 上海应用技术大学 多区域自治的混合链系统及其设计方法
CN114416766A (zh) * 2022-03-29 2022-04-29 深圳市一航网络信息技术有限公司 实用计算能力证明共识方法、装置、电子设备及存储介质
CN114449000A (zh) * 2021-12-28 2022-05-06 北京邮电大学 一种车辆网数据共识优化存储方法及存储系统
CN114499890A (zh) * 2022-03-15 2022-05-13 南京信息工程大学 联盟链中基于节点分组的Raft PBFT两阶段共识机制
CN116109225A (zh) * 2022-10-27 2023-05-12 大连理工大学 一种基于区块链的危废处理服务平台、装置及存储介质
CN117036038A (zh) * 2023-10-10 2023-11-10 腾讯科技(深圳)有限公司 一种基于联盟链的交易处理方法、装置、设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109756558A (zh) * 2018-12-04 2019-05-14 广州通链计算机智能技术有限责任公司 一种基于异步分组交换的拜占庭容错共识算法
CN110445619A (zh) * 2017-03-30 2019-11-12 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
US20190379538A1 (en) * 2018-06-12 2019-12-12 Electronics And Telecommunications Research Institute Method and apparatus for selecting distributed consensus node based on proof of nonce
CN110796547A (zh) * 2019-10-30 2020-02-14 桂林电子科技大学 一种基于联盟区块链的改进的实用拜占庭容错系统
CN111355810A (zh) * 2020-03-17 2020-06-30 重庆邮电大学 一种基于信誉与投票机制的改进pbft共识方法
CN111371877A (zh) * 2020-02-28 2020-07-03 桂林电子科技大学 一种异构联盟链的共识方法
CN111698094A (zh) * 2020-06-12 2020-09-22 深圳前海微众银行股份有限公司 一种基于区块链系统的共识方法及区块链系统
CN113032370A (zh) * 2021-03-30 2021-06-25 东北大学 一种分区区块链系统的设计方法
US20210211451A1 (en) * 2020-01-03 2021-07-08 Saudi Arabian Oil Company Method and system for blockchain accreditation mechanism based on cybersecurity risk
CN113343311A (zh) * 2021-06-04 2021-09-03 北京邮电大学 基于信誉模型和数字签名机制的区块链共识方法和系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110445619A (zh) * 2017-03-30 2019-11-12 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
US20190379538A1 (en) * 2018-06-12 2019-12-12 Electronics And Telecommunications Research Institute Method and apparatus for selecting distributed consensus node based on proof of nonce
CN109756558A (zh) * 2018-12-04 2019-05-14 广州通链计算机智能技术有限责任公司 一种基于异步分组交换的拜占庭容错共识算法
CN110796547A (zh) * 2019-10-30 2020-02-14 桂林电子科技大学 一种基于联盟区块链的改进的实用拜占庭容错系统
US20210211451A1 (en) * 2020-01-03 2021-07-08 Saudi Arabian Oil Company Method and system for blockchain accreditation mechanism based on cybersecurity risk
CN111371877A (zh) * 2020-02-28 2020-07-03 桂林电子科技大学 一种异构联盟链的共识方法
CN111355810A (zh) * 2020-03-17 2020-06-30 重庆邮电大学 一种基于信誉与投票机制的改进pbft共识方法
CN111698094A (zh) * 2020-06-12 2020-09-22 深圳前海微众银行股份有限公司 一种基于区块链系统的共识方法及区块链系统
CN113032370A (zh) * 2021-03-30 2021-06-25 东北大学 一种分区区块链系统的设计方法
CN113343311A (zh) * 2021-06-04 2021-09-03 北京邮电大学 基于信誉模型和数字签名机制的区块链共识方法和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JAYAPRIYA JAYABALAN ET AL.: "《block chain consensus algorithm Byzantine》", 《2021 INTERNATIONAL CONFERENCE ON COMPUTER COMMUNICATION AND INFORMATICS (ICCCI)》 *
丁庭琛 等: "《基于信用分级的PBFT共识算法改进方案》", 《计算机系统应用》 *
周炜 等: "《一种可应用于联盟链的拜占庭容错混合共识机制》", 《中国海洋大学学报》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114221963A (zh) * 2021-11-15 2022-03-22 上海应用技术大学 多区域自治的混合链系统及其设计方法
CN114449000A (zh) * 2021-12-28 2022-05-06 北京邮电大学 一种车辆网数据共识优化存储方法及存储系统
CN114449000B (zh) * 2021-12-28 2022-10-11 北京邮电大学 一种车联网数据共识优化存储方法及存储系统
CN114499890A (zh) * 2022-03-15 2022-05-13 南京信息工程大学 联盟链中基于节点分组的Raft PBFT两阶段共识机制
CN114499890B (zh) * 2022-03-15 2023-09-15 南京信息工程大学 联盟链中基于节点分组的Raft PBFT两阶段共识方法
CN114416766A (zh) * 2022-03-29 2022-04-29 深圳市一航网络信息技术有限公司 实用计算能力证明共识方法、装置、电子设备及存储介质
CN116109225A (zh) * 2022-10-27 2023-05-12 大连理工大学 一种基于区块链的危废处理服务平台、装置及存储介质
CN116109225B (zh) * 2022-10-27 2023-08-11 大连理工大学 一种基于区块链的危废处理服务平台、装置及存储介质
CN117036038A (zh) * 2023-10-10 2023-11-10 腾讯科技(深圳)有限公司 一种基于联盟链的交易处理方法、装置、设备及存储介质
CN117036038B (zh) * 2023-10-10 2024-01-30 腾讯科技(深圳)有限公司 一种基于联盟链的交易处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113570357B (zh) 2021-12-17

Similar Documents

Publication Publication Date Title
CN113570357B (zh) 一种动态分层的高效pbft算法
CN111355810B (zh) 一种基于信誉与投票机制的改进pbft共识方法
CN110784346B (zh) 一种基于信誉值的pbft共识系统及方法
CN110677485B (zh) 一种基于信用的动态分层拜占庭容错共识方法
CN112039964B (zh) 一种基于区块链的节点信誉共识方法
CN111131209B (zh) 一种改进的高效共识方法、系统、计算机设备及存储介质
CN110796547A (zh) 一种基于联盟区块链的改进的实用拜占庭容错系统
Stewart et al. Grandpa: a byzantine finality gadget
CN112532581A (zh) 一种基于共识参与度和交易活跃度的改进pbft共识方法
Li et al. An extensible consensus algorithm based on PBFT
CN113141414B (zh) 一种cnfs协议中区块链节点的分组多链异步共识方法
Wang et al. Beh-Raft-Chain: a behavior-based fast blockchain protocol for complex networks
Wang et al. Byzantine fault tolerant algorithm based on vote
Zhong et al. Improve PBFT based on hash ring
Xu et al. Improved PBFT algorithm based on vague sets
Huang et al. Workload-based randomization byzantine fault tolerance consensus protocol
Zhou et al. Vg-raft: An improved byzantine fault tolerant algorithm based on raft algorithm
Tang et al. Excellent practical byzantine fault tolerance
CN115883578A (zh) 一种基于区块链技术的5g电力网络节点信任管理方法
CN116260826A (zh) 一种供应链溯源中拜占庭容错共识方法及系统
CN114301598A (zh) 基于分层权威的区块链共识算法、系统及存储介质
Chauhan et al. Democratic elections in faulty distributed systems
Jin et al. An improved practical Byzantine fault-tolerant consensus algorithm combined with aggregating signature
Chen et al. An Efficient Byzantine Fault-Tolerant Consensus Mechanism Based on Aggregate Threshold Ring Signature
Xiao et al. Optimized byzantine fault tolerant algorithm for improving performance and security with trust values

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240116

Address after: 230000 floor 1, building 2, phase I, e-commerce Park, Jinggang Road, Shushan Economic Development Zone, Hefei City, Anhui Province

Patentee after: Dragon totem Technology (Hefei) Co.,Ltd.

Address before: Qindao University of Technology

Patentee before: Qindao University of Technology

TR01 Transfer of patent right