CN111522696A - 区块链共识节点的宕机处理方法、数据持久化方法及硬件 - Google Patents
区块链共识节点的宕机处理方法、数据持久化方法及硬件 Download PDFInfo
- Publication number
- CN111522696A CN111522696A CN202010630012.8A CN202010630012A CN111522696A CN 111522696 A CN111522696 A CN 111522696A CN 202010630012 A CN202010630012 A CN 202010630012A CN 111522696 A CN111522696 A CN 111522696A
- Authority
- CN
- China
- Prior art keywords
- consensus
- target
- node
- protocol
- persistent data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Retry When Errors Occur (AREA)
Abstract
本说明书实施例提供一种区块链共识节点的宕机处理方法、数据持久化方法及硬件。其中,方法包括:区块链的目标共识节点在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括所述目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态。所述目标共识节点确定所述至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息。所述目标共识节点基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送所述确定的共识消息。
Description
技术领域
本文件涉及区块链技术领域,尤其涉及一种区块链共识节点的宕机处理方法、数据持久化方法及硬件。
背景技术
目前,很多区块链系统基于拜占庭容错(BFT,Byzantine Fault-Tolerant)算法来实现共识。蜜獾拜占庭容错(HoneyBadgerBFT)作为一种新兴的异步BFT 共识机制,凭借不依赖于网络环境的时间条件的优点,具有极高的处理效率,在未来会发展成为主流的共识机制。
现阶段,HoneyBadgerBFT共识机制尚未对共识节点在共识过程中宕机作应对设计。
发明内容
本说明书实施例目的是提供一种区块链共识节点的宕机处理方法、数据持久化方法及硬件,能够保证共识过程在共识节点宕机的情况下也能够按照正确的逻辑执行,避免区块链出现区块分叉的现象。
为了实现上述目的,本说明书实施例是这样实现的:
第一方面,提供一种区块链共识节点的宕机处理方法,包括:
区块链的目标共识节点在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括所述目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态;
所述目标共识节点确定所述至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息;
所述目标共识节点基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送所述确定的共识消息。
第二方面,提供一种区块链共识节点的数据持久化方法,包括:
区块链的目标共识节点在目标共识视图的共识过程中,生成记录有所述目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态的共识持久化数据;
所述目标共识节点将所述共识持久化数据和所述目标共识视图关联存储在本地数据库中,从而若在目标共识视图的共识过程中宕机重启后,调取对应所述目标共识视图的共识持久化数据,以确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息,并基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
第三方面,提供一种区块链的共识节点,包括:
调取模块,在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态;
确定模块,确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息;
发送模块,基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
第四方面,提供一种区块链系统,包括多个共识节点,其中:
所述多个共识节点中任意目标共识节点若在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态;
所述目标共识节点确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息;
所述目标共识节点基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
基于本说明书实施例的方案,共识节点在共识过程中,生成记录有HoneyBadgerBFT共识机制下各个协议阶段完成状态的共识持久化数据,从而在宕机重启后,基于该共识持久化数据,重新发送各协议阶段恢复到对应的完成状态所需发送的共识消息,保证共识流程能够按照正确的逻辑执行,避免区块链出现区块分叉的现象。由于方案的出发点是保证全局的共识过程能够顺序执行,而不是如何让某个共识节点在宕机后恢复到共识,因此记录的共识持久化数据的数据量相对较小,对于HoneyBadgerBFT这种消息交互流程复杂、顺序有严格要求的共识机制,也能以较为简单的方式实现更高的鲁棒性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的区块链共识节点的宕机处理方法的第一种流程示意图。
图2为本说明书实施例提供的区块链共识节点的数据持久化方法的第一种流程示意图。
图3为本说明书实施例提供的区块链共识节点的数据持久化方法的第二种流程示意图。
图4为本说明书实施例提供的区块链共识节点的宕机处理方法的第二种流程示意图。
图5为本说明书实施例提供的区块链的共识节点的结构示意图。
图6为本说明书实施例提供的区块链系统的结构示意图。
图7为本说明书实施例提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
如前所述,HoneyBadgerBFT共识机制尚未对共识节点在共识过程中宕机作应对设计。一旦共识过程中共识节点重启,则可能会导致共识无法执行,甚至造成共识结果不一致而发生区块分叉的现象。在此背景下,本文件针对HoneyBadgerBFT共识机制,提出一种区块链共识节点的宕机处理方案。
为方便理解本说明书实施例提供的宕机处理方案,下面对HoneyBadgerBFT共识机制进行简单介绍。
目前HoneyBadgerBFT共识机制的流程主要包括:可靠广播传输RBC协议阶段和二进制协定BA协议阶段。
共识节点会先进入RBC协议阶段,基于RBC协议,向其他共识节点广播自己在本次共识视图中发起的共识提议。同样地,共识节点在RBC协议阶段也会接收其他节点在RBC协议阶段发送的共识提议。在对获得共识提议进行默克尔树校验后,进入BA协议阶段。其中,共识提议的默克尔树校验结果会影响到共识提议在BA协议阶段的初始BA值。
BA协议是一种随机不确定性的算法,包括共识节点之间通过初次交换共识提议的共识意见(BA值)、二次交换共识意见有利于趋同和最后抛币决定三个阶段实现共识。共识节点在BA协议阶段最终确定各个共识提议的共识结果。
在上述基础之上,本说明书实施例提供一种区块链共识节点的宕机处理方法。图1是本说明书实施例宕机处理方法的流程图。图1所示的方法可以由下文相对应的装置执行,包括如下步骤:
S102,区块链的目标共识节点在目标共识视图的共识过程中宕机重启后,调取目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,共识持久化数据包括目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态。
在本说明书实施例中,目标共识节点在目标共识视图的共识过程中,会生成记录有目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态的共识持久化数据。
其中,共识持久化数据记录的RBC协议阶段的完成状态可以但不限于包括有:目标共识节点本地已完成RBC协议的共识提议。
共识持久化数据记录的RBC协议阶段的完成状态可以但不限于包括有:目标共识节点本地已完成BA协议的共识提议以及该已完成BA协议的共识提议对应的BA取值。其中,目标共识节点为共识提议的配置BA取值为目标共识节点对共识提议的共识意见。如果BA取值为1,则表示目标共识节点赞成共识提议;反之,果如果BA取值为0,则表示目标共识节点反对共识提议。如前所述,在BA协议阶段,共识节点之间会交互多轮共识提议的BA取值,当共识节点的BA取值达成一致,则共识结束。
S104,目标共识节点确定至少一个协议阶段恢复到对应的共识持久化数据记录的完成状态所需发送的共识消息。
具体地,本步骤中,目标共识节点可以确定已完成RBC协议的共识提议和已完成BA协议的共识提议,从而进一步确定出在宕机前,基于RBC协议和BA协议的逻辑,针对共识提议所发送过的共识消息。
S106,目标共识节点基于蜜獾拜占庭共识机制的逻辑,向区块链的其他共识节点重新发送所述确定的共识消息。
这里需要说明的是,在HoneyBadgerBFT共识机制中,各共识节点在执行目标共识视图的共识过程中并不是同步的。其中一部分共识节点尚未结束RBC协议阶段,另一部分共识节点可能就已经进入BA协议阶段。对于任意共识节点,并不知道其他共识节点在共过程中状态。因此,目标共识节点宕机重启后,在本步骤中需要试探性地将至少一个协议阶段恢复到对应的共识持久化数据记录的完成状态所需发送的共识消息再重新发送一遍,从而保证整个共识过程能够按照正确的逻辑进行。此外, HoneyBadgerBFT共识机制会配置共识节点容错数,整个共识过程中,允许容错数的问题共识节点,只要确保当宕机的目标共识节点能够重新发送宕机前所发送过的共识消息,就可以保证共识过程中能够正确执行,至于目标共识节点后续是否恢复到共识过程,并非必需共识过程正确执行的必要条件。
基于图1所示的宕机处理方法可以知道,本说明书实施例的方案中,共识节点在共识过程中,生成记录有HoneyBadgerBFT共识机制下各个协议阶段完成状态的共识持久化数据,从而在宕机重启后,基于该共识持久化数据,重新发送各协议阶段恢复到对应的完成状态所需发送的共识消息,保证共识流程能够按照正确的逻辑执行,避免区块链出现区块分叉的现象。由于方案的出发点是保证全局的共识过程能够顺序执行,而不是如何让某个共识节点在宕机后恢复到共识,因此记录的共识持久化数据的数据量相对较小,对于HoneyBadgerBFT这种消息交互流程复杂、顺序有严格要求的共识机制,也能以较为简单的方式实现更高的鲁棒性。
此外,本说明书实施例还提供一种区块链共识节点的数据持久化方法,能够记录图1所述的宕机处理方法所使用的共识持久化数据。图2是本说明书实施例数据持久化方法的流程图,包括如下步骤:
S202,区块链的目标共识节点在目标共识视图的共识过程中,生成记录有目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态的共识持久化数据。
如前所述,所述蜜獾拜占庭共识机制下的至少一个协议阶段包括:可靠广播传输RBC协议阶段和二进制协定BA协议阶段。
其中,所述共识持久化数据记录的RBC协议阶段的完成状态包括:目标共识节点本地已完成RBC协议的共识提议。共识持久化数据记录的RBC协议阶段的完成状态包括:目标共识节点本地已完成BA协议的共识提议以及已完成BA协议的共识提议对应的BA取值。
S204,目标共识节点将共识持久化数据和目标共识视图关联存储在本地数据库中,从而若在目标共识视图的共识过程中宕机重启后,调取对应目标共识视图的共识持久化数据,以确定至少一个协议阶段恢复到对应的共识持久化数据记录的完成状态所需发送的共识消息,并基于蜜獾拜占庭共识机制的逻辑,向区块链的其他共识节点重新发送确定到的共识消息。
下面对本说明书实施例的区块链共识节点的数据持久化方法和宕机处理方法的主要流程进行详细介绍。
本说明书实施例的方案在HoneyBadgerBFT共识机制中,针对每个共识提议,引入记录在各协议阶段的完成状态的共识持久化数据,在N个共识节点参与共识的中,只需要做2N次持久化(RBC协议完成后的状态持久化1次+BA协议完成后的状态持久化1次)。在实际应用中,可以针对已完成某个协议的共识提议,记录该共识提议对应这个协议阶段的共识持久化数据,并用于排除法确定未完成协议的共识提议。
作为示例性介绍:
RBC协议的共识持久化数据的结构如下:
RBCStatus{
NodeId proposal_id_——发起共识提议的共识节点id;
View view_——共识视图的序号;
proposal_data_——共识提议的提议数据;
Bytes proposal_data_——共识提议的提议数据;
};
BA协议的共识持久化数据的结构如下:
BAStatus {
NodeId proposal_id_——发起共识提议的共识节点id;
View view_——共识视图的序号;
Int output_——BA取值;
};
结合图3,目标共识节点执行数据持久化的主要流程可以包括:
步骤一,目标共识节点生成共识提议,具体将收集到的交易构建成交易列表,交易列表为待共识数据。
步骤二, 目标共识节点执行RBC协议以广播待共识数据的共识提议。RBC协议流程这里不再举例赘述。
步骤三,目标共识节点针对完成RBC协议的共识提议,生成一个RBCStatus数据对象,并进行持久化。然后判断是否具有N-f个共识提议已完成RBC协议(f为共识节点容错数);是,则用1初始化这个共识提议的BA值;否,则用0初始化这个共识提议的BA值。具体的BA协议流程可参考现有技术,本文不在赘述。
步骤四,目标共识节点针对完成BA协议的共识提议,生成一个BAStatus数据对象,并进行持久化。
结合图4,目标共识节点在目标共识视图的共识过程中宕机重启后,可以执行以下流程:
步骤一,目标共识节点从本地数据库中读取目标共识视图(View)所对应的共识持久化数据。
步骤二,目标共识节点根据共识持久化数据,还原已记录的共识提议的RBCStatus和BAStatus。
步骤三,目标共识节点根据RBCStatus和BAStatus,确定本地发起的共识提议是否达成共识;是,则执行步骤四;否,则基于RBC协议再发送一次本地发起的共识提议,从而确保其他共识节点能够接收到宕机过的目标共识节点所发起的共识提议,之后执行步骤四。
步骤四,目标共识节点根据RBCStatus,确定在宕机前所有已完成RBC协议的共识提议,并将这些共识提议存放至集合X中。
步骤五,目标共识节点对集合X中的共识提议进行遍历,每遍历到一个共识提议,就基于RBC状态向其他共识节点广播这个共识提议的Ready消息(包含提议数据经过纠删码算法拆分后组成的默克尔树根)。
其他节点若针对该共识提议还未完成RBC协议时,如果能够接收到2f+1个该共识提议的Ready消息且消息中树根一致时,可以通过同步的方式获取该共识提议的数据。
步骤六,目标共识节点根据BAStatus,确定在宕机前所有已完成BA协议的共识提议,并将这些共识提议存放至集合Y中。
步骤七,目标共识节点对集合Y中的共识提议进行遍历,每遍历到一个共识提议,可以采用下述两种方式其他共识节点广播这个共识提议的BA取值。
方式一:
目标共识节点生成携带有这个共识提议BA取值的Bval和AUX消息,并向其他共识节点广播Bval和AUX消息。其中,目标共识节点通过向其他共识节点发送共识提议对应的Bval消息以表示目标共识节点针对该共识提议的初始BA取值,目标共识节点通过向其他共识节点发送共识提议对应的AUX消息以表示目标共识节点针对该共识提议进行投币确定的BA取值。
其他共识节点若未完成这个提议的BA协议时,可以按照BA协议的逻辑,根据目标共识节点发送的Bval消息和AUX消息,进行正常的BA协议流程。
方式二:
目标共识节点生成携带有这个共识提议的BA取值的Term消息,并向其他共识节点广播这个Term消息。其中,目标共识节点通过向其他共识节点发送共识提议对应的Term消息以表示目标共识节点针对该共识提议最终确定的BA取值。
其他共识节点若未完成这个提议的BA协议时,若接收到f+1个该共识提议的Term消息,且Term消息中的BA值相同,则可以将这个BA值直接确定为该共识提议的共识结果。在本说明书实施例中,Term消息是一种快速终止BA协议流程的优化设计。
以上是对本说明书实施例的方法的介绍。应理解,在不脱离本文上述原理基础之上,还可以进行适当的变化,这些变化也应视为本说明书实施例的保护范围。
与上述方法相对应地,如图5所示,本说明书实施例还提供一种区块链中的共识节点500,包括:
调取模块510,在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态。
确定模块520,确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息。
发送模块530,基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
基于图5所示的共识节点可以知道,本说明书实施例的方案中,共识节点在共识过程中,生成记录有HoneyBadgerBFT共识机制下各个协议阶段完成状态的共识持久化数据,从而在宕机重启后,基于该共识持久化数据,重新发送各协议阶段恢复到对应的完成状态所需发送的共识消息,保证共识流程能够按照正确的逻辑执行,避免区块链出现区块分叉的现象。由于方案的出发点是保证全局的共识过程能够顺序执行,而不是如何让某个共识节点在宕机后恢复到共识,因此记录的共识持久化数据的数据量相对较小,对于HoneyBadgerBFT这种消息交互流程复杂、顺序有严格要求的共识机制,也能以较为简单的方式实现更高的鲁棒性。
可选地,所述蜜獾拜占庭共识机制下的至少一个协议阶段包括:可靠广播传输RBC协议阶段和二进制协定BA协议阶段中的至少一个。
可选地,所述共识持久化数据记录的RBC协议阶段的完成状态包括:所述目标共识节点本地已完成RBC协议的共识提议。
其中,所述RBC协议阶段恢复到对应的共识持久化数据记录的完成状态所需发送的共识消息包括:已完成RBC协议的共识提议所对应的Ready消息,其中,所述目标共识节点通过向其他共识节点发送共识提议对应的Ready消息用于表示所述目标共识节点成功对该共识提议的默克尔树进行校验。
可选地,所述共识持久化数据记录的RBC协议阶段的完成状态包括:所述目标共识节点本地已完成BA协议的共识提议以及所述已完成BA协议的共识提议对应的BA取值。
其中,所述BA协议阶段恢复到对应的共识持久化数据记录的完成状态所需发送的共识消息包括:
所述已完成BA协议的共识提议对应的Bval消息和AUX消息,其中, Bval消息和AUX消息均携带有所述共识持久化数据记录的对应共识提议的BA取值,所述目标共识节点通过向其他共识节点发送共识提议对应的Bval消息以表示所述目标共识节点针对该共识提议的初始BA取值,所述目标共识节点通过向其他共识节点发送共识提议对应的AUX消息以表示所述目标共识节点针对该共识提议进行投币确定的BA取值。
或者,
所述已完成BA协议的共识提议对应的的Term消息,其中,Term消息携带有所述共识持久化数据记录的对应共识提议的BA取值,所述目标共识节点通过向其他共识节点发送共识提议对应的Term消息以表示所述目标共识节点针对该共识提议最终确定的BA取值。
此外,在上述基础之上,本说明书实施例的共识节点还包括:
提议发送模块,在所述目标共识节点从目标共识视图的共识过程中宕机重启后,基于所述共识持久化数据,确定本地发起的共识提议是否达成共识;若未达成共识,则基于所述RBC协议,将本地发起的共识提议发送至所述区块链的其他共识节点。
显然,本说明书实施例的共识节点可以作为上述图1所示的宕机处理方法的执行主体,因此能够实现该宕机处理方法在图1至图4所实现的功能。由于原理相同,本文不再赘述。
与上述宕机处理方法相对应地,本说明书实施例还提供一种区块链系统。图6是该区块链系统600的结构示意图,包括:多个共识节点610,其中:
所述多个共识节点610中的任意目标共识节点611中若在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点611在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括目标共识节点611在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态。
所述目标共识节点611确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息。
所述目标共识节点611基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点610重新发送确定到的共识消息。
本说明书实施例的区块链系统中,共识节点在共识过程中,生成记录有HoneyBadgerBFT共识机制下各个协议阶段完成状态的共识持久化数据,从而在宕机重启后,基于该共识持久化数据,重新发送各协议阶段恢复到对应的完成状态所需发送的共识消息,保证共识流程能够按照正确的逻辑执行,避免区块链出现区块分叉的现象。由于方案的出发点是保证全局的共识过程能够顺序执行,而不是如何让某个共识节点在宕机后恢复到共识,因此记录的共识持久化数据的数据量相对较小,对于HoneyBadgerBFT这种消息交互流程复杂、顺序有严格要求的共识机制,也能以较为简单的方式实现更高的鲁棒性。
显然,本说明书实施例的区块链系统可以作为上述图1所示的宕机处理方法的执行主体,因此能够实现该宕机处理方法在图1至图4所实现的功能。由于原理相同,本文不再赘述。
图7是本说明书的一个实施例电子设备的结构示意图。请参考图7,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成上述联盟链中的共识主节点。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态。
确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息;
基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
或者,处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成上述联盟链中的共识主节点。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
在目标共识视图的共识过程中,生成记录有目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态的共识持久化数据。
将所述共识持久化数据和所述目标共识视图关联存储在本地数据库中,从而若在目标共识视图的共识过程中宕机重启后,调取对应所述目标共识视图的共识持久化数据,以确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息,并基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
上述如本说明书图1所示实施例揭示的重启处理方法或者图2所示实施例揭示的数据持久化方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
应理解,本说明书实施例的电子设备可以实现上述宕机处理方法在图1所示的实施例的功能,或者,实现上述数据持久化方法在图2所示的实施例的功能。由于原理相同,本文不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
此外,本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令.
其中,上述指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下方法:
在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态。
确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息;
基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
或者,上述指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图2所示实施例的方法,并具体用于执行以下方法:
在目标共识视图的共识过程中,生成记录有目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态的共识持久化数据。
将所述共识持久化数据和所述目标共识视图关联存储在本地数据库中,从而若在目标共识视图的共识过程中宕机重启后,调取对应所述目标共识视图的共识持久化数据,以确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息,并基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
应理解,上述指令当被包括多个应用程序的便携式电子设备执行时,能够使上文所述的共识节点实现图1或图2所示实施例的功能,本文不再赘述。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。此外,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
Claims (12)
1.一种区块链共识节点的宕机处理方法,包括:
区块链的目标共识节点在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括所述目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态;
所述目标共识节点确定所述至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息;
所述目标共识节点基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送所述确定的共识消息。
2.根据权利要求1所述的方法,
所述蜜獾拜占庭共识机制下的至少一个协议阶段包括:可靠广播传输RBC协议阶段和二进制协定BA协议阶段中的至少一个。
3.根据权利要求2所述的方法,
所述共识持久化数据记录的RBC协议阶段的完成状态包括:所述目标共识节点本地已完成RBC协议的共识提议。
4.根据权利要求3所述的方法,
所述RBC协议阶段恢复到对应的共识持久化数据记录的完成状态所需发送的共识消息包括:已完成RBC协议的共识提议所对应的Ready消息,其中,所述目标共识节点通过向其他共识节点发送共识提议对应的Ready消息用于表示所述目标共识节点成功对该共识提议的默克尔树进行校验。
5.根据权利要求2所述的方法,
所述共识持久化数据记录的RBC协议阶段的完成状态包括:所述目标共识节点本地已完成BA协议的共识提议以及所述已完成BA协议的共识提议对应的BA取值。
6.根据权利要求5所述的方法,
所述BA协议阶段恢复到对应的共识持久化数据记录的完成状态所需发送的共识消息包括:
所述已完成BA协议的共识提议对应的Bval消息和AUX消息,其中, Bval消息和AUX消息均携带有所述共识持久化数据记录的对应共识提议的BA取值,所述目标共识节点通过向其他共识节点发送共识提议对应的Bval消息以表示所述目标共识节点针对该共识提议的初始BA取值,所述目标共识节点通过向其他共识节点发送共识提议对应的AUX消息以表示所述目标共识节点针对该共识提议进行投币确定的BA取值。
7.根据权利要求5所述的方法,
所述BA协议阶段恢复到对应的共识持久化数据记录的完成状态所需发送的共识消息包括:
所述已完成BA协议的共识提议对应的的Term消息,其中,Term消息携带有所述共识持久化数据记录的对应共识提议的BA取值,所述目标共识节点通过向其他共识节点发送共识提议对应的Term消息以表示所述目标共识节点针对该共识提议最终确定的BA取值。
8.根据权利要求2所述的方法,还包括:
所述目标共识节点在目标共识视图的共识过程中宕机重启后,基于所述共识持久化数据,确定本地发起的共识提议是否达成共识;
若未达成共识,则所述目标共识节点基于所述RBC协议,将本地发起的共识提议发送至所述区块链的其他共识节点。
9.一种区块链共识节点的数据持久化方法,包括:
区块链的目标共识节点在目标共识视图的共识过程中,生成记录有所述目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态的共识持久化数据;
所述目标共识节点将所述共识持久化数据和所述目标共识视图关联存储在本地数据库中,从而若在目标共识视图的共识过程中宕机重启后,调取对应所述目标共识视图的共识持久化数据,以确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息,并基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
10.根据权利要求9所述的方法,
所述蜜獾拜占庭共识机制下的至少一个协议阶段包括:可靠广播传输RBC协议阶段和二进制协定BA协议阶段;其中,所述共识持久化数据记录的RBC协议阶段的完成状态包括:所述目标共识节点本地已完成RBC协议的共识提议;所述共识持久化数据记录的RBC协议阶段的完成状态包括:所述目标共识节点本地已完成BA协议的共识提议以及所述已完成BA协议的共识提议对应的BA取值。
11.一种区块链的共识节点,包括:
调取模块,在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态;
确定模块,确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息;
发送模块,基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
12.一种区块链系统,包括多个共识节点,其中:
所述多个共识节点中的任意目标共识节点若在目标共识视图的共识过程中宕机重启后,调取所述目标共识节点在宕机前记录的对应所述目标共识视图的共识持久化数据,其中,所述共识持久化数据包括目标共识节点在蜜獾拜占庭共识机制下的至少一个协议阶段的完成状态;
所述目标共识节点确定至少一个协议阶段恢复到对应的所述共识持久化数据记录的完成状态所需发送的共识消息;
所述目标共识节点基于所述蜜獾拜占庭共识机制的逻辑,向所述区块链的其他共识节点重新发送确定到的共识消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010630012.8A CN111522696B (zh) | 2020-07-03 | 2020-07-03 | 区块链共识节点的宕机处理方法、数据持久化方法及硬件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010630012.8A CN111522696B (zh) | 2020-07-03 | 2020-07-03 | 区块链共识节点的宕机处理方法、数据持久化方法及硬件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522696A true CN111522696A (zh) | 2020-08-11 |
CN111522696B CN111522696B (zh) | 2020-12-29 |
Family
ID=71910121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010630012.8A Active CN111522696B (zh) | 2020-07-03 | 2020-07-03 | 区块链共识节点的宕机处理方法、数据持久化方法及硬件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522696B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433885A (zh) * | 2020-11-19 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 区块链共识处理方法及装置、电子设备、存储介质 |
CN113157521A (zh) * | 2021-04-21 | 2021-07-23 | 杭州云象网络技术有限公司 | 用于区块链全生命周期的监控方法和监控系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107360206A (zh) * | 2017-03-29 | 2017-11-17 | 阿里巴巴集团控股有限公司 | 一种区块链共识方法、设备及系统 |
CN107368507A (zh) * | 2017-03-28 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 一种基于区块链的共识方法及装置 |
CN107423152A (zh) * | 2017-04-24 | 2017-12-01 | 杭州趣链科技有限公司 | 一种区块链共识节点自动恢复方法 |
CN110569309A (zh) * | 2019-09-17 | 2019-12-13 | 上海保险交易所股份有限公司 | 用于实现区块链的设备、方法、系统以及介质 |
CN110673914A (zh) * | 2019-09-24 | 2020-01-10 | 支付宝(杭州)信息技术有限公司 | 一种区块链共识的视图切换方法及区块链系统 |
US10615985B2 (en) * | 2018-12-13 | 2020-04-07 | Alibaba Group Holding Limited | Achieving consensus among network nodes in a distributed system |
-
2020
- 2020-07-03 CN CN202010630012.8A patent/CN111522696B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368507A (zh) * | 2017-03-28 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 一种基于区块链的共识方法及装置 |
CN107360206A (zh) * | 2017-03-29 | 2017-11-17 | 阿里巴巴集团控股有限公司 | 一种区块链共识方法、设备及系统 |
CN107423152A (zh) * | 2017-04-24 | 2017-12-01 | 杭州趣链科技有限公司 | 一种区块链共识节点自动恢复方法 |
US10615985B2 (en) * | 2018-12-13 | 2020-04-07 | Alibaba Group Holding Limited | Achieving consensus among network nodes in a distributed system |
CN110569309A (zh) * | 2019-09-17 | 2019-12-13 | 上海保险交易所股份有限公司 | 用于实现区块链的设备、方法、系统以及介质 |
CN110673914A (zh) * | 2019-09-24 | 2020-01-10 | 支付宝(杭州)信息技术有限公司 | 一种区块链共识的视图切换方法及区块链系统 |
Non-Patent Citations (1)
Title |
---|
ANDREW MILLER等: "The Honey Badger of BFT Protocols", 《HTTPS://WWW.RESEARCHGATE.NET/PUBLICATION/309451430_THE_HONEY_BADGER_OF_BFT_PROTOCOLS》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433885A (zh) * | 2020-11-19 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 区块链共识处理方法及装置、电子设备、存储介质 |
CN113157521A (zh) * | 2021-04-21 | 2021-07-23 | 杭州云象网络技术有限公司 | 用于区块链全生命周期的监控方法和监控系统 |
CN113157521B (zh) * | 2021-04-21 | 2023-06-06 | 杭州云象网络技术有限公司 | 用于区块链全生命周期的监控方法和监控系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111522696B (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111526219B (zh) | 一种联盟链的共识方法及联盟链系统 | |
CN111522800B (zh) | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 | |
CN110659988B (zh) | 区块链共识与执行的并行处理方法、装置和电子设备 | |
EP3934162B1 (en) | Blockchain consensus method and device and electronic equipment | |
CN111259078B (zh) | 区块链共识方法、装置、计算机设备和存储介质 | |
CN111522696B (zh) | 区块链共识节点的宕机处理方法、数据持久化方法及硬件 | |
CN111522697B (zh) | 区块链共识节点的重启处理方法、共识节点及区块链系统 | |
CN108765159B (zh) | 一种基于区块链的上链与状态处理方法、装置及互联系统 | |
CN111523153B (zh) | 一种区块生成方法及共识节点 | |
CN111461887A (zh) | 一种区块链的共识处理方法、装置和电子设备 | |
CN111679936A (zh) | 一种区块链网络分叉自动恢复方法、装置及系统 | |
CN111523901B (zh) | 基于拜占庭容错算法的区块链的共识方法、装置及系统 | |
CN114584312A (zh) | 一种共识方法、区块链系统和共识节点 | |
CN114553434A (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113852691A (zh) | 一种区块链的共识方法、共识节点及电子设备 | |
CN114529413A (zh) | 一种区块链交易的处理方法、区块链节点及电子设备 | |
Mostéfaoui et al. | Randomized k-set agreement in crash-prone and Byzantine asynchronous systems | |
CN113761069A (zh) | 一种区块链的共识方法、系统、节点及电子设备 | |
CN114936253A (zh) | 区块链的共识方法及装置、电子设备、存储介质 | |
CN115409507A (zh) | 区块处理方法、区块处理装置、计算机设备及存储介质 | |
CN115988001A (zh) | 区块链系统的共识投票处理方法、装置、设备以及介质 | |
CN110570171A (zh) | 交易池节点同步方法、电子设备和计算机可读存储介质 | |
CN114529414A (zh) | 一种区块链的交易处理方法、区块链节点及电子设备 | |
CN115174090A (zh) | 区块链共识方法及装置 | |
CN111523900A (zh) | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40035818 Country of ref document: HK |