一种拜占庭容错协议中的视图切换方法技术

技术编号:33345629 阅读:63 留言:0更新日期:2022-05-08 09:40
本发明专利技术公开了一种拜占庭容错协议中的视图切换方法,包括以下几个步骤,节点从脱机状态下重新启动时,检查存储状态,找到视图编号最大的达成Prepare状态的共识消息,并将其视图编号记录为;根据消息,记录其他节点的视图编号和状态;根据消息,验证更新自己的最小回溯视图;对节点发生超时进行判断,若没有超时则,则返回步骤2进入下一轮的正常共识阶段;若发生超时,检查步骤2中记录的所有节点所处的视图编号和消息类型,根据同一视图中所处的节点数量进行视图切换。本发明专利技术可以确保在多个节点出现长时间或多次的脱机后,即使视图编号已经完全不同时,仍然可以在一段时间后回到相同的视图中并继续进行共识。相同的视图中并继续进行共识。相同的视图中并继续进行共识。

【技术实现步骤摘要】
一种拜占庭容错协议中的视图切换方法


[0001]本专利技术涉及拜占庭容错共识协议
,具体为一种拜占庭容错协议中的视图切换方法。

技术介绍

[0002]拜占庭容错共识协议起源于拜占庭将军问题,即多个将军如何在只能两两通信且可能会有通信丢失或有人叛变的情况下达成总体结论的一致性。对应于现代的计算机网络,拜占庭容错共识要解决的问题即是多个计算机节点如何在两两点对点通信的情况下,在允许部分节点脱机甚至作恶的情况下,良好节点达成对于提议的共识。
[0003]该问题最早由Lamport等人在The Byzantine General Problems(拜占庭将军问题)一文中提出,并得出了结论当脱机或恶意节点数量不超过总数的1/3时,存在通信协议可以保证最终结论的一致性,但该协议过于理想化,在实现时依赖于不存在于现实中的同步假设。而在1999年Miguel Castro和Barbara Liskov的Practical Byzantine Fault Tolerance(实用拜占庭容错,也即现在常说的PBFT)一文中,给出了拜占庭问题在异步网络假设下比较实用的实现方式,包括正常情况下的3阶段即Pre

prepare阶段(预准备阶段),Prepare阶段(准备阶段),Commit阶段(提交阶段)以及应对错误发生时的View

Change阶段(视图切换阶段),View

Change

Ack阶段(视图切换回应阶段)和New

View阶段(新视图阶段),具体详见图3和图4。
[0004]PBFT的视图切换阶段定义了当发生超时的情况下,即当部分节点因脱机或作恶未能正常完成全部正常流程时的处理机制。但是对于暂时脱机后又能恢复的节点,没有明确的协议使其回复到正常的流程当中,因此在2002年同样由Miguel Castro和Barbara Liskov的文章Practical Byzantine Fault Tolerance and Proactive Recovery(实用拜占庭容错与主动恢复)中,对于原本的协议进行了增补,对于脱机后恢复的节点,定义了一系列通信协议帮助其回到所有成员中。
[0005]但是,上面提到的协议只适合于少量节点脱机后恢复运行,在其它节点的帮助下回到正常状态的情况,且有额外的通信成本。但如果出现大部分节点的临时脱机,并且它们的恢复时间并不统一,或者由于某些其它错误状态,最终各个节点的视图已经完全不相同或大部分不相同时,这些通信协议就不再有效,整个系统中每个节点会陷入无限的View

change阶段,但始终无法达成统一,也因此永远无法恢复到正常的共识流程之中。现在BFT协议及其变种主要流行于区块链系统中,这类错误一旦发生,会导致整个共识过程的停滞,给系统带来极大的影响。因此我们对此做出改进,提出一种拜占庭容错协议中的视图切换方法。

技术实现思路

[0006]为了解决上述技术问题,本专利技术提供了如下的技术方案:
[0007]本专利技术一种拜占庭容错协议中的视图切换方法,包括以下几个步骤,
[0008]步骤1、节点从脱机状态下重新启动时,检查存储状态,找到视图编号最大的达成Prepare状态的共识消息,并将其视图编号记录为V
min

[0009]步骤2、根据消息,记录其他节点的视图编号和状态;
[0010]步骤3、根据消息,验证更新自己的最小回溯视图;
[0011]步骤4、对节点发生超时进行判断,若没有超时则,则返回步骤2进入下一轮的正常共识阶段;若发生超时,检查步骤2中记录的所有节点所处的视图编号和消息类型,根据同一视图中所处的节点数量进行视图切换。
[0012]作为本专利技术的一种优选技术方案,所述的验证更新自己的最小回溯视图的方法是,在共识过程中,对于从其它节点收到的任何视图切换消息,无论其视图编号是否和自己相同,如果其中有可验证的达成Prepare状态的共识过程,也存入本地的记录,并且如果该过程的视图编号大于自己的最小可回溯视图编号值,则更新自己的最小可回溯视图编号。
[0013]作为本专利技术的一种优选技术方案,所述的根据同一视图中所处的节点数量进行视图切换的方法是,若超过2/3的节点处于同一个视图中,并且该轮共识成功,则将自己的视图编号与它们同步,并返回步骤2进入下一轮的正常共识阶段;
[0014]若有超过2/3的节点处于同一个视图中,但该轮共识并未成功,则将自己的视图编号更新为它们的编号加1,则返回步骤2进入视图切换阶段;
[0015]若没有超过2/3的节点处于同一个视图中,那么将自己的视图编号回更新为自己的最小可回溯视图,将自己的视图编号回溯到V
min
,并返回步骤2进入视图切换阶段。
[0016]作为本专利技术的一种优选技术方案,所述的Prepare状态是指该节点收集到了对于该共识消息的消息序号的提议以及超过2/3的节点对此的签名。
[0017]作为本专利技术的一种优选技术方案,所述的消息类型是指消息在该拜占庭容错协议中定义的类型。
[0018]作为本专利技术的一种优选技术方案,所述的记录其他节点的视图编号和状态的方法是,在每个超时周期内,记录系统内所有节点所处的视图编号和消息类型。
[0019]作为本专利技术的一种优选技术方案,所述的消息包括Pre

Prepare消息,Prepare消息,Commit消息,View

Change消息,View

Change

Ack消息或New

View消息。
[0020]本专利技术的有益效果是:
[0021]该种拜占庭容错协议中的视图切换方法可以确保在多个节点出现长时间或多次的脱机后,即使视图编号已经完全不同时,仍然可以在一段时间后回到相同的视图中并继续进行共识;本专利技术对于一个存在视图切换阶段且节点总数为n的BFT系统(其允许的最大故障或作恶节点数f=[(n

1)/3],向下取整,只要有至少2f+1个非恶意节点恢复到正常联机状态,那么即使一轮共识失败,依然可以通过View

Change消息完成对于已经达成Prepare状态的共识内容的同步。从而,这些非恶意节点的V
min
将来到相同的值。如果几轮后依然没有共识成功,那么这些非恶意节点的视图编号都将回到V
min
,这时,由于有2f+1个节点来到了相同的编号,那么即使依然共识失败,V
min
对应的主节点为作恶节点或仍在脱机状态,这2f+1个节点的视图编号会同步递增,直到其中某个节点成为主节点,并完成共识,整个系统从此将回到正轨。
附图说明
[0022]附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种拜占庭容错协议中的视图切换方法,其特征在于:包括以下几个步骤,步骤1、节点从脱机状态下重新启动时,检查存储状态,找到视图编号最大的达成Prepare状态的共识消息,并将其视图编号记录为;步骤2、根据消息,记录其他节点的视图编号和状态;步骤3、根据消息,验证更新自己的最小回溯视图;步骤4、对节点发生超时进行判断,若没有超时则,则返回步骤2进入下一轮的正常共识阶段;若发生超时,检查步骤2中记录的所有节点所处的视图编号和消息类型,根据同一视图中所处的节点数量进行视图切换。2.根据权利要求1所述的一种拜占庭容错协议中的视图切换方法,其特征在于,所述的验证更新自己的最小回溯视图的方法是,在共识过程中,对于从其它节点收到的任何视图切换消息,无论其视图编号是否和自己相同,如果其中有可验证的达成Prepare状态的共识过程,也存入本地的记录,并且如果该过程的视图编号大于自己的最小可回溯视图编号值,则更新自己的最小可回溯视图编号。3.根据权利要求1所述的一种拜占庭容错协议中的视图切换方法,其特征在于,所述的根据同一视图中所处的节点数量进行视图切换的方法是,若超过2/3的节点处于同一个视图中,并且该轮共识成功,则将自己的视图编号与它们同步,并返回步骤2进入下一轮的正常共识阶段;若有超过2/3的节...

【专利技术属性】
技术研发人员:顾星远邓超国
申请(专利权)人:观源上海科技有限公司
类型:发明
国别省市:

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

1