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

一种大规模节点高效共识方法与流程

2022-08-21 20:11:13 来源:中国专利 TAG:


1.本发明涉及信息安全技术领域,具体涉及一种大规模节点高效共识方法。


背景技术:

2.区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识算法。共识算法是区块链技术的重要组件,解决了节点之间的相互信任问题,在维护区块链的安全和效率方面起着至关重要的作用,使用正确的算法可显著提高区块链系统的性能。尽管区块链技术被广泛研究和开发,它始终没能得到大规模应用。一个主要的原因是,大多数区块链系统不能提供高吞吐率以及高可伸缩性来满足大规模节点间的数据处理需求。因此,大规模节点高效共识方法就是专门解决此类问题的。
3.根据节点准入机制的不同,传统的共识算法包括私有链共识、公有链共识和联盟链共识,其中私有链的共识算法运用的是传统分布式系统里的共识算法,主要代表算法有paxos、raft等,这类算法不会考虑拜占庭容错问题,一般只考虑因为节点自身以及网络原因导致的故障(如节点宕机、网络故障等因素)而不考虑集群中会有恶意节点的情况;公有链共识算法属于去中心化程度最高的,主要代表算法有pow、pos等,这类算法对外开放,可以抵抗1/2算力的恶意攻击,具有较强的可扩展性,但是挖矿计算带来的开销较大,并且算法性能较差;联盟链共识算法对节点进行了准入限制,主要代表算法有pbft和pbft改进算法等,具有低能耗和高性能等特点,可以提供1/3的容错能力。但是,pbft算法为了达成数据的一致性采用了多阶段交互的方式,而在一轮共识的过程整个网络达到o(n2)的通信复杂度(n为参与共识的节点数量)。现有pbft消息扩散协议的可扩展性较差,不适用于大规模节点间的共识。因此,如何在大规模节点间高效的达成共识是一个值得解决的问题。


技术实现要素:

4.针对现有技术中存在的问题,本发明提一种大规模节点高效共识方法,能够通过分组的方式实现网络规模的横向扩展,并且当分组数量达到上限后,通过改进现有pbft共识算法在分组内进行纵向扩展。该算法将pbft算法扩展为多层以降低单层共识所需通信开销,并在每轮pbft共识中引入聚合签名进一步降低所需通信次数,使大规模节点间的共识安全且高效。
5.为了实现上述目的,本发明采用以下的技术方案:
6.一种大规模节点高效共识方法,包括以下步骤:
7.步骤1.将全网节点划分成多个分组,所有的区块数据被划分到各个分组,每组只处理和存储与本分组相关联的区块信息;
8.步骤2.将每个分组的节点划分为上下两层结构,上层网络组成一个分区,下层网络包含多个独立的分区;
9.步骤3.在上下两层网络的各个分区内,计算和分发聚合签名所需的密钥信息;
10.步骤4.在每个分组内,上层网络主节点接收区块数据,并利用秘钥信息上层网络
节点先进行共识的预准备和准备过程,然后下层网络节点依次进行预准备、准备和确认过程,最后上层节点完成确认过程,结束两层共识。
11.进一步的,所述步骤2的具体实现过程如下:
12.将每个分组的节点划分为上下两层结构,上层网络组成一个分区,其中1个主节点,p个副本节点,副本节点中有m个为下层网络的主节点,其中p≥m,且p≥3;下层网络包含m个分区,每个分区包含1个主节点,n个副本节点,下层网络的主节点同时为上层网络的副本节点,其中n≥3。
13.进一步的,所述步骤3的具体实现过程如下:
14.设定上层网络节点总数为3f1 1,f1≥1,下层网络每个分区的节点数为3f2 1,f2≥1,然后在各层网络中进行初始化设置,初始化过程为:上层网络和下层分区网络分别构造(2f1 1,3f1 1)和(2f1 1,3f2 1)多重签名,在上层网络和下层网络的每个分区内,用分区内所有节点的公钥计算聚合公钥,每个节点用自己的私钥计算成员密钥,并在各分区内分享聚合公钥和成员密钥。
15.进一步的,所述步骤4的具体实现过程如下:
16.步骤401,上层预准备阶段;在进入新一轮共识之前,上层主节点统计上一轮本层共识确认阶段的确认信息,如果在超时之前,上层主节点收集到不少于2f1 1条确认信息,则进入新一轮共识;如果在超时时间内未收集到2f1 1条确认信息,则重发已完成的共识结果给本层其余的副本节点,再进行新一轮的共识流程;
17.当开始新一轮共识后,上层主节点收集交易内存池中的交易,将交易打包成区块并广播给本层所有副本节点;广播消息为《《pre-prepare,v,h,d》,block》,其中pre-prepare标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为上层主节点对区块block的签名,block为整个区块内容;
18.步骤402,上层准备阶段;上层准备过程分为两个阶段:
19.阶段一:上层副本节点收到本层主节点发送过来的广播消息后,首先对消息进行验证,检查签名、区块高度以及视图编号,验证完毕后对其中的所有交易进行验证,验证无误后发送一条《prepare1,v,h,d,i》给本层主节点,其中prepare1标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为上层副本节点对区块block的签名,i为副本节点编号;
20.阶段二:上层主节点一直监听本层副本节点发送过来的prepare1信息,上层主节点对每个prepare1信息进行验证,验证通过则收集起来,收集到不少于2f1 1个签名后,分别验证每个签名,并将验证通过的2f1 1个不同节点的签名聚合起来,形成对区块的聚合签名信息,广播一条《prepare2,v,h,aggrsignature,node》消息给所有本层副本节点,其中prepare2标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,aggrsignature为上层主节点对区块block的聚合签名,node为参与聚合签名的所有节点的id列表,上层主节点收集的签名包括自己的签名;
21.步骤403,下层预准备阶段;当上层副本节点接收到上层主节点的prepare2消息后,根据上层主节点提供的node信息,生成所有参与聚合签名节点的合成公钥,并将本地存储的区块信息作为签名验证算法的输入,进行聚合签名的验证过程,当聚合签名、视图编号和区块高度验证不通过或验证超时,上层副本节点向本层所有节点广播视图切换信息,当
本层副本节点接收到不少于2f1 1个视图切换请求后,重新进行本层主节点选举;如果在规定时间内验证通过,上层副本节点等下层共识完成后进入上层确认阶段,上层副本节点中同时担任下层分区主节点的节点向下层分区副本节点广播一条《《pre-prepare,v,h,d,d’》,block》信息,其中pre-prepare标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为分区主节点对区块block的签名,d’为上层预准备阶段上层主节点对区块block的签名,block为整个区块内容;
22.步骤404,下层准备阶段;下层准备过程分为两个阶段:
23.阶段一:下层副本节点收到本层主节点发送过来的pre-prepare消息后,首先对消息进行验证,检查签名、区块高度以及视图编号,验证完毕后对其中的所有交易进行验证,验证无误后发送一条《prepare1,v,h,d,i》给本层主节点,其中prepare1标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为下层副本节点对区块block的签名,i为副本节点编号;
24.阶段二:下层分区主节点一直监听本层副本节点发送过来的prepare1信息,下层分区主节点对每个prepare1信息进行验证,验证通过则收集起来,下层分区主节点收集到不少于2f2 1个签名后,分别验证每个签名,并将验证通过的2f2 1个不同节点的签名聚合起来,形成对区块的聚合签名信息,广播一条《prepare2,v,h,aggrsignature,node》消息给所有本层副本节点,其中prepare2标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,aggrsignature为下层分区主节点对区块block的聚合签名,node为参与聚合签名的所有节点的id列表,下层分区主节点收集的签名包括自己的签名;
25.步骤405,下层确认阶段;当下层副本节点接收到下层分区主节点的prepare2消息后,根据提供的node信息,生成所有参与聚合签名节点的合成公钥,并将本地存储的区块信息作为签名验证算法的输入,进行聚合签名的验证过程,当聚合签名、视图编号和区块高度验证不通过或验证超时,下层副本节点向本层所有节点广播视图切换信息,当本层副本节点接收到不少于2f2 1个视图切换请求后,重新选举本层主节点;如果在规定时间内验证通过,下层副本节点将本地存储的区块链接到区块链的链尾完成同步,并向本层主节点发送一条《commit,v,h,d,i》信息作为回复,其中commit标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为副本节点对共识确认消息摘要的签名,i为副本节点编号;
26.步骤406,上层确认阶段;当进入上层确认阶段时,只担任上层副本节点的节点向上层主节点发送一条《commit,v,h,d,i》信息作为回复,同时担任上层副本节点和下层分区主节点的节点先统计本分区内副本节点发送的commit消息,如果在超时时间内未收集到2f2 1条确认信息,则重发已完成的共识结果给本分区的副本节点,重新进行本层共识;如果在超时之前,下层分区主节点收集到超过2f2 1条确认信息,则表示本分区共识已完成;此时,下层分区主节点向上层主节点发送一条《commit,v,h,d,i》信息作为回复,其中commit标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为上层副本节点对共识确认消息摘要的签名,i为下层分区主节点编号。
27.本发明相比现有技术具有如下优点:
28.本发明采用一种分层分区的共识架构,将大规模节点划分到多个分组,每分组并行地处理不相交的数据。在每个分组内运行改进的pbft共识算法,将pbft算法扩展为多层
以降低单层共识所需通信开销,并在每轮pbft共识中引入聚合签名进一步降低所需通信次数。相较于传统的pbft共识算法,能够显著降低通信开销,提升单个分组的节点容量,使共识安全且高效;相较于基于聚合签名的pbft共识算法,能够通过分层分区的方式减少参与多重聚合签名的节点数量,减少聚合签名的验证时间,提升共识效率。
附图说明
29.图1是本发明一种大规模节点高效共识方法的流程示意图。
30.图2是本发明一种大规模节点高效共识方法的网络结构图。
31.图3是本发明一种大规模节点高效共识方法的算法示意图。
32.图4是本发明的一种实施方式的实施例结构图。
具体实施方式
33.为了使本发明的目的及优点更加清楚明白,下面结合附图1、附图2、附图3、附图4和具体实施例对本发明做进一步的说明。应当理解,以下文字仅仅用以描述本发明的一种或几种具体实施方式,并不对本发明具体请求的保护范围进行严格限定。
34.一种大规模节点高效共识方法实施例,该方法的实施通过发送单元、接收单元和共识单元完成;实施例结构图如图4所示。
35.发送单元是信息的发送方,产生需要在共识单元间处理和存储的信息;
36.共识单元是运行共识机制的区块链节点,确保发送信息的明确排序,并保证各共识单元间存储账本的完整性和一致性;
37.接收单元是信息的接收方,从共识单元访问区块链账本数据,并提取所需信息。
38.进一步的,如图1所示,具体实施过程包括以下步骤:
39.步骤1.将共识单元划分成多个分组,每分组只处理和存储与本分组相关联的区块信息;
40.步骤2.将每个分组内的共识单元划分为上下两层结构,上层共网络组成一个分区,下层网络包含多个独立的分区;如图2所示,具体实现过程如下:
41.将每个分组的节点划分为上下两层结构,上层网络组成一个分区,其中1个主节点,p个副本节点,副本节点中有m个为下层网络的主节点,其中p≥m,且p≥3;下层网络包含m个分区,每个分区包含1个主节点,n个副本节点,下层网络的主节点同时为上层网络的副本节点,其中n≥3。
42.步骤3.在上下两层网络的各个分区内,计算和分发聚合签名所需的密钥信息;具体实现过程如下:
43.设定上层网络节点总数为3f1 1,f1≥1,下层网络每个分区的节点数为3f2 1,f2≥1,然后在各层网络中进行初始化设置,初始化过程为:上层网络和下层分区网络分别构造(2f1 1,3f1 1)和(2f2 1,3f2 1)多重签名,在上层网络和下层网络的每个分区内,用分区内所有节点的公钥计算聚合公钥,每个节点用自己的私钥计算成员密钥,并在各分区内分享聚合公钥和成员密钥。
44.步骤4.发送单元产生要发送的业务信息,并将信息封装成区块链网络能处理的交易格式,发送交易到附近的共识单元,共识单元根据交易标识将其广播到特定的分组;
45.步骤5.在每个分组内,上层共识单元先进行共识的预准备和准备过程,然后下层共识单元依次进行预准备、准备和确认过程,最后上层共识单元完成确认过程,结束两层共识,并存储区块信息到本地区块链;如图3所示,具体实现过程如下:
46.步骤401,上层预准备阶段;在进入新一轮共识之前,上层主节点统计上一轮本层共识确认阶段的确认信息,如果在超时之前,上层主节点收集到不少于2f1 1条确认信息,则进入新一轮共识;如果在超时时间内未收集到2f1 1条确认信息,则重发已完成的共识结果给本层其余的副本节点,再进行新一轮的共识流程;
47.当开始新一轮共识后,上层主节点收集交易内存池中的交易,将交易打包成区块并广播给本层所有副本节点;广播消息为《《pre-prepare,v,h,d》,block》,其中pre-prepare标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为上层主节点对区块block的签名,block为整个区块内容;
48.步骤402,上层准备阶段;上层准备过程分为两个阶段:
49.阶段一:上层副本节点收到本层主节点发送过来的广播消息后,首先对消息进行验证,检查签名、区块高度以及视图编号,验证完毕后对其中的所有交易进行验证,验证无误后发送一条《prepare1,v,h,d,i》给本层主节点,其中prepare1标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为上层副本节点对区块block的签名,i为副本节点编号;
50.阶段二:上层主节点一直监听本层副本节点发送过来的prepare1信息,上层主节点对每个prepare1信息进行验证,验证通过则收集起来,收集到不少于2f1 1个签名后,分别验证每个签名,并将验证通过的2f1 1个不同节点的签名聚合起来,形成对区块的聚合签名信息,广播一条《prepare2,v,h,aggrsignature,node》消息给所有本层副本节点,其中prepare2标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,aggrsignature为上层主节点对区块block的聚合签名,node为参与聚合签名的所有节点的id列表,上层主节点收集的签名包括自己的签名;
51.步骤403,下层预准备阶段;当上层副本节点接收到上层主节点的prepare2消息后,根据上层主节点提供的node信息,生成所有参与聚合签名节点的合成公钥,并将本地存储的区块信息作为签名验证算法的输入,进行聚合签名的验证过程,当聚合签名、视图编号和区块高度验证不通过或验证超时,上层副本节点向本层所有节点广播视图切换信息,当本层副本节点接收到不少于2f1 1个视图切换请求后,重新进行本层主节点选举;如果在规定时间内验证通过,上层副本节点等下层共识完成后进入上层确认阶段,上层副本节点中同时担任下层分区主节点的节点向下层分区副本节点广播一条《《pre-prepare,v,h,d,d’》,block》信息,其中pre-prepare标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为分区主节点对区块block的签名,d’为上层预准备阶段上层主节点对区块block的签名,block为整个区块内容;
52.步骤404,下层准备阶段;下层准备过程分为两个阶段:
53.阶段一:下层副本节点收到本层主节点发送过来的pre-prepare消息后,首先对消息进行验证,检查签名、区块高度以及视图编号,验证完毕后对其中的所有交易进行验证,验证无误后发送一条《prepare1,v,h,d,i》给本层主节点,其中prepare1标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为下层副本节点对区块block
的签名,i为副本节点编号;
54.阶段二:下层分区主节点一直监听本层副本节点发送过来的prepare1信息,下层分区主节点对每个prepare1信息进行验证,验证通过则收集起来,下层分区主节点收集到不少于2f2 1个签名后,分别验证每个签名,并将验证通过的2f2 1个不同节点的签名聚合起来,形成对区块的聚合签名信息,广播一条《prepare2,v,h,aggrsignature,node》消息给所有本层副本节点,其中prepare2标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,aggrsignature为下层分区主节点对区块block的聚合签名,node为参与聚合签名的所有节点的id列表,下层分区主节点收集的签名包括自己的签名;
55.步骤405,下层确认阶段;当下层副本节点接收到下层分区主节点的prepare2消息后,根据提供的node信息,生成所有参与聚合签名节点的合成公钥,并将本地存储的区块信息作为签名验证算法的输入,进行聚合签名的验证过程,当聚合签名、视图编号和区块高度验证不通过或验证超时,下层副本节点向本层所有节点广播视图切换信息,当本层副本节点接收到不少于2f2 1个视图切换请求后,重新选举本层主节点;如果在规定时间内验证通过,下层副本节点将本地存储的区块链接到区块链的链尾完成同步,并向本层主节点发送一条《commit,v,h,d,i》信息作为回复,其中commit标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为副本节点对共识确认消息摘要的签名,i为副本节点编号;
56.步骤406,上层确认阶段;当进入上层确认阶段时,只担任上层副本节点的节点向上层主节点发送一条《commit,v,h,d,i》信息作为回复,同时担任上层副本节点和下层分区主节点的节点先统计本分区内副本节点发送的commit消息,如果在超时时间内未收集到2f2 1条确认信息,则重发已完成的共识结果给本分区的副本节点,重新进行本层共识;如果在超时之前,下层分区主节点收集到超过2f2 1条确认信息,则表示本分区共识已完成;此时,下层分区主节点向上层主节点发送一条《commit,v,h,d,i》信息作为回复,其中commit标识当前消息所处的协议阶段,v标识当前消息所在的视图编号,h为区块高度,d为上层副本节点对共识确认消息摘要的签名,i为下层分区主节点编号。
57.步骤6.接收单元向附近的共识单元请求区块信息,并从区块中提取所需的业务信息。
再多了解一些

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

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

相关文献