公开/公告号CN112511338A
专利类型发明专利
公开/公告日2021-03-16
原文格式PDF
申请/专利权人 迅鳐成都科技有限公司;
申请/专利号CN202011243476.X
申请日2020-11-09
分类号H04L12/24(20060101);H04L29/06(20060101);
代理机构51231 成都泰合道知识产权代理有限公司;
代理人李正
地址 611730 四川省成都市郫都区德源镇(菁蓉镇创业公社)大禹东路66号3栋10楼10-01室附-1
入库时间 2023-06-19 10:14:56
技术领域
本发明涉及区块链技术,尤其涉及一种区块链共识网络动态恢复方法、电子设备、系统及介质。
背景技术
PBFT算法,PBFT是Practical Byzantine Fault Tolerance的缩写,意为拜占庭容错算法,是一种高效的拜占庭问题解决办法,同时也是区块链平台上的核心算法。PBFT算法允许系统有不超过f=(n-1)/3的恶意节点,即在恶意节点数量不超过f时,仍能保证共识系统的安全性和有效性。
基于PBFT算法构建的共识网络中,如果有节点宕机,通常会通过PBFT算法的checkpoint机制和ViewChange机制来处理,以共识网络的稳定性。但是在处理过程中,宕机节点会需要一定延迟时间才能重新参与节点共识,而在这段时间内区块链共识网络的不稳定可能性将增大。因此,有必要提出一种能够在共识网络有节点宕机时,保障共识网络稳健性的方案。
发明内容
鉴于以上所述现有技术的不足,本发明的目的在于:提供一种区块链共识网络动态恢复方法,不仅能够在共识网络有节点宕机时,通过备用节点替换宕机的共识节点,以保障共识网络稳健性,还能够将宕机的共识节点重启后重新加入至共识网络中,以保证共识网络的安全性。
为实现上述发明目的,本发明提供以下技术方案:
一种区块链共识网络动态恢复方法,其包括以下步骤:
检测到有共识节点宕机时,根据共识网络的通道信息,选取一个或多个备份节点加入所述共识网络进行共识,以替换宕机的一个或多个共识节点;其中,所述备份节点为通道下未参与所述共识网络的节点;宕机的共识节点重启后作为新的备份节点;
以及,检测是否有共识节点的权重值小于备份节点的权重值;若有,则将权重值较大的备份节点加入所述共识网络进行共识,以替换权重值较小的共识节点;其中,节点的所述权重值包含在节点注册至通道下的节点信息内。
根据一种具体的实施方式,本发明区块链共识网络动态恢复方法中,选取权重值较大的一个或多个所述备份节点加入所述共识网络进行共识。
根据一种具体的实施方式,本发明区块链共识网络动态恢复方法中,所述备份节点的数量不超过所述共识网络最大允许宕机数量。
根据一种具体的实施方式,本发明区块链共识网络动态恢复方法中,检测共识节点宕机的方式为:每个共识节点根据其它共识节点广播的心跳信息,建立心跳列表;若连续一定次数未接收到相应共识节点的心跳信息,将该共识节点从所述心跳列表中剔除,并发起对该共识节点的异常投票;
每个共识节点根据其心跳列表记录的信息,进行异常投票;若接收到对相应共识节点的异常投票数量满足共识条件,将该共识节点加入至异常列表中。
进一步地,若有共识节点加入至所述异常列表中或有共识节点的权重值小于备份节点的权重值,则发起变更投票;若接收到的变更投票数量满足共识条件,则将权重值较大的所述备份节点至所述共识网络进行共识。
再进一步地,若加入所述异常列表的共识节点数量超过最大允许宕机数量,则发出共识网络失效的提示。
再进一步地,当所述备份节点加入至所述共识网络,且向其它共识节点广播心跳信息,则将所述异常列表中的节点信息删除。
本发明的另一方面,还提供一种电子设备,其被配置为:在参与区块链共识网络并作为共识节点检测到有其它共识节点宕机时,实施本发明的区块链共识网络动态恢复方法。
本发明的另一方面,还提供一种区块链系统,其包括:包括至少用于构成区块链共识网络的四个共识节点,以及至少一个备份节点,其中,所述共识节点或所述备份节点为能够实施本发明的区块链共识网络动态恢复方法的电子设备。
本发明的另一方面,还提供一种可读存储介质,其上存储有一个或多个程序,其特征在于,该一个或多个程序被一个或多个处理器执行时实现本发明的区块链共识网络动态恢复方法。
与现有技术相比,本发明的有益效果:
本发明的区块链共识网络动态恢复方法,该方法通过在检测到有共识节点宕机时,根据共识网络的通道信息,选取一个或多个备份节点加入共识网络进行共识,以替换宕机的一个或多个共识节点;而且,备份节点为同一通道下未参与该共识网络的节点,宕机的共识节点重启后作为新的备份节点;同时,实时地比较共识节点与备份节点的权重值,并将权重值较大的备份节点加入共识网络进行共识,以替换权重值较小的共识节点。因此,本发明通过上述机制,不仅能够在共识网络有节点宕机时,通过备用节点替换宕机的共识节点,以保障共识网络稳健性,还能够将宕机的共识节点重启后重新加入至共识网络中,以保证共识网络的安全性。
附图说明
图1为本发明方法的流程示意图;
图2为本发明区块链系统的架构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
如图1所示,本发明的区块链共识网络动态恢复方法,其包括以下步骤:
首先,在区块链组网前,注册通道并设定共识节点数量,在注册的通道下可允许区块链网络中特定的一些节点进行彼此交互。在具体实施时,向通道下添加节点,并将大于共识节点数量的节点注册至通道下,而且注册时,需要将节点信息发送到通道上,节点信息包括节点名称、节点证书以及节点地址等。然后,开始区块链组网,而当区块链组网成功后,通道下仍然有一部分节点未参与该区块链共识网络中,即这部分节点作为该区块链共识网络的备用节点。
然后,在区块链组网完成后,检测到有共识节点宕机时,根据共识网络的通道信息,选取一个或多个备份节点加入所述共识网络进行共识,以替换宕机的一个或多个共识节点,因此,本发明通过上述机制,能够在共识网络出现节点宕机时,将备份节点加入到共识网络中,以保障共识网络稳健性。而且,本发明中,宕机的共识节点重启后作为新的备份节点。
以及,检测是否有共识节点的权重值小于备份节点的权重值;若有,则将权重值较大的备份节点加入共识网络进行共识,以替换权重值较小的共识节点;其中,节点的所述权重值包含在节点注册至通道下的节点信息内。
本发明区块链共识网络动态恢复方法中,检测到有共识节点宕机时,选取权重值较大的一个或多个所述备份节点加入所述共识网络进行共识。
本发明区块链共识网络动态恢复方法中,为了避免备份节点数量过多,甚至超过了设定共识节点数量,在一种极端情况下,最初组网形成的区块链网络中的所有共识节点完全被备用节点替换,这时相当于完全形成了一个新的区块链网络,会带来极大的安全风险。因此,备份节点的数量不超过共识网络最大允许宕机数量,通过对备份节点的数量限制,可完全避免这种极端情况的出现。
本发明区块链共识网络动态恢复方法中,在具体实施时,检测共识节点宕机的方式为:每个共识节点根据其它共识节点广播的心跳信息,建立心跳列表;若连续一定次数未接收到相应共识节点的心跳信息,将该共识节点从所述心跳列表中剔除,并发起对该共识节点的异常投票;而每个共识节点根据其心跳列表记录的信息,进行异常投票;若接收到对相应共识节点的异常投票数量满足共识条件,将该共识节点加入至异常列表中。
而且,若有共识节点加入至所述异常列表中或有共识节点的权重值小于备份节点的权重值,则发起变更投票;若接收到的变更投票数量满足共识条件,则将权重值较大的所述备份节点至所述共识网络进行共识。同时,若加入异常列表的共识节点数量超过最大允许宕机数量,则发出共识网络失效的提示。实际上,只要有2f+1个节点能够正常共识,该区块链网络仍能正常工作;故而,当异常列表中共识节点的数量超过了最大允许宕机数量f,则该区块链网络便瘫痪。
同时,虽然有共识节点宕机但该区块链网络仍能正常工作,那么当备份节点加入至共识网络,且向其它共识节点广播心跳信息,则将所述异常列表中的节点信息删除。如此,便完成了区块链共识网络的自恢复过程。
本发明区块链共识网络动态恢复方法中,备份节点配置有权重值,如此便可依据权重值,来确定应当优先选择哪个备份节点加入到共识网络中。在具体实施时,备份节点的权重值可作为节点信息,直接注册至通道下,而当区块链网络中有共识节点宕机时,则直接通过通道信息,获取到各个备份节点的权重值,并从中选择相应的备份节点即可。
本发明区块链共识网络动态恢复方法中,在具体实施时,备份节点虽然不参加区块链共识网络的共识,但备份节点为了避免在被选入参加区块链共识网络时,需要同步大量的区块数据,因此当区块链网络产生区块时,会由共识节点将区块链中的区块同步给对应的备份节点。当然,共识节点与备份节点的数据传送关系是固定的,即配置共识节点给特定备份节点进行区块数据同步;或者共识节点与备份节点的数据传送关系是非固定的,可根据共识节点与备份节点之间网络连接状况来即时调整数据传输关系。
本发明的另一方面,还提供一种电子设备,其被配置为:在参与区块链共识网络并作为共识节点检测到有其它共识节点宕机时,实施本发明的区块链共识网络动态恢复方法。
如图2所示,还提供一种区块链系统,其包括:包括至少用于构成区块链共识网络的四个共识节点,以及至少一个备份节点,其中,所述共识节点或所述备份节点为能够实施本发明的区块链共识网络动态恢复方法的电子设备。
本发明的另一方面,还提供一种可读存储介质,其上存储有一个或多个程序,其特征在于,该一个或多个程序被一个或多个处理器执行时实现本发明的区块链共识网络动态恢复方法。
应该理解到,本发明所揭露的系统,可通过其它的方式实现。例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,模块之间的通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
机译: 区块链共识任务的协调方法,区块链共识任务的协调设备,处理区块链共识任务的方法,区块链节点设备,区块链系统和存储介质
机译: 区块链的共识方法,以及共识节点,电子设备和存储介质
机译: 用于在区块链共识网络中处理共识请求的方法,装置和电子设备