CN113407632A - 一种基于pbft的委托权益证明区块链共识算法 - Google Patents

一种基于pbft的委托权益证明区块链共识算法 Download PDF

Info

Publication number
CN113407632A
CN113407632A CN202110714398.5A CN202110714398A CN113407632A CN 113407632 A CN113407632 A CN 113407632A CN 202110714398 A CN202110714398 A CN 202110714398A CN 113407632 A CN113407632 A CN 113407632A
Authority
CN
China
Prior art keywords
node
nodes
block
credit
agent
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.)
Pending
Application number
CN202110714398.5A
Other languages
English (en)
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.)
Nanjing Souwen Information Technology Co ltd
Original Assignee
Nanjing Souwen Information Technology Co ltd
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 Nanjing Souwen Information Technology Co ltd filed Critical Nanjing Souwen Information Technology Co ltd
Priority to CN202110714398.5A priority Critical patent/CN113407632A/zh
Publication of CN113407632A publication Critical patent/CN113407632A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Abstract

本发明提供一种基于PBFT的委托权益证明区块链共识算法,定义了信用评级、信用系数等概念,引入了基于信用奖惩的代理人节点选举模型。在选举模型下,网络节点通过投反对票大大减少了异常节点成为代理人的比例。同时由于信用稳定和时间重置机制,普通节点需要尽量参与到选举投票中去,有效提高了选举的积极性;针对DPoS共识算法在一轮选举周期内不能及时处理恶意节点的问题,选举出代理人和备选代理人节点集合,其中备选代理人节点集合用于及时替换代理人节点集合中多次出块失败的节点,于是有效处理了恶意节点。另一方面,针对DPoS算法验证时延远大于区块生产时延,进而影响出块效率的问题,算法选举出验证节点集合,然后引入PBFT算法来快速验证区块。

Description

一种基于PBFT的委托权益证明区块链共识算法
技术领域
本发明属于区块链共识算法技术领域,具体涉及一种基于PBFT的委托权益证明区块链共识算法。
背景技术
随着比特币等数字货币的快速兴起,越来越多的研究者和金融科技公司开始投入到其底层技术——区块链的研究之中。共识机制是区块链系统的核心技术之一,直接决定了系统的各方面性能指标和应用面向的场景。
区块链平台整体上可划分为网络层,共识层,数据层,智能合约层和应用层五个层次。区块链技术的伟大之处就是它的共识机制,在去中心化的思想上解决了节点间互相信任的问题。区块链拥有众多节点,各节点能不依靠中心化的权威,大规模的高效协作依然能够完成就是因为共识机制。
共识算法最初是用于解决分布式系统的一致性问题,即怎样让分布式系统中对等节点的本地数据完全一致并且对某个共同决策实现共识。工作量证明算法PoW是首先应用于区块链系统的共识算法,利用挖矿节点互相竞争计算新区块的哈希值使之满足一定的难度值来获得区块记账权。PoW需要消耗高额的计算机算力来遍历哈希值,故存在很大的资源浪费且交易吞吐量太低。PPcoin采用PoS共识算法的思想,把挖矿的难度与节点所持虚拟货币的币龄关联起来,使得一个节点挖矿时所提交的币龄越大,其挖矿的难度就越低。虽然还是需要计算哈希值来获得记账的权利,但是能耗相对于PoW已经大大降低了。PoS的缺点是容易造成马太效应,导致数字货币最终集中在少数人的手里。为了解决PoS的货币富集问题,Larimer在PoS的基础上提出了委托权益证明算法DPoS,并在BitShare项目中最先实现了它。在DPoS里面,不是所有节点都参与挖矿过程,普通节点会投票选择自己信任的节点作为见证人节点来验证交易和记账。选出来的见证节点不需要竞争,而是轮流产生区块。但是,DPoS算法也存在许多需要改进的地方,比如:在选举代理人节点的过程中,会出现少数节点联合将选票投给某个候选节点,而其他普通节点投票不积极,影响区块链网络的去中心化特性,导致出现一定的安全性问题;如果被选出的代理人节点集合出现恶意节点,DPoS算法将跳到下一节点继续生产区块,该恶意节点要么生产区块失败,要么产生一个区块链分叉,不能得到及时处理,从而影响区块的打包和验证,导致区块链系统处理交易数据的吞吐量下降和出现安全性问题;在生产区块和验证的过程中,代理人节点生产区块后,还要接受后续代理人节点的验证,当区块获得超过(
Figure 696291DEST_PATH_IMAGE001
)比例的代理人节点验证后,该区块才能添加进区块链并广播给其他节点。这就导致了原本一个代理人节点生产的区块需要几十甚至上百个代理人节点的验证,这大大拖长了区块的验证时延,影响系统的交易吞吐量。
PBFT算法早期作为分布式计算领域的容错技术,主要用于解决分布式网络一致性问题,也可用于区块链系统中,但仅限制于私有链和联盟链中,而在公有链系统中,主要的共识算法是POW、POS和DPoS。这三种共识机制各有优劣,比如POW具有完整的数学证明,理论上来说最安全、实现相对简单,但它在能源消耗、出块时间、交易容量都有很大不足,而POS则有安全风险更大、选举节点时候网络流量压力很大以及“富者愈富,贫者愈贫”等问题,而DPOS缩小了选举节点数量减少了网络压力,但存在持有代币多的节点由操控网络的影响以及恶意节点需再次投票剔除的不便。
委托权益证明共识算法虽然在各方面性能表现上比较均衡,但要满足公有链不断发展的应用需求,必须在安全性、高效、验证时延等方面加以改进。因此,需要引入并创建多种机制,设计一种基于PBFT的委托权益证明算法来解决这些问题。
发明内容
本发明要解决的技术问题是提供一种基于PBFT的委托权益证明区块链共识算法,以解决区块链网络中普通节点投票不积极,容易被少数节点联合将选票投给某个候选节点,恶意节点未能得到及时处理影响区块的打包和验证导致一定的安全性隐患,以及区块验证时延过长等问题。
为解决上述技术问题,本发明的实施例提供一种基于PBFT的委托权益证明区块链共识算法,包括如下步骤:
S1、区块链系统在运行过程中,以一个小时为运行周期,在系统运行前,初始化网络中的所有节点的信用评级、信用系数并记录区块生产轮次
Figure 103002DEST_PATH_IMAGE002
S2、区块链网络中的节点根据自己权益的多少并参考候选节点的信用评级投出赞成票和反对票,其中反对票在一个选举周期内最多只能投一次;当节点投票完成之后,会选出具有更改网络参数的代表节点,以及进行投票结果的统计优化工作;选择有效得票数最多的前个节点,其中前
Figure 197384DEST_PATH_IMAGE003
个节点作为代理人节点集合
Figure 562507DEST_PATH_IMAGE004
,第
Figure 841041DEST_PATH_IMAGE005
Figure 51443DEST_PATH_IMAGE006
的节点作为验证节点集合
Figure 466243DEST_PATH_IMAGE007
,第
Figure 471109DEST_PATH_IMAGE008
Figure 236939DEST_PATH_IMAGE009
的节点作为备选代理人节点集合
Figure 722803DEST_PATH_IMAGE010
S3、代理人节点根据shuffle算法产生一个序列,然后根据该序列轮流生产区块,生成的区块利用PBFT算法来对其进行验证并对当前代理人节点没有在相应的时间片内生产区块的情况作出相应的处理措施,直到一个序列的所有代理人节点完成区块生产;
S4、当按代理人节点集合
Figure 523269DEST_PATH_IMAGE004
的随机序列完成一轮区块生产后,代理人节点通过shuffle算法形成新的出块序列,继续进行步骤S2;如果本次运行周期结束,则继续进行步骤S1。
其中,步骤S1包括如下具体步骤:
S11、信用系数代表了网络中节点生产有效区块的可信程度,信用系数越高的节点越有可能被选入代理人节点集合,反之则不容易被其他节点信任和投票;信用系数主要通过信用消耗和信用奖励机制来起作用,在区块共识的过程中,网络节点的初始信用系数设为默认值,比如说60;节点具有多个信用评级,不同的信用评级标志了代理人节点生产区块的情况,因此涉及节点的信用评级的转换;初始状态下,被选为代理人节点的信用评级为NORMAL级别,表示节点运行正常;
S12、区块生产轮次
Figure 699035DEST_PATH_IMAGE002
初始化为0。
其中,步骤S2包括如下具体步骤:
S21、在节点投票选举的过程中,普通节点根据其他节点的信用评级以及信用系数的多少投赞成票或反对票,每个节点在时间
Figure 952162DEST_PATH_IMAGE011
间隔内最多只能投出一个反对票;普通节点倾向于给信用评级为GOOD的节点投赞成票,而向信用评级为EXCEPTION的节点投反对票;当投票完成之后,根据公式(1)计算每个节点的有效得票数。
Figure 769945DEST_PATH_IMAGE012
(1),
其中,
Figure 159338DEST_PATH_IMAGE013
代表有效得票数,用于选取代理人节点集合,
Figure 28375DEST_PATH_IMAGE014
表示候选节点信用系数折算为选票的折算比例,
Figure 768798DEST_PATH_IMAGE015
Figure 124693DEST_PATH_IMAGE016
为系统自定义值,表示赞成票和反对票各自的加权,满足
Figure 368593DEST_PATH_IMAGE017
,一般可以取
Figure 620582DEST_PATH_IMAGE018
S22、选择有效得票数最多的前
Figure 848301DEST_PATH_IMAGE009
个节点,其中前
Figure 476729DEST_PATH_IMAGE003
个节点作为代理人节点集合
Figure 374802DEST_PATH_IMAGE004
,第
Figure 797693DEST_PATH_IMAGE005
Figure 512708DEST_PATH_IMAGE006
的节点作为验证节点集合
Figure 475985DEST_PATH_IMAGE007
,第
Figure 694477DEST_PATH_IMAGE008
Figure 819428DEST_PATH_IMAGE009
的节点作为备选代理人节点集合
Figure 493510DEST_PATH_IMAGE010
;数量
Figure 994899DEST_PATH_IMAGE003
的取值是通过至少有50%投票的普通节点认为该数量足够确保区块链系统去中心化来确定的;另外,在得到代理人节点集合后,根据投反对票的情况进行信用奖励,每个节点也会计算各自的信用消耗以及进行信用稳定和投票时间
Figure 67897DEST_PATH_IMAGE019
的重置。
其中,步骤S3包括如下具体步骤:
S31、通过shuffle算法,将代理人节点集合随机排序,产生一个随机序列
Figure 98170DEST_PATH_IMAGE020
S32、按照该序列,代理人节点
Figure 522198DEST_PATH_IMAGE021
生产区块并将打包的区块通过PBFT算法进行区块的验证,具体的过程描述为:
S321、代理人节点
Figure 561698DEST_PATH_IMAGE021
将区块链网络中的交易打包成block,然后采用点对点协议将block发送给验证集合中的所有验证节点,当节点
Figure 20361DEST_PATH_IMAGE021
收到足够数量的有效验证回复时即验证通过,并将该区块加入到区块链中,下一节点依次轮流执行当前的区块生产流程;
S322、如果代理人节点生产了无效区块,则其信用评级会由Normal级别降为EXCEPTION级别;如果生产区块失败的次数超过
Figure 490044DEST_PATH_IMAGE022
,该代理人节点的信用评级继续降为ERROR级别,表示该节点为恶意节点,需要用
Figure 135789DEST_PATH_IMAGE010
集合中的备选代理人节点进行替换;如果节点
Figure 713401DEST_PATH_IMAGE021
累计生产的有效区块数超过阈值
Figure 760992DEST_PATH_IMAGE023
,则节点的信用评级转为GOOD级别。
其中,步骤S4包括如下具体步骤:
S41、代理人节点序列
Figure 929805DEST_PATH_IMAGE024
中的最后一个节点即
Figure 62846DEST_PATH_IMAGE025
在规定的时间片内打包完区块时,第一轮区块生产完成,产块轮次
Figure 724376DEST_PATH_IMAGE002
加1,并进行步骤S3;
S42、当本次运行周期结束时,执行步骤S2。
本发明的上述技术方案的有益效果如下:
1、本发明基于信用奖惩的代理人节点选举模型,针对DPoS共识算法节点投票不积极和恶意节点仍可能当选代理人节点的问题,本发明定义了相关的代理人信用评级、信用系数等核心要素,引入了基于信用奖惩的代理人节点选举模型。在这种选举模型下,网络节点通过投反对票大大减少了异常节点成为代理人的比例。同时由于信用稳定和时间重置机制,普通节点需要尽量参与到选举投票中去,有效提高了选举的积极性。
2、本发明中,备选代理人节点替换机制,针对DPoS共识算法无法在一轮选举周期内及时处理恶意节点的问题,本发明通过选举出代理人节点和备选代理人节点集合,其中备选代理人节点集合用于替换代理人节点集合中由于多次出块失败转变为ERROR状态的节点,于是有效处理了恶意节点。
3、本发明基于PBFT算法的区块验证方案,针对DPoS算法验证时延远远大于区块生产时延,影响出块效率的问题,本发明引入PBFT算法来快速验证区块。同样,根据选举模型选出验证代理人节点集合,然后在该集合上运行PBFT算法,达到及时验证区块的目的。如果验证代理人节点集合的主节点出现故障引起视图更换,也需要用备选代理人节点集合中的正常节点来替换,这避免了验证代理人节点集合频繁进行视图更换,提高了算法的安全性。
附图说明
图1为本发明的节点评级转换示意图。
图2为本发明的奖惩方案流程图。
图3为本发明的信用奖惩架构图。
图4为本发明的PBFT算法验证结构图。
图5为本发明的区块验证过程图。
图6为本发明的备选节点替换结构图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明提供一种基于PBFT的委托权益证明区块链共识算法即PDPoS算法,针对DPoS节点投票不积极和恶意节点仍可能当选代理人节点的问题,定义了信用评级、信用系数等概念,引入了基于信用奖惩的代理人节点选举模型。在这个选举模型下,网络节点通过投反对票大大减少了异常节点成为代理人的比例。同时由于信用稳定和时间重置机制,普通节点需要尽量参与到选举投票中去,有效提高了选举的积极性;针对DPoS共识算法在一轮选举周期内不能及时处理恶意节点的问题,选举出代理人和备选代理人节点集合,其中备选代理人节点集合用于及时替换代理人节点集合中多次出块失败的节点,于是有效处理了恶意节点。另一方面,针对DPoS算法验证时延远大于区块生产时延,进而影响出块效率的问题,算法选举出验证节点集合,然后引入PBFT算法来快速验证区块。
本发明具体包括以下步骤:
步骤1:在每个运行周期初始阶段,获取区块链网络中各个节点的信用系数、信用评级和初始化代理人节点在当前运行周期生产区块的轮次
Figure 626473DEST_PATH_IMAGE026
在每一个运行周期内,节点具有多个信用评级,不同的信用评级标志了代理人节点生产区块的情况,因此涉及节点的信用评级的转换。初始状态下,被选为代理人节点的信用评级为NORMAL级别,表示节点运行正常。按照时间片轮转的原则,当轮到该节点生产区块时,如果节点产生了无效区块,则其信用评级变为EXCEPTION状态,否则继续保持NORMAL状态。随着多轮区块生产,代理人节点连续生产了多个区块并超过了阈值M,则节点的信用评级变为GOOD,处于GOOD信用评级的代理人节点在下一场节点选举时会被普通节点优先投票。同样地,处于EXCEPTION信用评级的代理人节点会在下一场投票选举中处于不利地位,甚至被投反对票。如果处于EXCEPTION信用评级的代理人节点区块生产失败的次数达到m,则会降为ERROR级别而停止生产区块,为了维持一定数量的代理人节点,保证系统的安全性,会采用备选节点替换机制替换ERROR节点。如图1所示为信用评级之间的转换示意图。
步骤2:代理人节点集合、验证节点集合、备选替换节点集合选举在每个运行周期的第一轮生产区块之前都会进行节点选举,节点的选举规则如下:在节点投票选举的过程中,普通节点根据其他节点的信用评级以及信用系数的多少投赞成票或反对票,每个节点在时间T间隔内最多只能投出一个反对票。一般来说普通节点倾向于给信用评级为GOOD的节点投赞成票,而向信用评级为EXCEPTION的节点投反对票。当节点投票完成之后,会选出具有更改网络参数的代表节点,以及进行投票结果的统计优化工作。利用式(1)计算每个候选节点的有效得票数并进行排序,选择有效得票数最多的前
Figure 435029DEST_PATH_IMAGE009
个节点,其中前
Figure 789787DEST_PATH_IMAGE003
个节点作为代理人节点集合
Figure 974781DEST_PATH_IMAGE004
,第
Figure 731384DEST_PATH_IMAGE005
Figure 445263DEST_PATH_IMAGE006
的节点作为验证节点集合
Figure 552896DEST_PATH_IMAGE007
,第
Figure 278931DEST_PATH_IMAGE008
Figure 890041DEST_PATH_IMAGE009
的节点作为备选代理人节点集合
Figure 305979DEST_PATH_IMAGE010
。数量
Figure 635329DEST_PATH_IMAGE003
的取值是通过至少有50%投票的普通节点认为该数量足够确保区块链系统去中心化来确定的。另外,在得到代理人节点集合后,根据投反对票的情况进行信用奖励,每个节点也会计算各自的信用消耗以及进行信用稳定和投票时间
Figure 896546DEST_PATH_IMAGE019
的重置。
在原始的委托权益证明算法中,普通节点只能通过投赞成票的方式给信任的节点投票,而不能对不信任的网络节点投反对票来进一步降低其被选为代理人节点的概率,因此本发明设置了一个投反对票机制。另外需要用信用奖励和消耗的方式来进一步提高网络节点投票的积极性,维持系统的高效、安全运转,因此设置了多种奖惩措施。两者在选举投票阶段相互协作,其运行流程如图2所示。
此步骤中的信用奖惩措施主要包含信用消耗、信用稳定、投票时间重置以及信用奖励四个模块。前三个模块是针对节点投票情况进行的被动信用惩罚,主要用来提高节点投票的积极性,而信用奖励模块主要是奖励投反对票从而主动降低异常节点当选代理人节点的概率。整个机制是建立在节点信用系数基础之上的,信用系数代表节点的正常生产区块的可信程度。节点的信用奖惩架构如图3所示。
信用消耗模块表示信用系数会随着投票时间缓慢降低,其满足的规则在本实施例中定义为:
Figure 627742DEST_PATH_IMAGE027
(2);
其中,
Figure 214581DEST_PATH_IMAGE028
代表分布式网络中各个节点的信用系数,
Figure 565315DEST_PATH_IMAGE019
代表两次投票的实际时间间隔,
Figure 364644DEST_PATH_IMAGE011
表示一个固定的自定义时间间隔,本实施例定义为1个小时。如果节点参与投票的实际间隔时间
Figure 215925DEST_PATH_IMAGE019
超过
Figure 708086DEST_PATH_IMAGE011
则说明节点投票不积极,因此信用系数
Figure 12029DEST_PATH_IMAGE028
会缓慢下降,否则
Figure 615048DEST_PATH_IMAGE028
不改变。
Figure 320836DEST_PATH_IMAGE029
表示信用消耗速率,可根据实际的应用需求进行调整。
信用稳定和投票时间重置模块:每经过一轮投票,节点都会根据式(2)来计算自己当前信用值。如果节点投票成功则投票累计时间
Figure 986828DEST_PATH_IMAGE019
变为0,反之
Figure 778067DEST_PATH_IMAGE019
会不断增加,直至超过固定时间间隔
Figure 919198DEST_PATH_IMAGE011
,导致信用系数的下降。因此有效节点会积极参与到投票环节中来以保持信用稳定。
信用奖励模块:这里的信用奖励主要是针对节点投反对票并且成功时的奖励。每隔时间T,普通节点只能投一个反对票以防止故意破坏选举过程。一般来说,普通节点有可能针对异常节点来投反对票,如果异常节点没有当选代理人节点,则会获得一定的信用奖励,如式(3)所示:
Figure 479493DEST_PATH_IMAGE030
(3)。
节点投票完成后需要针对每个节点的得票情况进行统计排序。每个节点动态维护一张节点信息表,如表1所示。
表1
节点公钥 信用评级 信用系数(C) 赞成票(V) 反对票(NV)
NORMAL 60 10 1
根据节点的信用系数、赞成票数以及反对票数来计算有效得票数。相关的计算公式如式(1)所示。
步骤3:代理人节点区块生产通过步骤2得到代理人节点节点集合,通过代理人节点采用时间片轮转的方式轮流生产区块,本实施例中每隔3秒生产一个区块,然后将区块交由后序的代理人节点依次验证。如果某个代理人节点在相应的时间片内生产区块失败,则跳过该节点由下个代理人节点生产区块。委托权益证明算法没有针对该节点的行为立即做出处理,而是寄希望于下一次投票选举中将该生产区块失败的节点投出代理人节点集合。生产区块失败的节点仍可能在本轮选举周期内生产无效区块,从而影响区块生成效率以及系统的安全性。因此,本实施例在委托权益证明算法的基础上引入了奖惩机制。如果代理人节点生产了无效区块,则其信用评级会由Normal级别降为EXCEPTION级别;如果生产区块失败的次数超过m,该代理人节点的信用评级继续降为ERROR级别,表示该节点为恶意节点,需要用
Figure 579036DEST_PATH_IMAGE010
集合中的备选代理人节点进行替换。代理人节点的出块算法具体步骤的伪代码如表2所示:
表2
Algorithm: GenerateBlock()
Input: R1={x[0],x[1],…x[n-1]},Transactions
Output: block
Figure DEST_PATH_IMAGE002
1 R1 shuffle(R1) //打乱排序
2 slot = global_time_offset/block_time
3 pos = slot mod |R1| //选取初始记账代理节点位置
4 WHILE true:
Figure 692379DEST_PATH_IMAGE002
5 (block,error) PackagingBlock(R1[pos],Transactions) //打包区块
6 IF error.flag = false THEN
7 verify(block,R2) //验证区块
8 IF R1[pos].num >= M THEN R1[pos].CreditRating = GOOD
9 ELSE //区块生产失败
10 IF error.num < m THEN
11 R1[pos].CreditRating = EXCEPTION
12 ELSE
13 R1[pos].CreditRating = ERROR
Figure 609520DEST_PATH_IMAGE002
14 R1[pos] substitute(R1[pos],R3) //备选节点替换
15 END IF
16 END IF
Figure 326940DEST_PATH_IMAGE002
17 pos pos+1
18 IF isElectionBegin() = true //如果新的选举周期开始,则结束本轮区块生产
19 Break;
20 END IF
21 END WHILE
步骤4:区块验证及恶意节点替换
如图4所示,代理人节点1收集网络中的交易并打包成区块1,然后采用点对点协议发送给验证集合中的主节点
Figure 675212DEST_PATH_IMAGE038
。发送的格式为
Figure 888544DEST_PATH_IMAGE039
,其中
Figure 303344DEST_PATH_IMAGE040
表示封装的区块,
Figure 573789DEST_PATH_IMAGE019
表示时间戳,
Figure 74040DEST_PATH_IMAGE002
表示代理人节点序号,
Figure 88133DEST_PATH_IMAGE041
表示区块
Figure 623019DEST_PATH_IMAGE040
的摘要,
Figure 798786DEST_PATH_IMAGE042
表示代理人节点的签名。代理人节点1在规定的时间片内生产完区块后,便交由代理人节点2进行下一区块的生产,同时等待接收
Figure 789263DEST_PATH_IMAGE043
个该区块的带有效签名的回复,本实施例假定验证集合中的恶意节点个数为
Figure 75888DEST_PATH_IMAGE044
,总节点个数为
Figure 730860DEST_PATH_IMAGE045
,因此有
Figure 77528DEST_PATH_IMAGE046
。回复的格式一般为
Figure 552371DEST_PATH_IMAGE047
,其中
Figure 642687DEST_PATH_IMAGE029
代表当前的视图序号,
Figure 152166DEST_PATH_IMAGE019
代表相应请求的时间戳,
Figure 203823DEST_PATH_IMAGE002
为生产该区块的代理人节点序号,
Figure 165963DEST_PATH_IMAGE048
Figure 794390DEST_PATH_IMAGE049
集合中的验证节点序号,
Figure 158375DEST_PATH_IMAGE050
代表
Figure 378004DEST_PATH_IMAGE048
节点的对该回复的签名,
Figure 827440DEST_PATH_IMAGE041
表示该区块的摘要。
主节点
Figure 86707DEST_PATH_IMAGE038
在接受到区块消息后进入预准备(pre-prepare)阶段,同时将区块封装为预准备消息并保存在本地日志上,然后将该消息广播给其余的验证代理人节点。由于区块是按照代理节点的顺序生产的,因此不涉及区块排序的问题,不需要为该区块分配序列号。封装签名后的预准备消息格式为
Figure 305199DEST_PATH_IMAGE051
-
Figure 164570DEST_PATH_IMAGE052
,其中
Figure 366881DEST_PATH_IMAGE029
代表该消息被发送时所处的视图号,
Figure 602691DEST_PATH_IMAGE041
代表区块的摘要即
Figure 941268DEST_PATH_IMAGE053
Figure 971541DEST_PATH_IMAGE054
代表主节点对该消息的签名。主节点的选取跟PBFT算法的选取方式一样为:
Figure 129990DEST_PATH_IMAGE055
(4)。
每个验证节点在接受主节点发送来的预准备消息前,需要检查如下条件:
消息中的签名是正确的并且
Figure 906841DEST_PATH_IMAGE053
;验证节点的视图号与消息中的视图号相同;没有接受过视图
Figure 99925DEST_PATH_IMAGE029
下摘要
Figure 566678DEST_PATH_IMAGE041
相同的预准备消息,即没有重复接受消息。
如果验证节点接受了预准备消息
Figure 212423DEST_PATH_IMAGE051
-
Figure 524456DEST_PATH_IMAGE052
,就进入了准备(prepare)阶段,同时向其他验证节点(包括主节点)广播一条准备消息,格式为
Figure 837625DEST_PATH_IMAGE056
,其中
Figure 209701DEST_PATH_IMAGE050
为验证节点的签名。验证节点会在本地日志中保留这两条消息以备检查。其他验证节点(包括主节点)在收到准备消息后仍会检查签名是否正确、视图号是否一致、有没有重复接受消息等条件,如果通过则将收到的准备消息保留在本地日志上。
当验证节点本地日志上保存有验证通过的1条预准备消息以及
Figure 345671DEST_PATH_IMAGE057
个相应的来自不同验证节点的准备消息时,验证节点进入提交(commit)阶段并给其他验证节点广播一条提交消息,格式为
Figure 726974DEST_PATH_IMAGE058
。其他验证节点在接受提交消息之前同样也会按照上面的条件进行有效性检查,然后将该提交消息保存在本地日志上面。当验证节点收到了
Figure 629071DEST_PATH_IMAGE059
个关于
Figure 172048DEST_PATH_IMAGE040
的有效提交消息后,
Figure 792385DEST_PATH_IMAGE040
的验证完成然后各自向代理人节点1发送回复消息。代理人节点在接受到区块1的
Figure 711800DEST_PATH_IMAGE043
个来自不同验证节点的有效回复时,便将区块添加进区块链,同时向其他节点广播该验证通过后的区块。
如果代理人节点没有及时收到区块的回复消息,就会给所有验证节点广播这个区块验证请求。已经处理过该区块的验证节点会简单地重新回复消息,否则将这个区块请求转发给主节点。如果主节点没有对这个区块请求做出响应,它就会被足够多的验证节点怀疑从而导致视图更改,更换新的主节点。正常情况下的区块验证过程如图5所示。
如果代理人节点没有在相应的时间片内打包区块、或者代理人节点打包的区块验证出错,则说明代理人节点生产区块失败。会根据代理人节点出块算法对该节点的信用评级进行调整。
如图6所示,代理人节点1在生产区块1的时候,可能会出现区块验证无效从而导致区块生产失败,或者主节点故意延迟导致代理人节点不能及时收到
Figure 733982DEST_PATH_IMAGE043
个有效回复。这时,代理人节点1由于没有在既定的时间片内生产区块而由节点2继续进行区块的打包工作,其本身则被一个良好的备选代理人节点替换;另外一方面,验证节点集合
Figure 716369DEST_PATH_IMAGE049
会进行视图更改,产生一个新的主节点,原来的主节点则同样被某个备选代理节点替换。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (5)

1.一种基于PBFT的委托权益证明区块链共识算法,其特征在于,包括如下步骤:
S1、区块链系统在运行过程中,以一个小时为运行周期,在系统运行前,初始化网络中的所有节点的信用评级、信用系数并记录区块生产轮次
Figure 456940DEST_PATH_IMAGE001
S2、区块链网络中的节点根据自己权益的多少并参考候选节点的信用评级投出赞成票和反对票,其中反对票在一个选举周期内最多只能投一次;当节点投票完成之后,会选出具有更改网络参数的代表节点,以及进行投票结果的统计优化工作;选择有效得票数最多的前个节点,其中前
Figure 123545DEST_PATH_IMAGE002
个节点作为代理人节点集合
Figure 674131DEST_PATH_IMAGE003
,第
Figure 250737DEST_PATH_IMAGE004
Figure 960067DEST_PATH_IMAGE005
的节点作为验证节点集合
Figure 379547DEST_PATH_IMAGE006
,第
Figure 465314DEST_PATH_IMAGE007
Figure 162006DEST_PATH_IMAGE008
的节点作为备选代理人节点集合
Figure 39308DEST_PATH_IMAGE009
S3、代理人节点根据shuffle算法产生一个序列,然后根据该序列轮流生产区块,生成的区块利用PBFT算法来对其进行验证并对当前代理人节点没有在相应的时间片内生产区块的情况作出相应的处理措施,直到一个序列的所有代理人节点完成区块生产;
S4、当按代理人节点集合
Figure 680505DEST_PATH_IMAGE003
的随机序列完成一轮区块生产后,代理人节点通过shuffle算法形成新的出块序列,继续进行步骤S2;如果本次运行周期结束,则继续进行步骤S1。
2.根据权利要求1所述的基于PBFT的委托权益证明区块链共识算法,其特征在于,步骤S1包括如下具体步骤:
S11、信用系数代表了网络中节点生产有效区块的可信程度,信用系数越高的节点越有可能被选入代理人节点集合,反之则不容易被其他节点信任和投票;信用系数主要通过信用消耗和信用奖励机制来起作用,在区块共识的过程中,网络节点的初始信用系数设为默认值;节点具有多个信用评级,不同的信用评级标志了代理人节点生产区块的情况,因此涉及节点的信用评级的转换;初始状态下,被选为代理人节点的信用评级为NORMAL级别,表示节点运行正常;
S12、区块生产轮次
Figure 445329DEST_PATH_IMAGE001
初始化为0。
3.根据权利要求1所述的基于PBFT的委托权益证明区块链共识算法,其特征在于,步骤S2包括如下具体步骤:
S21、在节点投票选举的过程中,普通节点根据其他节点的信用评级以及信用系数的多少投赞成票或反对票,每个节点在时间
Figure 855582DEST_PATH_IMAGE010
间隔内最多只能投出一个反对票;普通节点倾向于给信用评级为GOOD的节点投赞成票,而向信用评级为EXCEPTION的节点投反对票;当投票完成之后,根据公式(1)计算每个节点的有效得票数;
Figure 172294DEST_PATH_IMAGE011
(1),
其中,
Figure 300787DEST_PATH_IMAGE012
代表有效得票数,用于选取代理人节点集合,
Figure 883951DEST_PATH_IMAGE013
表示候选节点信用系数折算为选票的折算比例,
Figure 148710DEST_PATH_IMAGE014
Figure 636324DEST_PATH_IMAGE015
为系统自定义值,表示赞成票和反对票各自的加权,满足
Figure 986533DEST_PATH_IMAGE016
,一般可以取
Figure 93161DEST_PATH_IMAGE017
S22、选择有效得票数最多的前
Figure 478006DEST_PATH_IMAGE008
个节点,其中前
Figure 136520DEST_PATH_IMAGE002
个节点作为代理人节点集合
Figure 236676DEST_PATH_IMAGE003
,第
Figure 881415DEST_PATH_IMAGE004
Figure 120766DEST_PATH_IMAGE005
的节点作为验证节点集合
Figure 950182DEST_PATH_IMAGE006
,第
Figure 415930DEST_PATH_IMAGE007
Figure 254573DEST_PATH_IMAGE008
的节点作为备选代理人节点集合
Figure 757885DEST_PATH_IMAGE009
;数量
Figure 758202DEST_PATH_IMAGE002
的取值是通过至少有50%投票的普通节点认为该数量足够确保区块链系统去中心化来确定的;另外,在得到代理人节点集合后,根据投反对票的情况进行信用奖励,每个节点也会计算各自的信用消耗以及进行信用稳定和投票时间
Figure 835879DEST_PATH_IMAGE018
的重置。
4.根据权利要求1所述的基于PBFT的委托权益证明区块链共识算法,其特征在于,步骤S3包括如下具体步骤:
S31、通过shuffle算法,将代理人节点集合随机排序,产生一个随机序列
Figure 88000DEST_PATH_IMAGE019
S32、按照该序列,代理人节点
Figure 567523DEST_PATH_IMAGE020
生产区块并将打包的区块通过PBFT算法进行区块的验证,具体的过程描述为:
S321、代理人节点
Figure 611178DEST_PATH_IMAGE020
将区块链网络中的交易打包成block,然后采用点对点协议将block发送给验证集合中的所有验证节点,当节点
Figure 910572DEST_PATH_IMAGE020
收到足够数量的有效验证回复时即验证通过,并将该区块加入到区块链中,下一节点依次轮流执行当前的区块生产流程;
S322、如果代理人节点生产了无效区块,则其信用评级会由Normal级别降为EXCEPTION级别;如果生产区块失败的次数超过
Figure 825439DEST_PATH_IMAGE021
,该代理人节点的信用评级继续降为ERROR级别,表示该节点为恶意节点,需要用
Figure 893889DEST_PATH_IMAGE009
集合中的备选代理人节点进行替换;如果节点
Figure 376954DEST_PATH_IMAGE020
累计生产的有效区块数超过阈值
Figure 898065DEST_PATH_IMAGE022
,则节点的信用评级转为GOOD级别。
5.根据权利要求1所述的基于PBFT的委托权益证明区块链共识算法,其特征在于,步骤S4包括如下具体步骤:
S41、代理人节点序列
Figure 616622DEST_PATH_IMAGE023
中的最后一个节点即
Figure 937315DEST_PATH_IMAGE024
在规定的时间片内打包完区块时,第一轮区块生产完成,产块轮次
Figure 450336DEST_PATH_IMAGE001
加1,并进行步骤S3;
S42、当本次运行周期结束时,执行步骤S2。
CN202110714398.5A 2021-06-26 2021-06-26 一种基于pbft的委托权益证明区块链共识算法 Pending CN113407632A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110714398.5A CN113407632A (zh) 2021-06-26 2021-06-26 一种基于pbft的委托权益证明区块链共识算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110714398.5A CN113407632A (zh) 2021-06-26 2021-06-26 一种基于pbft的委托权益证明区块链共识算法

Publications (1)

Publication Number Publication Date
CN113407632A true CN113407632A (zh) 2021-09-17

Family

ID=77679452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110714398.5A Pending CN113407632A (zh) 2021-06-26 2021-06-26 一种基于pbft的委托权益证明区块链共识算法

Country Status (1)

Country Link
CN (1) CN113407632A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112132579A (zh) * 2020-09-30 2020-12-25 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN113904875A (zh) * 2021-12-06 2022-01-07 湖南宸瀚信息科技有限责任公司 一种基于区块链的多链融合权限管制系统
CN114154994A (zh) * 2021-10-29 2022-03-08 海南火链科技有限公司 一种基于区块链的超级节点确定方法及装置、存储介质
CN114362963A (zh) * 2022-01-07 2022-04-15 南京市中西医结合医院 基于算力证明的治未病场景下联盟链主节点选举算法
CN114629915A (zh) * 2022-03-04 2022-06-14 中信银行股份有限公司 一种见证人选举的投票机制处理方法及系统
CN116760837A (zh) * 2023-08-22 2023-09-15 苏州海加网络科技股份有限公司 一种基于联邦学习和权益选举的分布式共识方法及系统
CN116862513A (zh) * 2023-08-30 2023-10-10 环球数科集团有限公司 一种基于PoS共识的高安全性公共支付系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109819022A (zh) * 2019-01-11 2019-05-28 华侨大学 一种基于信用评价的区块链共识方法
CN111131181A (zh) * 2019-12-05 2020-05-08 重庆邮电大学 一种基于信誉机制和DPBFT算法的区块链动态DPoS共识方法
CN111131209A (zh) * 2019-12-16 2020-05-08 国网重庆市电力公司客户服务中心 一种改进的高效共识方法、系统、计算机设备及存储介质
CN111355810A (zh) * 2020-03-17 2020-06-30 重庆邮电大学 一种基于信誉与投票机制的改进pbft共识方法
US20200313855A1 (en) * 2019-03-26 2020-10-01 Si Yin Consensus method for blockchain via virtual machine based hybrid delegated proof of stake and proof of work (vdposw)

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109819022A (zh) * 2019-01-11 2019-05-28 华侨大学 一种基于信用评价的区块链共识方法
US20200313855A1 (en) * 2019-03-26 2020-10-01 Si Yin Consensus method for blockchain via virtual machine based hybrid delegated proof of stake and proof of work (vdposw)
CN111131181A (zh) * 2019-12-05 2020-05-08 重庆邮电大学 一种基于信誉机制和DPBFT算法的区块链动态DPoS共识方法
CN111131209A (zh) * 2019-12-16 2020-05-08 国网重庆市电力公司客户服务中心 一种改进的高效共识方法、系统、计算机设备及存储介质
CN111355810A (zh) * 2020-03-17 2020-06-30 重庆邮电大学 一种基于信誉与投票机制的改进pbft共识方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
马超宇: "区块链中改进的委托权益证明共识机制的研究", 《中国优秀博硕士学位论文全文数据库 信息科技辑》, 15 January 2021 (2021-01-15) *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112132579A (zh) * 2020-09-30 2020-12-25 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN112132579B (zh) * 2020-09-30 2022-08-12 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN114154994A (zh) * 2021-10-29 2022-03-08 海南火链科技有限公司 一种基于区块链的超级节点确定方法及装置、存储介质
CN113904875A (zh) * 2021-12-06 2022-01-07 湖南宸瀚信息科技有限责任公司 一种基于区块链的多链融合权限管制系统
CN113904875B (zh) * 2021-12-06 2022-02-22 湖南宸瀚信息科技有限责任公司 一种基于区块链的多链融合权限管制系统
CN114362963A (zh) * 2022-01-07 2022-04-15 南京市中西医结合医院 基于算力证明的治未病场景下联盟链主节点选举算法
CN114629915A (zh) * 2022-03-04 2022-06-14 中信银行股份有限公司 一种见证人选举的投票机制处理方法及系统
CN116760837A (zh) * 2023-08-22 2023-09-15 苏州海加网络科技股份有限公司 一种基于联邦学习和权益选举的分布式共识方法及系统
CN116760837B (zh) * 2023-08-22 2023-11-24 苏州海加网络科技股份有限公司 一种基于联邦学习和权益选举的分布式共识方法及系统
CN116862513A (zh) * 2023-08-30 2023-10-10 环球数科集团有限公司 一种基于PoS共识的高安全性公共支付系统
CN116862513B (zh) * 2023-08-30 2023-11-07 环球数科集团有限公司 一种基于PoS共识的高安全性公共支付系统

Similar Documents

Publication Publication Date Title
CN113407632A (zh) 一种基于pbft的委托权益证明区块链共识算法
Zhou et al. Solutions to scalability of blockchain: A survey
Ferdous et al. Blockchain consensus algorithms: A survey
US11177941B2 (en) Methods and systems for a heterogeneous multi-chain framework
Zhuang et al. Proof of reputation: A reputation-based consensus protocol for blockchain based systems
CN109964446B (zh) 一种基于投票的共识方法
KR102240939B1 (ko) 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법
WO2020143183A1 (zh) 基于股份授权证明机制的区块链共识方法及相关设备
Sun et al. Voting-based decentralized consensus design for improving the efficiency and security of consortium blockchain
CN110351067B (zh) 针对主从多链的区块链共识方法
CN111090892A (zh) 一种基于vrf和门限签名的区块链共识方法和装置
CN111010278B (zh) 一种基于DPoS高容错分层共识方法
CN113422805B (zh) 一种基于可验证随机函数的分片共识方法
Xuan et al. ECBCM: a prestige‐based edge computing blockchain security consensus model
CN116366669A (zh) 一种适用于众包系统的基于信誉值分权制衡的共识方法
Reijsbergen et al. Laksa: A probabilistic proof-of-stake protocol
CN110930158A (zh) 一种基于奖惩机制的区块链DPoS共识方法
Drakatos et al. Adrestus: Secure, scalable blockchain technology in a decentralized ledger via zones
CN112995167A (zh) 基于Kafka机制的用电信息采集方法、区块链网络及用户端
EP4004853A1 (en) Unity protocol consensus
Byers Combating Front-Running in the Blockchain Ecosystem
Drakatos et al. Rapid Blockchain Scaling with Efficient Transaction Assignment
CN111786772A (zh) 一种基于区块链的确定的非确定性选择方法、系统及存储介质
Hao et al. BitFT: An Understandable, Performant and Resource-Efficient Blockchain Consensus
Gai et al. A Secure Sidechain for Decentralized Trading in Internet of Things

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