PBFT算法优化方法、装置、设备和存储介质制造方法及图纸

技术编号:32429416 阅读:13 留言:0更新日期:2022-02-24 18:36
本发明专利技术涉及一种PBFT算法优化方法、装置、设备和存储介质,该方法包括:区块链应用程序将预先构建好的交易请求发送至共识节点;共识节点向区块链应用程序发送验证消息,指示区块链应用程序验证交易的有效性;主节点选择有效交易并打包成区块,并将区块广播至共识节点;共识节点通过广播第一消息来进行第一轮投票,根据第一消息广播第二消息来进行第二轮投票;判断收到不为空的第二消息的节点数量与全部节点的数量比值是否大于第一设定比例阈值,若是,通过区块的提议,区块高度增加1;否则返回执行主节点构建区块并广播的步骤。简化了主节点变换流程,有更加灵活的权限配置,实现区块链应用层可以动态增删验证节点的功能,更加符合现实需求。合现实需求。合现实需求。

【技术实现步骤摘要】
PBFT算法优化方法、装置、设备和存储介质


[0001]本专利技术涉及区块链共识算法
,具体涉及一种PBFT算法优化方法、装置、设备和存储介质。

技术介绍

[0002]传统的主从模式下的PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)算法通常包括以下几个核心流程:初始化验证节点、客户端向主节点发送请求、主节点验证并广播客户端请求、所有节点进行第一轮投票、达成共识。
[0003]针对上述流程的不同阶段,PBFT算法的具体实现有不同的优化方法,比如针对主节点可能为恶意节点的优化,或者,针对视图转换的优化,以及,自定义投票通过比例来平衡性能、容错率和网络环境等层面的优化。
[0004]但是,传统的PBFT算法通常存在如下缺陷:各节点需要在节点硬盘上管理数据,比如,为了在视图转换过程中恢复上一轮的请求,节点需要将上一轮的请求消息记录在本地,同时在执行请求后需要清除硬盘上数据,步骤较为繁琐。另外,通过节点数量来代表投票数,无法实现较为灵活的权限分配;验证节点依赖初始设置,无法动态调整;针对恶意节点没有问责机制等。

技术实现思路

[0005]有鉴于此,提供一种PBFT算法优化方法、装置、设备和存储介质,以解决传统PBFT算法步骤繁琐、权限分配不灵活以及没有针对恶意节点的问责机制等问题。
[0006]本专利技术采用如下技术方案:
[0007]第一方面,本申请实施例提供了一种PBFT算法优化方法,该方法包括:
[0008]区块链应用程序将预先构建好的交易请求发送至共识节点;
[0009]所述共识节点向所述区块链应用程序发送验证消息,以指示所述区块链应用程序验证交易的有效性;
[0010]主节点选择有效交易并打包成区块,并将所述区块广播至共识节点;
[0011]共识节点通过广播第一消息来进行第一轮投票,根据所述第一消息广播第二消息来进行第二轮投票;
[0012]判断收到不为空的第二消息的节点数量与全部节点的数量比值是否大于第一设定比例阈值,若是,则所述通过区块的提议,区块高度增加1;否则返回执行所述主节点构建区块并广播的步骤。
[0013]第二方面,本申请实施例提供了一种PBFT算法优化装置,该装置包括:
[0014]交易请求发送模块,用于指示区块链应用程序将预先构建好的交易请求发送至共识节点;
[0015]验证模块,用于指示所述共识节点向所述区块链应用程序发送验证消息,以指示所述区块链应用程序验证交易的有效性;
[0016]区块打包模块,用于指示主节点选择有效交易并打包成区块,并将所述区块广播至共识节点;
[0017]投票模块,用于指示共识节点通过广播第一消息来进行第一轮投票,根据所述第一消息广播第二消息来进行第二轮投票;
[0018]判断模块,用于判断收到不为空的第二消息的节点数量与全部节点的数量比值是否大于第一设定比例阈值;
[0019]优化模块,用于在收到不为空的第二消息的节点数量与全部节点的数量比值是否大于第一设定比例阈值时,所述通过区块的提议,区块高度增加1;否则返回执行所述主节点构建区块并广播的步骤。
[0020]第三方面,本申请实施例提供了一种设备,该设备包括:
[0021]处理器,以及与所述处理器相连接的缓存器;
[0022]所述缓存器用于缓存计算机程序,所述计算机程序至少用于执行本申请实施例第一方面所述的PBFT算法优化方法;
[0023]所述处理器用于调用并执行所述缓存器中的所述计算机程序。
[0024]第四方面,本申请实施例提供了一种存储介质,所述存储介质缓存有计算机程序,所述计算机程序被处理器执行时,实现如第一方面所述的PBFT算法优化方法中各个步骤。
[0025]本专利技术采用以上技术方案,去除了传统PBFT算法中的视图转换过程,简化了主节点变换流程;使用节点满足的条件来投票,实现了更加灵活的权限配置;通过对节点进行投票,包装成区块链中的交易,实现区块链应用层可以动态增删验证节点的功能;通过减少恶意节点的比例实现对恶意节点的问责功能;另外,串行执行多个共识实例的方式更加适用区块链应用。因此,优化后的PBFT算法更加快速、灵活以及更加符合现实需求。
附图说明
[0026]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027]图1是本申请实施例提供的一种PBFT算法优化方法的流程图;
[0028]图2是本申请实施例提供的一种PBFT算法优化装置的结构示意图;
[0029]图3是本申请实施例提供的一种设备的结构示意图。
具体实施方式
[0030]为使本专利技术的目的、技术方案和优点更加清楚,下面将对本专利技术的技术方案进行详细的描述。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本专利技术所保护的范围。
[0031]实施例
[0032]图1为本专利技术实施例提供的一种PBFT算法优化方法的流程图,该方法可以由本专利技术实施例提供的PBFT算法优化装置来执行,该装置可采用软件和/或硬件的方式实现。参考
图1,该方法具体可以包括如下步骤:
[0033]S101、区块链应用程序将预先构建好的交易请求发送至共识节点。
[0034]具体的,系统预先构建交易请求,区块链应用程序将预先构建好的交易请求发送至共识节点,共识节点在接收到交易请求后,将交易请求保存至内存池进行缓存。
[0035]S102、共识节点向区块链应用程序发送验证消息,以指示区块链应用程序验证交易的有效性。
[0036]其中,共识节点在接收到交易请求后,同时向区块链应用程序发送验证消息,区块链应用程序在接收到验证消息后,根据验证消息来验证交易的有效性,若交易有效,则称为有效交易,若交易无效,则称为无效交易。若交易有效,则将交易缓存至内存池。
[0037]S103、主节点选择有效交易并打包成区块,并将区块广播至共识节点。
[0038]具体的,主节点在内存池中选择有效交易并打包成区块;并将区块广播至共识节点。在一个具体的例子中,例如可以通过gossip协议将区块广播至共识节点。
[0039]S104、共识节点通过广播第一消息来进行第一轮投票,根据第一消息广播第二消息来进行第二轮投票。
[0040]其中,第一消息用消息A表示,第二消息用消息B表示。在第一轮投票过程中,所有公式节点广播一条消息A,若某个节点在设定时间范围内接受到区块的提议,则该节点接收到的消息A不为空,否则,该节点接收到的消息A为空。示例性的,设定时本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种PBFT算法优化方法,其特征在于,包括:区块链应用程序将预先构建好的交易请求发送至共识节点;所述共识节点向所述区块链应用程序发送验证消息,以指示所述区块链应用程序验证交易的有效性;主节点选择有效交易并打包成区块,并将所述区块广播至共识节点;共识节点通过广播第一消息来进行第一轮投票,根据所述第一消息广播第二消息来进行第二轮投票;判断收到不为空的第二消息的节点数量与全部节点的数量比值是否大于第一设定比例阈值,若是,则所述通过区块的提议,区块高度增加1;否则返回执行所述主节点构建区块并广播的步骤。2.根据权利要求1所述的方法,其特征在于,所述共识节点通过广播第一消息来进行第一轮投票包括:确定在设定时间范围内接收到区块的提议的节点接收到的所述第一消息不为空;确定未在所述设定时间范围内收到区块的提议的节点接收到的所述第一消息为空。3.根据权利要求1所述的方法,其特征在于,所述根据所述第一消息广播第二消息来进行第二轮投票,包括:接收到不为空的所述第一消息的节点的数量与全部节点的数量比值大于第二设定比例阈值,则确定所述第二消息不为空,否则确定所述第二消息为空。4.根据权利要求1所述的方法,其特征在于,所述区块链应用程序将预先构建好的交易请求发送至共识节点,之后还包括:所述共识节点将所述交易请求保存至内存池进行缓存。5.根据权利要求1所述的方法,其特征在于,所述共识节点向所述区块链应用程序发送验证消息,以指示所述区块链应用程序验证所述交易的有效性,之后,还包括:若所述交易有效,则将所述交易缓存至内存池,并广播至各个节点。6.根据权利要求5所述的方法,其特征在...

【专利技术属性】
技术研发人员:方建陈乐旋
申请(专利权)人:续科天下北京科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1