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

区块链共识方法及计算机可读存储介质与流程

2022-05-21 10:43:24 来源:中国专利 TAG:


1.本发明涉及网络信息技术,特别是涉及一种区块链共识方法及计算机可读存储介质。


背景技术:

2.区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点,其具有广阔的应用前景,逐渐成为新一代信息核心技术。
3.raft是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。传统的raft共识算法在运行过程中主要进行两个活动,分别为选主与复制日志。
4.选主过程通过心跳计时并进行网络通信投票的方式进行区块链网络中共识节点的选主。传统的raft共识算法中要求网络中大部分的节点是诚实的且领导者节点一定为诚实的才可进行正常的共识活动,否者共识结果无法保障。
5.在基于raft共识算法的区块链对等网络中,身份用作抽象,使得远程实体可以知道身份而不必知道身份与本地实体的对应关系,默认情况下,通常假定每个不同的标识对应于不同的本地实体。而在现有对等网络中,许多身份可以对应于相同的本地实体,攻击者可以向对等网络呈现多个身份,以便出现并充当多个不同的节点,以此能够获得对网络的不成比例的控制水平,对raft共识算法中的投票结果进行造假,降低算法的安全边界。
6.现有raft共识算法可以实现选主,但无法保障选出的共识节点满足是随机的、无法被预测。如果缺乏稳定可靠的领导者节点,则raft共识算法将无法工作。


技术实现要素:

7.本发明的一个目的是要提供一种提高raft共识算法的安全性。
8.本发明的另一个目的是要提供一种提供随机性更好的选主方法,提高共识效率。
9.根据本发明的一个方面,提供了一种区块链共识方法,其包括:
10.启动区块链的选主流程,区块链网络内的每个节点预先配置有给各自的私钥片段;
11.每个节点利用自己的私钥片段对区块链上一区块的哈希值进行签名得到签名片段;
12.在区块链网络上对签名片段进行分发;
13.区块链网络上的节点在得到设定数量的签名片段后,利用签名片段合成完整签名;
14.使用配对函数利用完整签名计算出随机数;
15.根据随机数确定出对应的节点,将节点作为领导者节点。
16.可选地,每个所述节点利用自己的私钥片段对区块链上一区块的哈希值进行签名得到签名片段的步骤包括:
17.每个节点分别使用bls算法对区块链上一区块求曲线哈希值;
18.将自己的私钥片段与曲线哈希值相乘得到签名片段。
19.可选地,在将自己的私钥片段与曲线哈希相乘得到签名片段的步骤之后还包括:
20.使用压缩的序列化格式保存签名片段,以使用保存后的格式对签名片段进行分发。
21.可选地,在利用签名片段合成完整签名的步骤之后包括:
22.使用公钥对完整签名进行验证,
23.若验证有错,则广播错误。
24.可选地,使用配对函数利用完整签名计算出随机数的步骤包括:
25.利用bls算法的配对函数在对应的曲线上查找曲线哈希值的对应点,将对应点的y坐标值作为所述随机数。
26.可选地,配对函数为双线性映射e函数,即e(p,h(m))=e(g,s),其中p为公钥,且p=pk*g;h(m)为曲线哈希值;s=pk*h(m);pk为完整签名;g为对应点;对应的曲线为椭圆曲线;
27.利用bls算法的配对函数在对应的曲线上查找所述曲线哈希值的对应点的步骤包括:
28.通过e(p,h(m))=e(g,s)从椭圆曲线中计算得到对称的两个点,将y坐标值的点作为对应点。
29.可选地,根据随机数确定出对应的节点的步骤包括:
30.获取区块链上的节点数量,将节点按照节点数量进行逐一编号;
31.将随机数进行归一化处理,将随机数对应至节点数量范围内的数值;
32.对归一化处理得到的数值进行向下取整计算,得到的整数即为对应的节点的序号。
33.可选地,启动区块链的选主流程的步骤:
34.区块链网络内的节点接收选举领导者的请求;
35.使用选主计时器进行倒计时,选主计时器的计时时间为预设时间范围内随机设置;
36.选主计时器计时结束的节点开始执行利用自己的私钥片段对区块链上一区块的哈希值进行签名得到签名片段的步骤。
37.可选地,在将节点作为领导者节点的步骤之后还包括:由领导者节点处理客户端请求,并维持区块链网络节点的账本状态。
38.特别地,根据本发明的另一个方面,还提供了一种计算机可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的区块链共识方法。
39.本发明的区块链共识方法,每个节点利用自己的私钥片段对区块链上一区块的哈希值进行签名得到签名片段;在区块链网络上对签名片段进行分发;区块链网络上的节点在得到设定数量的签名片段后,利用签名片段合成完整签名;使用配对函数利用完整签名计算出随机数;根据随机数确定出对应的节点,将节点作为领导者节点,生成的随机数随机性好,难于预测。从而选举出的共识节点满足是随机、无法被预测的要求,解决了raft对投票造假的问题,提高了算法的安全性。
40.进一步地,本发明的区块链共识方法,产生的随机数本身就是通过使用bls算法实现阈值签名的共识结果,无法被单个节点篡改。利用区块链上轮区块的哈希值作为签名信息,从而可以持续安全地产生随机数,保证节点签名的安全性和有效性。
41.更进一步地,本发明的区块链共识方法,使用bls随机数算法来实现raft的领导者节点随机选取,可以大大提高选取领导者节点的效率,每次共识只需要使用聚合私钥进行一次计算就可以得到一个由聚合公钥可以验证的随机数。当区块链中的节点数量出现变化时,重新获取一次聚合私钥以及改变归一化时的节点编号即可实现更新。
42.更进一步地,本发明的区块链共识方法,可适用于大规模数据上链的商业场景,如物联网、供应链、物流等,可有效防御女巫攻击等网络攻击,同时,可以进行快速共识及区块同步。
43.根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
44.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
45.图1是根据本发明一个实施例的区块链共识方法的示意图;以及
46.图2是根据本发明一个实施例的机器可读存储介质的示意框图。
具体实施方式
47.在raft共识算法中,区块链网络内的每个节点包括三种状态:跟随者(follower)、候选者(candidate)、领导者(leader),状态之间是互相转换的。在收到选主请求或者领导者的心跳(heartbeat)后,节点的选主计时器(election timeout)进行倒计时,倒计时结束的节点状态转换为候选者,然后向其他节点发送候选请求(requestvote),其他节点如果返回成功,则候选者状态变更为领导者,并在每个一小段时间后,就给所有的跟随者发送一个心跳以保持所有节点的状态,跟随者收到领导者的心跳后后重设选主计时器。对于传统的raft共识算法,超过一半的跟随者投支持票并返回成功,则候选者成为领导者。如果候选者在晋升为领导者之前收到了其他领导者的心跳包,那么就会退回为跟随者状态。
48.上述三种节点的具体功能包括:领导者作为客户端的接收者,接收客户端发送的日志复制请求,并将日志信息复制到跟随者节点中,维持网络各个节点的账本状态。候选者仅在选主阶段存在,通过选举竞争,成为下一任期的领导者。跟随者作为领导者发送日志复制请求的接收者,与领导者通信,接收账本信息,并确认账本信息的有效性,完成日志信息的提交和存储。正常运行时,只有一个领导者,其余全是跟随者。跟随者是被动的,并不主动提出请求,只是响应领导者和候选者的请求。领导者负责处理所有客户端请求。
49.在选主阶段,现有raft共识算法可能对投票结果进行造假,降低算法的安全边界。本实施例的区块链共识方法在现有的raft共识算法的基础上,进行了安全性改进,结合利用bls(boneh-lynn-shacham)算法,在raft选主阶段完成身份的验证及哈希正确性的验证,实现随机安全的领导者选举。选举得到的领导者节点满足随机、无法预测的要求,保证了领
导者的合法性。
50.图1是根据本发明一个实施例的区块链共识方法的示意图,该区块链共识方法一般性地可以包括:
51.步骤s102,启动区块链的选主流程,区块链网络内的每个节点预先配置有给各自的私钥片段。节点的私钥片段可以通过聚合合成完成的私钥。每个节点只有自身一个私钥片段,需要超过设定数量的私钥片段组合在一起才能形成一个合法的完整的私钥。如果少于设定数量个私钥片段在网络中共享的话,就不会有任何一个节点掌握完整的私钥。选主流程启动过程可以为区块链网络内的节点接收选举领导者的请求;使用选主计时器进行倒计时,选主计时器的计时时间为预设时间范围内随机设置;选主计时器计时结束的节点开始执行利用自己的私钥片段对区块链上一区块的哈希值进行签名得到签名片段的步骤。也即选主计时器计时结束的节点成为候选者节点。
52.在选主阶段,如果出现网络环境不可靠的情况,领导者节点出现宕机的情况,网络其他跟随者节点无法接收领导者节点发送的心跳信息,当心跳计时器倒计时结束后,跟随者节点启动选主计时器,计时器倒计时结束后,发送选主消息,步骤与正常选主过程一致。
53.步骤s104,每个节点利用自己的私钥片段对区块链上一区块的哈希值进行签名得到签名片段。签名的流程可以包括:每个节点分别使用bls算法对区块链上一区块求曲线哈希值;将自己的私钥片段与曲线哈希值相乘得到签名片段。bls算法哈希计算将结果对应到椭圆曲线上一个点,从而得到曲线哈希值。例如可以使用相同的哈希函数,将得到的哈希值作为点的x值。上述签名片段在可以使用压缩的序列化格式进行保存,以使用保存后的格式对签名片段进行分发,从而减少数据量,在一些实施例中只占33字节。压缩的序列化格式可以采用hadoop api提供的sequencefile二进制文件格式,将数据序列化到文件中。由于压缩的序列化格式本身的计算方式本身是本领域技术人员所习知的,在此不做赘述。
54.步骤s106,在区块链网络上对签名片段进行分发。
55.步骤s108,区块链网络上的节点在得到设定数量的签名片段后,利用签名片段合成完整签名。设定的数量可以根据领导者节点所需的选举节点的数量进行设置。合成完整签名也即阈值签名,其本质是m-of-n的签名方式,在知道m个签名的条件下,可以合成唯一一个合法的签名。任意m个签名片段的组合都是同一个可验证的签名。m为设定数量,n为节点总数。其数学原理为利用m个变量的多项式方程在m个条件下可解。如果系统中有n》m个条件,任意m个条件都可以得出一个唯一确定的解。当然,如果小于m个条件就不可解。
56.在利用签名片段合成完整签名的步骤之后还可以使用公钥对完整签名进行验证,若验证有错,则广播错误。公钥与完整的密钥为一组非对称密钥。通过公钥验证,而整个过程中节点并不获得完整的密钥,而且可以得到设定数量的节点的共识,这个过程无法被单个节点篡改。
57.步骤s110,使用配对函数利用完整签名计算出随机数。计算随机数的流程可以包括:利用bls算法的配对函数在对应的曲线上查找曲线哈希值的对应点,将对应点的y坐标值作为所述随机数。
58.配对函数可以为双线性映射e函数,即e(p,h(m))=e(g,s),其中p为公钥,且p=pk*g;h(m)为曲线哈希值;s=pk*h(m);pk为完整签名;g为对应点;对应的曲线为椭圆曲线;
59.那么利用bls算法的配对函数在对应的曲线上查找所述曲线哈希值的对应点的步
骤包括:通过e(p,h(m))=e(g,s)从椭圆曲线中计算得到对称的两个点,将y坐标值的点作为对应点。
60.步骤s112,根据随机数确定出对应的节点,将节点作为领导者节点。根据随机数确定读一个节点的计算流程可以包括:获取区块链上的节点数量,将节点按照节点数量进行逐一编号;将随机数进行归一化处理,将随机数对应至节点数量范围内的数值;对归一化处理得到的数值进行向下取整计算,得到的整数即为对应的节点的序号。
61.在复制日志阶段,若达成raft共识,由领导者节点进行消息的打包及分发。
62.签名片段的分发和组合流程可以包括:
63.每个节点生成一组私钥r0,r1,

,rm-1r=a,b,c,d,

这些私钥是一个m阶多项式的参数
64.每个节点对其他节点x=1,2,

,n生成多个多项式的值fr(x),x可以采用其他节点的编号。生成后在私底下秘密传递给相对应的节点。这样每个节点拥有n个共享私钥,也即用于解方程的条件。上述私钥不能暴露给第三方。
65.每个节点公开公钥信息,并可以验证fr(x)收到的是否正确,如果验证有错,广播错误。如果所有的节点的验证都没有错误,每个节点达成一致,从而可以整合签名。签名的数值就是公开的两个签名片段的数学运算,所有节点都可以验证这个签名的合法性。
66.本实施例的区块链共识方法,每个节点利用自己的私钥片段对区块链上一区块的哈希值进行签名得到签名片段;在区块链网络上对签名片段进行分发;区块链网络上的节点在得到设定数量的签名片段后,利用签名片段合成完整签名;使用配对函数利用完整签名计算出随机数;根据随机数确定出对应的节点,将节点作为领导者节点,生成的随机数随机性好,难于预测。从而选举出的共识节点满足是随机、无法被预测的要求,解决了raft对投票造假的问题,提高了算法的安全性。
67.上述方法随机数本身就是通过使用bls算法实现阈值签名的共识结果,无法被单个节点篡改。利用区块链上轮区块的哈希值作为签名信息,从而可以持续安全地产生随机数,保证节点签名的安全性和有效性。
68.上述公式过程中使用的bls算法由dan boneh、ben lynn以及hovav shacham三人提出,名称由三人姓名首字母组成。本实施例中使用bls算法的具体原理如下:
69.bls的签名采用曲线对的方式可以验证同一曲线上的点对符合乘法交换律,能够把曲线上的两个点p和q映射为一个数,也即e(p,q)映射为一个数,该函数还要有一个重要的特性。即对于未知数x和两个点p、q,无论哪个点乘以x,结果相同,即e(x
×
p,q)=e(p,x
×
q).
70.签名算法得出的结果对应椭圆曲线上的一个点,椭圆曲线有2256个点,一个有效的x坐标,会对应一正一负两个y坐标(因为(x,y)和(x,-y)都是曲线y2=x3 ax b上的点)。
71.配对函数满足e(p,h(m))=e(g,s),其中p为公钥,且p=pk*g;h(m)为曲线哈希值,m为要签名的信息,也即区块链上一区块的哈希值;s=pk*h(m);pk为完整签名;g为对应点;对应的曲线为椭圆曲线。
72.签名过程可以先对上一区块求曲线哈希h(m),再将获取的结果(曲线坐标点)乘以私钥,也即计算s=pk*h(m)。签名结果是一个曲线上的点,用压缩的序列化格式保存,只占33个字节。
73.签名可以使用公钥来验证,也即e(p,h(m))=e(g,s),其数学推理过程为:配对函数的特性使得e(p,h(m))=e(pk*g,h(m))成立。
74.而e(pk*g,h(m))=e(g,pk*h(m)),e(g,pk*h(m))=e(g,s),可推知e(p,h(m))=e(g,s)。
75.合成完整签名,采用阈值签名,其为是m-of-n的签名方式,在知道m个签名的条件下,可以合成唯一一个合法的签名。任意m个签名片段的组合都是同一个可验证的签名。
76.由于每个节点只有一个私钥片段,需要m个私钥片段组合在一起才能形成一个合法的完整的私钥。如果少于m个私钥片段在网络中共享的话,就不会有任何一个节点知道这个完整的私钥。此处m为设定数量。
77.在进行共识时,上一区块的哈希值作为信息m,使用聚合的私钥作为私钥,从而计算出椭圆曲线上的一个随机的点,椭圆曲线上一共2256个点,每个x对应两个y值,分别为正负对称的两个值,这里取y的正值作为随机数的结果,那么y的取值范围为:0-2
255
,对区块链所有节点进行编号,比如区块链当前有60个节点,那么节点编号的取值范围为:0-60。每次随机出来的y值归一化至0-60的范围,并取floor(向下取整计算),从而得出本次raft的领导者节点。
78.随着区块逐渐生成,共识过程中,使用最新的区块计算签名信息,可以持续安全地产生随机数,可以大大提高选取领导者节点的效率,每次共识只需要使用聚合私钥进行一次计算就可以得到一个由聚合公钥可以验证的随机数。当区块链中的节点数量出现变化时,重新获取一次聚合私钥以及改变一下归一化时的节点编号即可。
79.本实施例还提供了一种计算机可读存储介质。图2是根据本发明一个实施例的机器可读存储介质20的示意框图。该机器可读存储介质20上存储有机器可执行程序210,机器可执行程序210被处理器执行时实现上述任一种的区块链共识方法。
80.本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的可读存储介质20包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
81.此外,需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行,某些步骤可以并行或彼此独立地执行。对本领域的普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
82.因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。还需要指出的是,在本发明的装置
和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
83.具备上述可读存储介质20的计算设备可以通过网络互联,其可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(wan))、局域网(lan)或因特网等等,从而可以通过各种网络连接到其他计算设备。
84.至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
再多了解一些

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

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

相关文献