一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

提高PBFT共识可扩展性的方法、装置、计算设备及存储介质与流程

2021-12-04 00:07:00 来源:中国专利 TAG:

提高pbft共识可扩展性的方法、装置、计算设备及存储介质
技术领域
1.本发明涉及区块链共识技术领域,尤其涉及应用于区块链溯源等场景的联盟链中pbft共识算法的可扩展性,即在网络节点扩展下的表现。具体为一种提高pbft共识可扩展性的方法、装置、计算设备及存储介质。


背景技术:

2.当前区块链技术已经应用于商业、金融等不同领域,在溯源等场景发挥重要作用。联盟链由一些机构发起,在实际应用中联盟链主要是pbft算法。相比于传统的公链算法,pbft算法共识各节点由业务的参与方或者监管方组成。该算法不需要挖矿和货币激励,安全性与稳定性由业务相关方保证。因此更适用于实际生产环境。
3.然而,由于可扩展性问题,技术的应用受到限制。尽管与可扩展性相关的因素多种多样,如网络带宽和加密算法,但一致性算法是显著影响问题的关键因素,可确保参与者在分布式环境中保持相同的数据。
4.在区块链的一致性算法中,基于拜占庭容错(bft)的一致性算法得到了广泛的应用。pbft(实用拜占庭容错)是一个流行且具有代表性的例子。在基于bft的一致性算法中,随着参与者数量的增加,参与者之间的网络通信数量呈指数级增长。这是因为基于bft的一致性算法要求所有参与者都参与到每个交易完成的过程中,而这个过程由不同的步骤组成。
5.基于bft的一致性算法的核心三个阶段分别是pre

prepare阶段(预准备阶段),prepare阶段(准备阶段),commit阶段(提交阶段)。图1中的c代表客户端,n0~n3代表编号为0~3的节点,n0是主节点。打叉的n3代表可能是故障节点或者问题节点,这里表现的行为就是对其它节点的请求无响应。节点通信过程中有一次单点全广播和两次全点全广播,当节点的数量越来越多时,通信次数呈指数型增长、共识过程网络消耗较大,容易造成网络拥堵影响请求正确执行。
6.随着节点数的增加,其性能和可扩展性不可避免地降低。这是因为所有参与者都应该加入共识过程,一致性过程完成得越来越慢。
7.在应用中发现pbft算法的缺点也很明显:
8.(1)算法在收到客户端请求之后,需要经过预准备、准备、确认三个阶段才能达成共识。每一个阶段均需要广播全网节点,这将带来巨大的传输消耗。随着节点的增多,这种消耗会迅速的增加。当n个节点达成状态共识时,算法通信复杂度达到o(n2)。有实验得出,在hyperledger fabric平台的测试,当节点数量超过16时,算法的性能会急剧下降。
9.(2)pbft算法里面的主节点选择策略较为简单,当主节点是拜占庭节点时,会发生视图切换,增加视图切换协议的开销,并根据新视图选出新主节点。此操作将带来不小的时间开销,
10.(3)区块链系统中共识节点可以是不稳定的,随时会有节点加入进来,也会有节点退出系统。在节点变化之后,主节点的选择策略以及是否进行视图切换也是需要考虑的问
题。pbft算法没有完善的节点加入和退出机制。节点加入和退出时,整个网络需要重新启动,开销较大。如果系统中的节点更换频率较大,这将大大降低系统的可用性。


技术实现要素:

11.为克服上述现有技术的不足,本发明提供一种提高pbft共识可扩展性的方法、装置、计算设备及存储介质,用于在很多个节点加入系统后,使系统仍然能够提供良好的服务。
12.根据本发明说明书的一方面,提供一种提高pbft共识可扩展性的方法,引入共识协调器,所述方法包括:
13.选择一个主节点来执行基于pbft的一致性算法,所述主节点与共识协调器通信;
14.所述共识协调器从每个节点的交易池收集交易,根据收集交易的相等性对交易进行分类,并决定是否执行一致性算法;其中,
15.当所有交易都相等时,所述共识协调器请求主节点执行块生成;
16.当某些交易不相等时,所述共识协调器将交易分为普通交易和故障交易,并请求主节点仅对故障交易执行基于pbft的一致性算法,生成约定交易;主节点将共识后的交易通知给共识协调器;共识协调器按时间顺序对所有普通交易和约定交易进行打包,并请求所有节点对打包的交易执行块生成。
17.上述技术方案中,通过引入共识协调器,并对交易条件进行分类来执行基于pbft的一致性算法;交易分为相同交易和不相同交易,不相同交易又被划分为普通交易和故障交易,只对有问题的交易执行一致性算法,在共识未达成的情况下执行经典的pbft算法;这样可以节省因为节点改变视图切换而带来的系统开销,实现可扩展性。
18.作为进一步的技术方案,在所有参与节点中,通过可验证随机函数vrf的方式选择一个主节点;当vrf随机数小于等于之前某个节点node
i
的情况下,这个编号i节点node
i
被选为主节点,以节点签名私钥sk为输入对节点号node
i
和种子seed签名后,生成vrf公钥并通知共识协调器。
19.作为进一步的技术方案,所述共识协调器一旦得到主节点的选择主节点通知,则从每个节点的交易池中收集所有交易。
20.作为进一步的技术方案,所述共识协调器通过使用公布的种子和node
i
生成一个随机数random来检查选定的主节点的有效性;如果生成的随机数等于从主节点接收到的node
i
,则共识协调器请求所有节点发送前一个时间time
p
到当前时间time
c
之间每个节点的交易池中累积的所有交易;如果生成的随机数不等于从主节点接收到的node
i
,则共识协调器终止本轮所有协调步骤,等待下一个空闲状态。
21.根据本发明说明书的一方面,提供了一种提高pbft共识可扩展性的装置,包括:
22.选择模块,用于从所有区块链节点中选择一个主节点来执行基于bft的一致性算法,所述主节点与共识协调器通信;
23.所述共识协调器,用于从每个节点的交易池收集交易,根据收集交易的相等性对交易进行分类,并决定是否执行一致性算法;其中,
24.当所有交易都相等时,所述共识协调器请求主节点执行块生成;
25.当某些交易不相等时,所述共识协调器将交易分为普通交易和故障交易,并请求
主节点仅对故障交易执行基于pbft的一致性算法,生成约定交易;主节点将共识后的交易通知给共识协调器;共识协调器按时间顺序对所有普通交易和约定交易进行打包,并请求所有节点对打包的交易执行块生成。
26.上述技术方案中,通过引入共识协调器,在对所有节点的交易进行等价分类后,控制基于pbft的一致性算法的条件执行;该技术方案要检查交易的相等性,对故障交易执行共识算法,虽然pbft的共识所用时间有所增加,但在区块链节点数增加的情况下,总运行时延的增速相对于传统pbft方式得到极大减缓。
27.作为进一步的技术方案,所述选择模块,还用于在所有参与节点中,通过可验证随机函数vrf的方式选择一个主节点;当vrf随机数小于等于之前某个节点node
i
的情况下,这个编号i节点node
i
被选为主节点,以节点签名私钥sk为输入对节点号node
i
和种子seed签名后,生成vrf公钥并通知共识协调器。
28.作为进一步的技术方案,所述共识协调器进一步用于,按时间顺序对所有公共交易和约定交易进行排序,并请求主节点生成包含所有已处理交易的新块。
29.根据本发明说明书的一方面,提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述方法。
30.根据本发明说明书的一方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行所述方法的计算机程序。
31.与现有技术相比,本发明的有益效果在于:
32.(1)本发明提供一种方法,用于改善pbft一致性算法的可扩展性,即在节点增加情况下,通过交易分类执行有条件的pbft一致性算法,而不仅仅依赖于使用pbft。相对于传统方式中随着节点的增加,pbft中的所有节点算法都参与协商过程且通信次数增加,所有交易都执行协商一致程序,导致pbft运行时间增加。本发明检查交易的相等性,仅对故障交易执行共识算法,虽然引入了额外的阶段,但在区块链节点数增加的情况下,总运行时间的增加没有单一pbft方式急剧增加。
33.(2)本发明引入可验证随机函数技术(vrf),使得每个共识节点被选中后仅自己知道,但又可提供证明供其他节点验证。在主节点选举的过程中,网络中每个节点只知晓自己是否被选中而无法知晓其他节点谁被选中。vrf技术的引入使得选举过程具有了不可预测性和不可操纵性,只有选举结束后,网络中的其他节点才能知晓被选中的节点,防止了选举过程被操控,选举过程更加公平、安全。
34.(3)本发明提供一种系统,通过引入共识协调器,在对所有节点的交易进行等价分类后,控制基于pbft的一致性算法的条件执行;该系统在节点变化之后,在共识未达成的情况下切换为经典的pbft算法,使系统能够根据节点实际情况,选择合适的交易参与共识,实现了共识算法的可配置性。
附图说明
35.图1为pbft协议示意图。
36.图2为根据本发明实施例的提高pbft共识可扩展性的方法流程图。
37.图3为根据本发明实施例的共识协调模块与pbft模块的工作示意图。
具体实施方式
38.以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述发实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
39.本技术实施例中所称的节点,可以理解为响应外界特定触发条件,并按一定规则做状态转换的抽象机器,可以是手机、平板电脑、掌上电脑、个人pc电脑等可以按照应用软件且能够联网的设备。
40.如图2所示,本说明书提供一种提高pbft共识可扩展性的方法,引入共识协调器,所述方法包括:
41.步骤1,在所有参与节点中选择主节点。
42.所选的主节点起着与共识协调器交互的作用。在所有参与节点中通过可验证随机函数(vrf)的方式选举一个主节点。选举步骤在每个t规则时间内运行。选举主节点从一个种子开始,这个种子是一个前一个区块的哈希值。因为在前一轮中已经达成一致,前一个区块的哈希值在所有节点中相同。
43.每个节点都拥有一个私钥sk,而它的验证公钥vk是公开的。vrf随机数小于等于之前某个节点node
i
的情况下,这个编号i节点node
i
被选为主节点,以节点签名私钥sk为输入对节点号node
i
和种子seed签名后,生成vrf公钥并通知共识协调器。
44.步骤2,共识协调器收集每个节点的交易池中存在的所有交易。
45.共识协调器一旦得到主节点的选举主节点通知,它从每个节点的交易池中收集所有交易。共识协调器通过使用公布的种子和node
i
生成一个随机数random来检查选定的主节点的有效性。如果生成的随机数等于从主节点接收到的node
i
,则共识协调器请求所有节点发送前一个时间time
p
到当前时间time
c
之间每个节点的交易池中累积的所有交易。当生成的随机数不等于从主节点接收到的node
i
,则共识协调器终止本轮所有协调步骤,等待下一个空闲状态。
46.步骤3,共识协调器检查每个节点收集的交易是否与其他节点的所有交易相同。
47.这一步根据每个根据节点收集到的交易分两种情况执行pbft的共识算法。首先,共识协调器检查从每个节点收集的交易是否与来自其他节点的所有交易相同。当所有交易相等时,执行处理相等交易步骤,然后终止第三步。当所有交易不相同时,首先将交易分为普通交易和故障交易。对于故障交易,共识协调器请求主节点执行一致性算法并生成约定交易。最后,共识协调器按时间顺序打包普通交易和约定交易,并请求所有节点的控制器对打包的交易执行块生成。详细过程如下:
48.1.来自每个节点的交易与其他节点相等
49.如果来自每个节点的交易与其他节点的所有交易都相等,则共识协调器执行生成此步骤。为了检查交易的相等性,首先将来自每个节点的一组交易转换为哈希函数,然后比较它们的相等性。如果所有交易都相同,它们的哈希值必然相同。
50.如果所有交易都相同,则共识协调器请求主节点nodeprime确认交易txs,主节点响应共识协调器交易的确认请求。
51.当主节点认可所有节点的交易相等时,共识协调器请求区块链网络的所有节点生
成一个新块。所有节点接收请求并将请求委托给pbft共识模块以生成新块。所有节点的time
p
都使用当前time
c
更新,用于设定下一轮的开始时间段。如果主节点没有确认交易,则本轮共识终止,time
p
保持前一轮的开始时间段。
52.2.来自每个节点的交易与其他节点不相等
53.(1)交易分类:在这一步中,共识协调器将来自每个节点中的所有交易分为普通交易和故障交易,分类输出存储在列表list
comm
和list
tr

54.(2)执行共识算法:共识协调器请求主节点仅对故障交易执行共识算法,我们将其中达成一致(获得同意交易)的列表list
agg
称为约定交易。因为某些交易在共识算法中无法达成,故障交易列表list
tr
中的所有交易都不在list
agg
中。
55.(3)所有交易进行排序:在这一步共识协调器根据普通交易列表list
comm
和约定交易列表list
agg
,将它们打包并按时间排序为sortedlist。然后,共识协调器请求主节点确认打包的交易sortedlist。如果主节点身份合法且交易被确认,共识协调器请求所有节点的控制器对打包的交易sortedlist执行区块生成,生成一个新块后所有节点的time
p
更新为当前时间time
c

56.步骤4,所有节点对打包的交易执行块生成。
57.这一步是生成区块链平台的新块,共识协调器不会干预这最后一步。在块生成之前,主节点要连同凭证(vrf proof)一起对外广播,其他节点通过凭证(vrf proof)计算才能确定其身份合法性。这可以降低多个共识节点合谋作恶的可能性,提升系统的安全性。如果主节点身份合法且交易被确认,所有节点都会创建一个新块,其中包含指定交易和前一个块的哈希值。
58.用于请求pbft模块生成新块和访问交易池的控制器是为区块链平台开发的,此方法可以应用于各种基于bft的共识算法。
59.本说明书还提供一种提高pbft共识可扩展性的装置,通过引入共识协调器,在对所有节点的交易进行等价分类后,控制基于pbft的一致性算法的条件执行。
60.在一些实施例中,共识协调模块与传统pbft模块的工作图如图3所示。
61.图3右部是pbft模块,表示传统的pbft算法。它由一个控制共识过程的主节点和其他类似于bft的区块链平台的通用节点组成。每个节点都有bft模块控制协商过程,生成新的区块和交易池来维护未确认的交易。pbft模块定期访问交易池中的交易,并执行基于pbft的一致性算法。一旦所有的节点都达成了交易的共识,pbft模块在累积的交易达成一致后产生一个新的块。
62.图3左部是共识协调模块。在该模块中设计了共识协调器,它基于pbft的一致性算法,根据交易的等价性控制每个节点按pbft的一致性算法条件执行。
63.在区块链溯源的场景下,共识节点是没有主观恶意的动机。通常情况只有网络出现宕机,或者通信中断的情况下才会出现拜占庭节点,而这种情况发生的概率是极低的,因此并不需要每次都要进行三阶段的广播来达成共识。
64.在一些实施例中,核心思想是引入共识协调器,在对所有节点的交易进行等价分类后,控制基于pbft的一致性算法的条件执行。交易分为相同交易和不相同交易。此外,不相同交易又被划分为普通交易和故障交易。在此基础上,只对有问题的交易执行一致性算法,在共识未达成的情况下执行经典的pbft算法。这样可以节省因为节点改变视图切换而
带来的系统开销。这种基于pbft的一致性算法可以实现可扩展性。
65.在一些实施例中,首先,在所有区块链节点中选择一个主节点来执行基于bft的一致性算法,并与共识协调器通信。然后,共识协调器从每个节点的交易池收集交易。在第三步中,协调器根据收集交易的相等性对交易进行分类,并决定执行一致性算法与否。在所有交易都相等的情况下,协调器让主节点执行块生成而不执行一致性算法,这是区块链网络中同步完成的。当某些交易不相等时,协调器将交易分为普通交易和故障交易,并请求主节点仅对故障交易执行基于bft的一致性算法。主节点将共识后的交易通知给协调器。最后,协调器按时间顺序对所有普通交易和约定交易进行排序,并请求主节点执行共识算法,生成新块。
66.本实施例先检查交易的相等性,仅对故障交易执行共识算法,虽然pbft的共识所用时间有所增加,但在区块链节点数增加的情况下,总运行时间的增速相对于传统pbft方式而言得到极大减缓。
67.本说明书还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述方法。
68.本说明书还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时实现所述方法的步骤。
69.处理器可以按任何适当的方式实现,例如,处理器可以采取例如微处理器以及存储可由该微处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器的形式,处理器的例子包括但不限于以下微控制器:intel e

2274g、intel i7

1060g7、intel i5

1035g4、intel m5

6y54、amd epyc 7251,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现处理器以外,完全可以通过将方法步骤进行逻辑编程来使得处理器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微制器等的形式来实现相同功能。因此这种处理器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
70.上述实施例阐明的平台、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
71.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
72.本发明是参照根据本发明实施例的方法、平台(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
73.本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
74.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
75.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
76.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
77.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
78.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
79.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献