实用拜占庭容错共识方法及装置、可读存储介质与流程

文档序号:24047454发布日期:2021-02-23 19:20阅读:121来源:国知局
实用拜占庭容错共识方法及装置、可读存储介质与流程

[0001]
本发明涉及数据处理技术领域,尤其涉及一种实用拜占庭容错共识方法及装置、可读存储介质。


背景技术:

[0002]
近年来,区块链技术得到迅猛发展,其具有去中心化、中立、开放、集体维护、数据可追溯、安全可信等特点,适合于构建高度安全可靠的系统。区块链技术可以满足消息防篡改的要求,在区块链网络中,数据或者数据特征被共享至网络中的所有节点,所有的节点都拥有整个链上的完整数据,所以单个节点数据的修改并不会影响整个网络共识得到的一致结果。整个网络的共识是通过共识算法实现的,共识机制作为区块链中的关键技术,是区块链系统中的所有参与节点达成一致的策略和方法,决定了区块链能在多个节点中达到一种相对平衡的状态。
[0003]
随着区块链技术发展和不断成熟,应用场景规模的逐渐扩大,传统的实用拜占庭容错(practical byzantine fault tolerance,pbft)算法的可扩展性问题日益凸显。在具有n个共识节点的联盟链系统中,pbft的通信复杂度为o(n^2)。在招投标的联盟链中,存在大量的节点,如供应商、招标人、项目单位、代理机构、(外部)机构等。随着节点数量的增加,网络中交换和处理的消息数量急剧增加。巨大的网络开销与计算开销将导致事务确认延迟显著增加,吞吐量明显降低。因此,传统的pbft算法只适用于小规模的局域网,而在大规模的广域网环境下,其可扩展性瓶颈对许可链系统的性能带来了严重的影响。


技术实现要素:

[0004]
本发明解决的技术问题是大规模的广域网环境下,现有的传统pbft算法无法适用。
[0005]
为解决上述技术问题,本发明实施例提供一种实用拜占庭容错共识方法,包括:构建树形拓扑网络;所述树形拓扑网络包括根节点、主动子树以及被动子树;根据所述树形拓扑网络,完成所述实用拜占庭容错共识,包括:所述根节点生成随机密钥以及所述随机密钥对应的加密哈希h,根据所述主动子树中节点的数量n,将所述加密哈希h划分成n+1份,并分别向每个主动节点发送一份加密哈希份额;所述根节点接收客户端发送的事务请求;所述根节点将所述事务请求打包成目标区块,将所述目标区块与所述随机密钥绑定,在子网范围内广播第一准备消息;所述第一准备消息包括所述目标区块的数字摘要以及主节点对应的子网当前视图,所述子网当前视图与所述主节点在所述主动子树中的位置相关;所述根节点接收第一确认消息,对所述第一确认消息中的聚合签名进行验证;所述聚合签名根据所述主动子树的所有节点对应的用户签名聚合而成;所述根节点在验证所述聚合签名有效时,在子网范围内广播第一准备消息;所述第一准备消息包括所述目标区块的数字摘要以及主节点对应的子网当前视图,所述子网当前视图与所述主节点在所述主动子树中的位置相关;所述第二准备消息包括所述目标区块的数字摘要、所述主动子树的当前视图以及所
述聚合签名;所述根节点在接收第二确消息,对所述第二确认消息中的聚合密钥进行验证;所述聚合密钥根据所述主动子树的所有节点对应的哈希密钥聚合而成;所述根节点在验证所述聚合密钥与所述加密哈希相同时,确定达成共识结果;向所述客户端与所述被动子树的每一个节点广播回复消息,并将所述共识结果备份。
[0006]
可选的,所述构建树形拓扑网络,包括:以代理机构作为所述根节点;以参与目标招投标项目的供应商、所述目标招投项目的招标人以及选中的第三方监督机构作为主动节点,根据所述主动节点建立所述根节点的主动子树;以未参与所述目标招投标项目的供应商、非所述目标招投项目的招标人以及未选中的第三方监督机构作为被动节点,根据所述被动节点建立所述根节点的被动子树;根据所述根节点、所述主动子树以及所述被动子树,构建所述树形拓扑网络。
[0007]
可选的,所述实用拜占庭容错共识方法还包括:在检测到主动子树中的某一个节点发生故障时,执行视图更换操作。
[0008]
可选的,所述执行视图更换操作,包括:所述发生故障的节点向所述主动子树中的其他节点发送视图更换请求,所述视图更换请求包括所述发生故障的节点的标识以及选定的替换节点的标识,所述选定的替换节点为所述被动子树中正常运行的节点;所述主动子树的其他节点在接收到所述视图更换请求后,向所述替换节点发送视图更换确认消息;所述替换节点向所述主动子树的其他节点广播新视图消息,所述新视图消息包括发送所述视图更换确认消息的节点集合;所述发生故障的节点所在子网内的从节点根据所述新视图消息,更新其对应的视图,并将所述发生故障的节点与所述替换节点的身份绑定。
[0009]
为解决上述技术问题,本发明实施例还提供了一种实用拜占庭容错共识装置,包括:构建单元,用于构建树形拓扑网络;所述树形拓扑网络包括根节点、主动子树以及被动子树;容错共识单元,用于根据所述树形拓扑网络,完成所述实用拜占庭容错共识,包括:所述根节点生成随机密钥以及所述随机密钥对应的加密哈希h,根据所述主动子树中节点的数量n,将所述加密哈希h划分成n+1份,并分别向每个主动节点发送一份加密哈希份额;所述根节点接收客户端发送的事务请求;所述根节点将所述事务请求打包成目标区块,将所述目标区块与所述随机密钥绑定,在子网范围内广播第一准备消息;所述第一准备消息包括所述目标区块的数字摘要以及主节点对应的子网当前视图,所述子网当前视图与所述主节点在所述主动子树中的位置相关;所述根节点接收第一确认消息,对所述第一确认消息中的聚合签名进行验证;所述聚合签名根据所述主动子树的所有节点对应的用户签名聚合而成;所述根节点在验证所述聚合签名有效时,在子网范围内广播第一准备消息;所述第一准备消息包括所述目标区块的数字摘要以及主节点对应的子网当前视图,所述子网当前视图与所述主节点在所述主动子树中的位置相关;所述第二准备消息包括所述目标区块的数字摘要、所述主动子树的当前视图以及所述聚合签名;所述根节点在接收第二确消息,对所述第二确认消息中的聚合密钥进行验证;所述聚合密钥根据所述主动子树的所有节点对应的哈希密钥聚合而成;所述根节点在验证所述聚合密钥与所述加密哈希相同时,确定达成共识结果;向所述客户端与所述被动子树的每一个节点广播回复消息,并将所述共识结果备份。
[0010]
可选的,所述构建单元,用于以代理机构作为所述根节点;以参与目标招投标项目的供应商、所述目标招投项目的招标人以及选中的第三方监督机构作为主动节点,根据所
述主动节点建立所述根节点的主动子树;以未参与所述目标招投标项目的供应商、非所述目标招投项目的招标人以及未选中的第三方监督机构作为被动节点,根据所述被动节点建立所述根节点的被动子树;根据所述根节点、所述主动子树以及所述被动子树,构建所述树形拓扑网络。
[0011]
可选的,所述实用拜占庭容错共识装置还包括:视图更换单元,用于在检测到主动子树中的某一个节点发生故障时,执行视图更换操作。
[0012]
可选的,所述视图更换单元,用于控制所述发生故障的节点向所述主动子树中的其他节点发送视图更换请求,所述视图更换请求包括所述发生故障的节点的标识以及选定的替换节点的标识,所述选定的替换节点为所述被动子树中正常运行的节点;所述主动子树的其他节点在接收到所述视图更换请求后,向所述替换节点发送视图更换确认消息;所述替换节点向所述主动子树的其他节点广播新视图消息,所述新视图消息包括发送所述视图更换确认消息的节点集合;所述发生故障的节点所在子网内的从节点根据所述新视图消息,更新其对应的视图,并将所述发生故障的节点与所述替换节点的身份绑定。
[0013]
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述所述的任一种实用拜占庭容错共识方法的步骤。
[0014]
本发明实施例还提供了另一种实用拜占庭容错共识装置,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述所述的任一种实用拜占庭容错共识方法的步骤。
[0015]
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
[0016]
首先,根据主动节点和被动节点分类,在一定程度上降低共识规模,减小信息共识的开销;其次,采用消息聚合技术,将信息的共识等效于聚合签名的确认和聚合密钥承诺,减小共识中的通信量,降低网络开销和计算开销;构建树形拓扑网络,使得pbft算法易于扩展,容易在网络中加入新的分支或新的节点,通过在树形拓扑网络中排列节点来平衡计算和通信的负载,使得节点间的通信和消息聚合沿着树的边缘进行,降低了通信复杂度。
附图说明
[0017]
图1是本发明实施例一种实用拜占庭容错共识方法的流程图;
[0018]
图2是本发明实施例中的一种树形拓扑网络的结构示意图;
[0019]
图3是本发明实施例一种实用拜占庭容错共识装置的结构示意图。
具体实施方式
[0020]
如上述背景技术中所述,传统的pbft算法只适用于小规模的局域网,而在大规模的广域网环境下,其可扩展性瓶颈对许可链系统的性能带来了严重的影响。
[0021]
在本发明实施例中,首先,根据主动节点和被动节点分类,在一定程度上降低共识规模,减小信息共识的开销;其次,采用消息聚合技术,将信息的共识等效于聚合签名的确认和聚合密钥承诺,减小共识中的通信量,降低网络开销和计算开销;构建树形拓扑网络,使得pbft算法易于扩展,容易在网络中加入新的分支或新的节点,通过在树形拓扑网络中排列节点来平衡计算和通信的负载,使得节点间的通信和消息聚合沿着树的边缘进行,降低了通信复杂度。
[0022]
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
[0023]
本发明实施例提供了一种实用拜占庭容错共识方法,参照图1,以下通过具体步骤进行详细说明。
[0024]
步骤s101,构建树形拓扑网络。
[0025]
在具体实施中,树形拓扑网络可以包括根节点、主动子树以及被动子树。
[0026]
在招投标的联盟链中,假设内部没有恶意节点,每一个节点的可靠性相同,可以采用随机的方式选择主节点和从节点。
[0027]
在本发明实施例中,可以以代理机构作为根节点;以参与目标招投标项目的供应商、目标招投项目的招标人以及选中的第三方监督机构作为主动节点,根据主动节点建立根节点的主动子树;以未参与目标招投标项目的供应商、非目标招投项目的招标人以及未选中的第三方监督机构作为被动节点,根据被动节点建立根节点的被动子树。在得到根节点、主动子树以及被动子树之后,可以构建树形拓扑网络。
[0028]
在具体应用中可知,在树形拓扑网络中,错误节点所处的层次越高,其对网络造成的影响越大,主节点的故障会导致其对应的子节点无法正常工作。因此,可以选取稳定度较高的节点作为主节点。
[0029]
参照图2,给出了本发明实施例中的一种树形拓扑网络的结构示意图。图2中,树形拓扑网络包括根节点、主动子树以及被动子树。主动子树以及被动子树中的主节点与从节点可以随机选择生成。
[0030]
步骤s102,根据所述树形拓扑网络,完成所述实用拜占庭容错共识。
[0031]
在具体实施中,根节点可以根据其中的安全执行环境(trusted execution environment,tee)生成一组随机密钥m以及随机密钥m对应的加密哈希h。根节点根据主动子树中节点的数量n,将加密哈希h分成n+1份,并向每个主动节点发送一个加密哈希份额hi。
[0032]
客户端可以向根节点sroot发送消息<request,tx,t,c>σ
c
以请求执行事务tx,其中的request表示消息的类型,t是时间戳,σ
c
是客户端c对消息的签名。根节点sroot在接收到客户端发送的事务请求后,将事务请求打包成目标区块b,将目标区块b与随机密钥m进行绑定,并向主动子树中的所有节点广播第一准备消息。
[0033]
在具体实施中,第一准备消息可以包括目标区块b的数字摘要以及主动子树的当前视图。在本发明实施例中,第一准备消息可以为如下:图。在本发明实施例中,第一准备消息可以为如下:其中,v为主节点对应的子网当前视图,d为目标区块b的数字摘要,prepare1为准备消息的签名。子网当前视图与主节点在主动子树中的位置相关,不同的主节点对应的子网当前视图可以不同。本发明实施例中所述的主节点,指的是主动子树中存在从节点的节点。
[0034]
对于主动子树中的任一节点,若其存在对应的从节点,则在接收到第一准备消息后,继续将第一准备消息广播至其对应的从节点,以此类推,直至最底层节点。最底层节点在接收到第一准备消息后,对其合法性进行验证,验证的主要内容包括:第一准备消息签名的准确性、主节点对应的子网当前视图的准确性、摘要d与目标区块b的哈希值是否一致以及目标区块b中的事务是否重放等。
[0035]
若最底层节点验证第一准备消息有效,则将其存入本地消息日志,并向其对应的
上一层节点(也即最底层节点的主节点)发送确认消息<commit1,v,as,d>σ
i
;其中,σ
i
表示主动节点i对确认消息的签名。最底层节点的上一层节点在接收到确认消息后,验证确认消息的合法性,验证内容主要包括:主节点对应的子网当前视图的准确性、摘要d之间的一致性等。若确认消息合法有效,则将确认消息中的身份签名as与自身的身份签名聚合组成新的身份签名。
[0036]
若最底层节点的上一层节点为其他主节点的从节点,则该主节点执行与最底层节点的上一层节点相同的操作,以此类推,直至根节点,最终生成的确认消息即为第一确认消息。
[0037]
例如,最底层节点为子节点0,子节点0的上一层节点为子节点1,子节点1为子节点2的从节点,子节点2为子节点3的子节点。子节点0在接收到第一准备消息后,若确认第一准备消息有效后,向子节点1发送确认消息,此时,子节点1为子节点0的主节点。子节点1在接收到确认消息后,验证确认消息的合法性。若验证确认消息合法,则将确认消息中的子节点0的身份签名与自身的身份签名(也即子节点1的身份签名)聚合组成新的身份签名。子节点1向子节点2发送确认消息。子节点2在接收到确认消息后,验证确认消息的合法性。若验证确认消息合法,则将确认消息中新的身份签名与自身的身份签名(也即子节点2的身份签名)聚合组成新的身份签名。子节点2再向子节点3发送确认消息,以此类推。
[0038]
根节点在接收到确认消息后,其tee对聚合签名进行验证。当验证聚合签名有效时,向主动子树中的所有节点广播第二准备消息。在第二准备消息中,可以包括目标区块的数字摘要、主节点对应的子网当前视图以及聚合签名。根节点向主动子树广播第二准备消息的过程可以参见上述广播第一准备消息的过程。
[0039]
最底层节点在接收到第二准备消息后,对第二准备消息的合法性进行验证,验证的主要内容包括:聚合签名的正确性、主节点对应的子网当前视图的准确性、摘要d与目标区块b的哈希值是否一致。
[0040]
若最底层节点验证第二准备消息有效,则将其存入本地消息日志,并向其对应的上一层节点发送确认消息<commit2,v,as,h
i
,d>σ
i
。最底层节点对应的上一次层节点在确认消息后,验证确认消息的合法性,验证内容主要包括:主节点对应的子网当前视图的准确性、聚合签名as的有效性以及摘要d之间的一致性等。若确认消息合法有效,则将确认消息中的聚合密钥h
i
与自身的哈希密钥聚合组成新的聚合后的哈希密钥h
i

[0041]
若最底层节点的上一层节点为其他主节点的从节点,则该主节点执行与最底层节点的上一层节点相同的操作,以此类推,直至根节点,最终生成的确认消息即为第二确认消息。
[0042]
根节点在接收到第二确认消息后,其tee对最终得到的聚合哈希密钥h
i
进行判断。若最终得到的聚合哈希密钥h
i
与初始的加密哈希h相同,则确定共识达成。根节点向客户端与每一个被动节点(被动子树中的节点)广播一条回复消息将共识结果<b,m,as,h>存入本地消息日志进行备份。
[0043]
在具体实施中,实用拜占庭容错共识方法还可以在检测到主动子树中的某一个节点发生故障时,触发视图更换协议。在被动子树范围内随机选择一个正常的最底层节点替换发生故障的节点。
[0044]
在本发明实施例中,主动子树中的一个节点在进行验证的过程中发现存在不一致
性或者不合法性,可以向其主节点发送请求并设置计时器。若在计时器超时之前未得到回复,则该节点可以向主动子树中的所有节点广播请求。
[0045]
如果一个节点在超时之前没有收到或者重新收到prepare1(或prepare2/commit1/commit2)消息,它将向所有主动节点广播一个视图更换请求<req_view_change,v+1,sn,s
a,i
,s
p,j
>σ
i
,sn为其本地最后一次提交的区块的序列号,s
a,i
为被发生故障的主动节点,s
p,j
为选中的被动节点。
[0046]
所有主动子树中的节点在接收到视图更换请求后,对接收到的视图更换请求的合法性进行验证。若验证视图更换请求有效,则向被选中的被动节点发送视图更换确认消息。
[0047]
被选中的被动节点在接收到视图更换确认消息后,向主动子树中的所有节点广播新视图消息新视图消息为主动节点发送的视图更换确认消息的集合,用以证明其获得了足够的支持。
[0048]
主动子树中的主动节点在接收到新视图消息后,验证签名的正确性以及视图更换消息的有效性,然后将视图更换消息添加到消息日志中,且被替换节点所在子网内的从节点将视图消息存入日志并进入视图v+1,同时将s
a,i
的身份签名与s
p,j
的身份暂时绑定,s
a,i
节点tee内的消息与s
p,j
节点tee内的消息进行共享。
[0049]
参照图3,给出了本发明实施例中的一种实用拜占庭容错共识装置30,包括:构建单元301以及容错共识单元302,其中:
[0050]
构建单元301,用于构建树形拓扑网络;所述树形拓扑网络包括根节点、主动子树以及被动子树;
[0051]
容错共识单元302,用于根据所述树形拓扑网络,完成所述实用拜占庭容错共识,包括:所述根节点生成随机密钥以及所述随机密钥对应的加密哈希h,根据所述主动子树中节点的数量n,将所述加密哈希h划分成n+1份,并分别向每个主动节点发送一份加密哈希份额;所述根节点接收客户端发送的事务请求;所述根节点将所述事务请求打包成目标区块,将所述目标区块与所述随机密钥绑定,在子网范围内广播第一准备消息;所述第一准备消息包括所述目标区块的数字摘要以及主节点对应的子网当前视图,所述子网当前视图与所述主节点在所述主动子树中的位置相关;所述根节点接收第一确认消息,对所述第一确认消息中的聚合签名进行验证;所述聚合签名根据所述主动子树的所有节点对应的用户签名聚合而成;所述根节点在验证所述聚合签名有效时,在子网范围内广播第一准备消息;所述第一准备消息包括所述目标区块的数字摘要以及主节点对应的子网当前视图,所述子网当前视图与所述主节点在所述主动子树中的位置相关;所述第二准备消息包括所述目标区块的数字摘要、所述主动子树的当前视图以及所述聚合签名;所述根节点在接收第二确消息,对所述第二确认消息中的聚合密钥进行验证;所述聚合密钥根据所述主动子树的所有节点对应的哈希密钥聚合而成;所述根节点在验证所述聚合密钥与所述加密哈希相同时,确定达成共识结果;向所述客户端与所述被动子树的每一个节点广播回复消息,并将所述共识结果备份。
[0052]
在具体实施中,所述构建单元301,用于以代理机构作为所述根节点;以参与目标招投标项目的供应商、所述目标招投项目的招标人以及选中的第三方监督机构作为主动节点,根据所述主动节点建立所述根节点的主动子树;以未参与所述目标招投标项目的供应商、非所述目标招投项目的招标人以及未选中的第三方监督机构作为被动节点,根据所述
被动节点建立所述根节点的被动子树;根据所述根节点、所述主动子树以及所述被动子树,构建所述树形拓扑网络。
[0053]
在具体实施中,所述实用拜占庭容错共识装置30还可以包括:视图更换单元303,用于在检测到主动子树中的某一个节点发生故障时,执行视图更换操作。
[0054]
在具体实施中,所述视图更换单元303,可以用于控制所述发生故障的节点向所述主动子树中的其他节点发送视图更换请求,所述视图更换请求包括所述发生故障的节点的标识以及选定的替换节点的标识,所述选定的替换节点为所述被动子树中正常运行的节点;所述主动子树的其他节点在接收到所述视图更换请求后,向所述替换节点发送视图更换确认消息;所述替换节点向所述主动子树的其他节点广播新视图消息,所述新视图消息包括发送所述视图更换确认消息的节点集合;所述发生故障的节点所在子网内的从节点根据所述新视图消息,更新其对应的视图,并将所述发生故障的节点与所述替换节点的身份绑定。
[0055]
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述任一实施例所述的实用拜占庭容错共识方法的步骤。
[0056]
本发明实施例还提供了另一种实用拜占庭容错共识装置,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述任一实施例所述的实用拜占庭容错共识方法的步骤。
[0057]
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1