一种区块链节点故障恢复方法及区块链系统技术方案

技术编号:35954717 阅读:26 留言:0更新日期:2022-12-14 10:48
本发明专利技术提供一种区块链节点故障恢复方法及区块链系统,涉及区块链技术领域,该方法包括:检测区块链节点的节点状态,节点状态包括正常状态和恢复状态;若区块链节点处于正常状态,则利用拜占庭共识机制对产生的区块进行验证和投票,在发现区块链节点区块或视图落后的情况下,将节点状态从正常状态切换为恢复状态,发送恢复请求消息;接收所反馈的恢复响应消息,根据恢复响应消息中携带的内容,将区块链节点恢复到最新区块和视图。这样,通过在共识中增加节点区块落后发现机制,能够及时发现节点区块落后,并主动的进行节点同步,恢复到最新的区块和视图,用以处理交易请求,可以避免节点区块落后导致的节点不可用问题。免节点区块落后导致的节点不可用问题。免节点区块落后导致的节点不可用问题。

【技术实现步骤摘要】
一种区块链节点故障恢复方法及区块链系统


[0001]本专利技术属于区块链
,尤其涉及一种区块链节点故障恢复方法及区块链系统。

技术介绍

[0002]本部分的陈述仅仅是提供了与本专利技术相关的
技术介绍
信息,不必然构成已经成为本领域一般技术人员所公知的现有技术。
[0003]区块链,即一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条,这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。这些服务器在区块链系统中被称为节点,它们为整个区块链系统提供存储空间和算力支持。如果要修改区块链中的信息,必须征得半数以上节点的同意并修改所有节点中的信息,而这些节点通常掌握在不同的主体手中,篡改区块链中的信息是一件极其困难的事。因此,区块链所记录的信息更加真实可靠,可以帮助解决人们互不信任的问题。
[0004]区块链网络在实际运行过程中,会出现网络抖动、磁盘故障等问题,这将导致部分节点的执行速度落后大多数节点,如果落后节点数量超过容错上限,则整个区块链网络就呈现出不可用的状态,这在实际生产环境中是不可接受的。传统的拜占庭共识机制(Practical Byzantine Fault Tolerance,PBFT)的区块链网络恢复方法有两种:当主节点有问题或者超时没有响应时,就会触发视图变更(viewchange)流程切换主节点,视图变更完成后,主节点切换到下一个节点;在检查点(checkpoint)时,如果节点发现区块落后时,就会触发恢复过程,从其他节点拉取稳定检查点之前的数据,这样的恢复机制仍存在以下问题:(1)在网络不稳定时容易触发视图变更流程,由于视图变更流程也需要网络稳定才可以切换成功,实际执行过程中容易因为网络问题切换失败,导致整个区块链网络无法正常处理交易;(2)在检查点恢复流程的触发是被动的,需要在检查点执行过程才能触发,实际环境中检查点通常有一定时间间隔,导致落后节点长时间不能正常处理交易;(3)对于落后节点来说,如果通过检查点发现自身稳定检查点落后时,落后节点只能恢复到最新的稳定检查点,而无法获得该检查点后落后的共识消息,可能一直无法真正参与到共识当中。

技术实现思路

[0005]为了解决上述问题,本专利技术提供一种区块链节点故障恢复方法及区块链系统,通过在共识中增加节点区块落后发现机制,以及时发现节点区块落后,并主动的进行节点同步,避免节点区块落后导致的节点不可用问题。
[0006]为了实现上述目的,本专利技术主要包括以下几个方面:
第一方面,本专利技术实施例提供一种区块链节点故障恢复方法,包括:检测区块链节点的节点状态,所述节点状态包括正常状态和恢复状态;若所述区块链节点处于正常状态,则利用拜占庭共识机制对产生的区块进行验证和投票,在发现区块链节点区块或视图落后的情况下,将节点状态从正常状态切换为恢复状态,发送恢复请求消息;接收所反馈的恢复响应消息,根据所述恢复响应消息中携带的内容,将所述区块链节点恢复到最新区块和视图。
[0007]在一种可能的实施方式中,获取所述区块链节点的目标区块高度,若接收到预设数量的区块高度大于所述目标区块高度的共识消息,则判定所述区块链节点的区块落后。
[0008]获取所述区块链节点的目标视图高度,若接收到预设数量的视图高度大于所述目标视图高度的共识消息,则判定所述区块链节点的视图落后。
[0009]进一步的,还包括:在检查点执行过程中发现区块链节点的区块落后,将节点状态从正常状态切换为恢复状态,发送恢复请求消息。
[0010]在将所述区块链节点恢复到最新区块和视图之后,还包括:将节点状态切换为正常状态,以处理交易请求。
[0011]进一步的,所述节点状态还包括视图切换状态;在所述区块链节点处于正常状态的情况下,若交易请求超时未处理或发现视图落后,则将节点状态从正常状态切换为视图切换状态,以进行视图切换。
[0012]若接收到视图切换确认消息,则判定区块链节点的视图落后。
[0013]在所述区块链节点处于视图切换状态情况下,进行视图切换,并在视图切换完成时,将节点状态从视图切换状态切换为正常状态。
[0014]在视图切换过程中,若视图内主节点未响应,则重新选取主节点进行下一轮视图切换。
[0015]第二方面,本专利技术实施例还提供了一种区块链系统,包括多个区块链节点,每个区块链节点采用如上述第一方面所述的区块链节点故障恢复方法进行故障的恢复。
[0016]以上一个或多个技术方案存在以下有益效果:(1)本专利技术提供一种区块链节点故障恢复方法,通过增加共识中区块链节点的区块落后发现机制,以及时发现本节点区块落后,并主动的进行节点同步,恢复到最新的区块和视图,及时处理交易消息,避免了节点区块落后导致的节点不可用问题;(2)通过增加节点视图落后发现机制,在网络不稳定时,节点未收到交易消息,或者未收到视图切换消息时,仍能发现并及时同步视图,避免了节点视图落后导致的节点不可用问题。
附图说明
[0017]构成本专利技术的一部分的说明书附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。
[0018]图1是本专利技术实施例一所提供的区块链节点故障恢复方法的流程示意图。
具体实施方式
[0019]下面结合附图与实施例对本专利技术作进一步说明。
[0020]应该指出,以下详细说明都是示例性的,旨在对本专利技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本专利技术所属
的普通技术人员通常理解的相同含义。
[0021]需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本专利技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0022]实施例一请参阅图1,本实施例提供一种区块链节点故障恢复方法,具体包括以下步骤:S101:检测区块链节点的节点状态,所述节点状态包括正常状态和恢复状态;S102:若所述区块链节点处于正常状态,则利用拜占庭共识机制对产生的区块进行验证和投票,在发现区块链节点区块或视图落后的情况下,将节点状态从正常状态切换为恢复状态,发送恢复请求消息;S103:接收所反馈的恢复响应消息,根据所述恢复响应消息中携带的内容,将所述区块链节点恢复到最新区块和视图。
[0023]共识机制就是所有区块链节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了多种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。其中,拜占庭共识机制(Practical Byzantine Fault Tolerance, PBFT),是基于消息传递的一致性算法,算法经过三个阶段达成一致性。PBFT共识共本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链节点故障恢复方法,其特征在于,包括:检测区块链节点的节点状态,所述节点状态包括正常状态和恢复状态;若所述区块链节点处于正常状态,则利用拜占庭共识机制对产生的区块进行验证和投票,在发现区块链节点区块或视图落后的情况下,将节点状态从正常状态切换为恢复状态,发送恢复请求消息;接收所反馈的恢复响应消息,根据所述恢复响应消息中携带的内容,将所述区块链节点恢复到最新区块和视图。2.如权利要求1所述的区块链节点故障恢复方法,其特征在于,获取所述区块链节点的目标区块高度,若接收到预设数量的区块高度大于所述目标区块高度的共识消息,则判定所述区块链节点的区块落后。3.如权利要求1所述的区块链节点故障恢复方法,其特征在于,获取所述区块链节点的目标视图高度,若接收到预设数量的视图高度大于所述目标视图高度的共识消息,则判定所述区块链节点的视图落后。4.如权利要求1所述的区块链节点故障恢复方法,其特征在于,还包括:在检查点执行过程中发现区块链节点的区块落后,将节点状态从正常状态切换为恢复状态,发送恢复请求消息。5.如权利要求1...

【专利技术属性】
技术研发人员:李若寒戴振利张国艳王远王占鹏
申请(专利权)人:山东区块链研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1