CN111522697A - 区块链共识节点的重启处理方法、共识节点及区块链系统 - Google Patents

区块链共识节点的重启处理方法、共识节点及区块链系统 Download PDF

Info

Publication number
CN111522697A
CN111522697A CN202010630197.2A CN202010630197A CN111522697A CN 111522697 A CN111522697 A CN 111522697A CN 202010630197 A CN202010630197 A CN 202010630197A CN 111522697 A CN111522697 A CN 111522697A
Authority
CN
China
Prior art keywords
consensus
target
target consensus
node
consensus node
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
Application number
CN202010630197.2A
Other languages
English (en)
Other versions
CN111522697B (zh
Inventor
李帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202011290257.7A priority Critical patent/CN112286731A/zh
Priority to CN202010630197.2A priority patent/CN111522697B/zh
Publication of CN111522697A publication Critical patent/CN111522697A/zh
Application granted granted Critical
Publication of CN111522697B publication Critical patent/CN111522697B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic 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)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (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为本说明书实施例提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
如前所述,HoneyBadgerBFT共识机制尚未对共识节点在共识过程中宕机作应对设计。一旦共识过程中共识节点重启,则可能会导致共识无法执行,甚至造成共识结果不一致而发生区块分叉的现象。在此背景下,本文件针对HoneyBadgerBFT共识机制,提出一种区块链共识节点的重启处理方案。为此,本说明书提供一种解决上述问题的技术方案。
为方便理解本说明书实施例提供的宕机处理方案,下面对HoneyBadgerBFT共识机制进行简单介绍。
目前HoneyBadgerBFT共识机制的流程主要包括:可靠广播传输RBC协议阶段和二进制协定BA协议阶段。
共识节点会先进入RBC协议阶段,基于RBC协议,向其他共识节点广播自己在本次共识视图中发起的共识提议。同样地,共识节点在RBC协议阶段也会接收其他节点在RBC协议阶段发送的共识提议。在对获得共识提议进行默克尔树校验后,进入BA协议阶段。其中,共识提议的默克尔树校验结果会影响到共识提议在BA协议阶段的初始BA值。
BA协议是一种随机不确定性的算法,包括共识节点之间通过初次交换共识提议的共识意见(BA值)、二次交换共识意见有利于趋同和最后抛币决定三个阶段实现共识。共识节点在BA协议阶段最终确定各个共识提议的共识结果。
在上述基础之上,本说明书实施例提供一种区块链共识节点的重启处理方法。图1是本说明书实施例重启处理方法的流程图。图1所示的方法可以由下文相对应的装置执行,包括如下步骤:
S102,区块链的目标共识节点在目标共识的过程中重启后,调取目标共识节点在重启前批量记录的目标共识的共识持久化数据,其中,共识持久化数据包括目标共识节点在蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息。
在本说明书实施例中,目标共识节点可以设置有持久化缓存队列,该持久化缓存队列存放有目标共识节点针对目标共识生成的共识持久化数据。目标共识节点在执行目标共识的过程中,可以基于预设周期,将持久化缓存队列中的共识持久化数据进行本地写入并清空所述持久化缓存队列,或者,目标共识节点也可以在持久化缓存队列中的共识持久化数据积累到预设数据量阈值时,将持久化缓存队列中的共识持久化数据进行本地写入并清空持久化缓存队列。
具体地,共识持久化数据记录的RBC协议阶段的收发信息可以但不限于包括:epoch消息,区块链的共识节点在RBC协议阶段基于epoch消息广播自己的提议数据;ready消息,区块链的共识节点通过向其他共识节点发送共识提议对应的Ready消息以表示成功对该共识提议的默克尔树进行校验。
共识持久化数据记录的RBC协议阶段的收发信息可以但不限于包括:BVAL消息,用于确定目标共识的提议数据的初始BA值;AUX消息,用于确定目标共识的提议数据的中间BA值;Term消息,用于确定目标共识的提议数据的最终BA值。
这里需要说明的是,对于RBC协议阶段,BA的初始值、中间值和最终值是非确定性的结果,为了保证重启后恢复到正确定的共识状态,共识持久化数据还记录有RBC协议阶段BVAL消息、AUX消息和Term消息中至少一者的决策结果,也就是基于BVAL消息所确定的提议数据的初始BA值、基于AUX消息所确定的提议数据的中间BA值和基于Term消息所确定的提议数据的最终值。
S104,目标共识节点基于共识持久化数据中的目标共识节点在至少一个协议阶段所收发的共识消息,确定目标共识节点针对目标共识的完成状态。
应理解,目标共识节点在获得重启前针对目标共识所收发的共识消息后,可以按照收发的共识消息虚拟执行一遍目标共识,从而确定重启前针对目标共识的完成状态。
S106,目标共识节点基于蜜獾拜占庭共识机制的逻辑,恢复至目标共识在重启前的完成状态。
应理解,目标共识节点在恢复后,可以与其他共识节点继续目标共识的过程,以保证目标共识能够顺利执行。
基于图1所示的重启处理方法可以知道,本说明书实施例的方案中,共识节点在目标共识的过程中,批量记录有在HoneyBadgerBFT共识机制下各个协议阶段所收发的共识消息的共识持久化数据,从而在宕机重启后,基于该共识持久化数据,恢复至重启前针对目标共识的完成状态,进而能够照正确的逻辑执行目标共识,可避免区块链出现区块分叉的现象。由于方案采用了批量记录的方式存储共识持久化数据,对于HoneyBadgerBFT这种消息交互流程复杂的共识机制,可以大幅较少写操作的次数以及存储开销。
下面对本说明书实施例的区块链共识节点的重启处理方法的主要流程进行详细介绍。
本说明书实施例的方案在HoneyBadgerBFT共识机制中,针对每个共识提议,引入记录在各协议阶段收发共识消息的共识持久化数据。
在HoneyBadgerBFT共识机制中,各共识节点执行目标共识的过程中并不是同步的。其中一部分共识节点尚未结束RBC协议阶段,另一部分共识节点可能就已经进入BA协议阶段。对于任意共识节点,并不知道其他共识节点在共过程中的完成状态。因此,当目标共识节点在目标共识的过程中发生重启后,一是要保证自身恢复至重启前目标共识的完成状态,二是要保证目标共识的重启不会影响其他共识节点执行目标共识。
为此,本说明书实施例在目标共识节点设置以下内存队列:
持久化缓存队列persistent_queue,存放有所述目标共识节点针对所述目标共识生成的共识持久化数据。
发送队列send_queue,存放有目标共识节点在所述目标共识中待发送且尚未发送过的RBC和BA协议阶段的共识消息。
重发送队列resend_queue,存放有目标共识节点在所述目标共识中需要重新发送的共识消息。
响应队列receipt_queue,存放有目标共识节点在所述目标共识中待发送的确认响应消息。
在执行目标共识的过程中:
针对persistent_queue,目标共识节点每发送persistent_queue中的任意第一目标共识消息后,则将该第一目标共识消息从persistent_queue迁移至resend_queue。
针对resend_queue,目标共识节点周期性对resend_queue中的共识消息进行重发送,并在接收到其他共识节点基于重发送队列中的任意第二目标共识消息所发送的确认响应消息后,将第二目标共识消息从重发送队列中移除。
针对receipt_queue,目标共识节点在接收到其他共识节点发送的共识消息后,生成对应的确认响应消息,并放入至receipt_queue,等待放发送至其他共识节点。
针对persistent_queue,目标共识节点将从resend_queue中移除的共识消息、从其他共识节点接收到的共识消息,和BA协议阶段所确定的BA值决策结果作为共识持久化数据以存放至persistent_queue。同时,目标共识节点按照预设周期,将持久化缓存队列中的共识持久化数据进行本地写入并清空所述持久化缓存队列,或者,在持久化缓存队列中的共识持久化数据积累到预设数据量阈值时,将持久化缓存队列中的共识持久化数据进行本地写入并清空持久化缓存队列。
基于上述设计,通过persistent_queue记录的共识持久化数据包括有目标共识节点已发送的并且其他共识节点成功接收到的共识消息。目标共识节点在重启后,可以通过共识持久化数据反向推出自身尚未发送的共识消息以及目标共识节点已发送但其他共识节点未反馈是否接收到的共识消息,并将反向推出的共识消息试探性地重新发送一遍,以保证其他共识节点够按照正确的逻辑执行目标共识。
而对于目标共识节点来讲,也可以对通过persistent_queue记录的的自身已成功发送至其他共识节点的共识消息、从其他共识节点接收到的共识消息和BA协议阶段所确定的BA值决策结果,成功恢复至重启前的目标共识的完成状态,从而继续参与执行目标共识。
为方便理解,假设目标共识节点在重启前刚进入BA协议阶段,通过Bval消息将自己针对各提议数据的初始BA值发送至其他共识节点,并且未接收到其他共识节点发送的携带有其他共识节点针对各提议数据的初始BA值的Bval消息。目标共识节点在重启后,从本记录的共识持久化数据确定出在重启前只有自己发送过Bval消息,此时可以确定自身在重启前进入BA协议阶段交互Bval消息的环节,并恢复到对应的环节以等待接收其他共识节点发送Bval消息,从而后续可以按照确定的BA协议逻辑,根据各共识节点在Bval消息中所提议的初始BA值,确定提议数据的中间BA值。
以上是对本说明书实施例的方法的介绍。应理解,在不脱离本文上述原理基础之上,还可以进行适当的变化,这些变化也应视为本说明书实施例的保护范围。比如,由于目标共识节点并不了解其他共识节点针对目标共识的完成状态,因此在重启恢复后,无法确定本轮目标共识中自己的提议数据是否被其他共识节点成功接收。为了避免这一问题发生,本说明书实施例中,目标共识节点在重启后,只要确定重启前针对目标共识的完成状态指示自己在目标共识中发起的提议数据未达成共识,就要将本轮目标共识中自己的提议数据重新发送至其他共识节点。
与上述重启处理方法相对应地,本说明书实施例还提供一种区块链中的共识节点。图2是本说明书实施例共识节点200的结构示意图,包括:
调取模块210,在目标共识的过程中重启后,调取在重启前记录的所述目标共识的共识持久化数据,其中,所述共识持久化数据包括在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息;
确定模块220,基于所述共识持久化数据中的在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息,确定针对所述目标共识的完成状态;
恢复模块230,基于所述蜜獾拜占庭共识机制的逻辑,恢复至重启前的针对所述目标共识的完成状态。
本说明书实施例的共识节点在目标共识的过程中,批量记录有在HoneyBadgerBFT共识机制下各个协议阶段所收发的共识消息的共识持久化数据,从而在宕机重启后,基于该共识持久化数据,恢复至重启前针对目标共识的完成状态,进而能够照正确的逻辑执行目标共识,可避免区块链出现区块分叉的现象。由于方案采用了批量记录的方式存储共识持久化数据,对于HoneyBadgerBFT这种消息交互流程复杂的共识机制,可以大幅较少写操作的次数以及存储开销。
可选地,所述共识节点设置有:
持久化缓存队列,存放有所述目标共识节点针对所述目标共识生成的共识持久化数据。其中,共识节点还包括:
持久化执行模块,在执行目标共识的过程中,基于预设周期,将所述持久化缓存队列中的共识持久化数据进行本地写入并清空所述持久化缓存队列,或者,所述目标共识节点在所述持久化缓存队列中的共识持久化数据积累到预设数据量阈值时,将所述持久化缓存队列中的共识持久化数据进行本地写入并清空所述持久化缓存队列。
可选地,所述共识持久化数据还包括:所述目标共识节点接收到的其他共识节点基于所述目标共识节点发送的共识消息所反馈的确认响应消息。对应地,所述确定模块220还基于其他共识节点发送的确认响应消息,确定所述目标共识针对所述目标共识的完成状态。
可选地,所述目标共识节点还设置有:
发送队列,存放有目标共识节点在所述目标共识中待发送且尚未发送过的共识消息。
重发送队列,存放有目标共识节点在所述目标共识中需要重新发送的共识消息。
响应队列,存放有目标共识节点在所述目标共识中待发送的确认响应消息。
对应地,持久化执行模块还用于:在发送所述待发送队列中的任意第一目标共识消息后,将所述第一目标共识消息从待发送队列迁移至重发送队列;在接收到其他共识节点基于所述重发送队列中的任意第二目标共识消息所发送的确认响应消息后,将所述第二目标共识消息从所述重发送队列中移除。
其中,所述共识持久化数据包括的所述目标共识节点在所述蜜獾拜占庭共识机制的至少一个协议阶段所发送的共识消息为所述目标共识节点从所述重发送队列中移除的共识消息。
可选地,所述蜜獾拜占庭共识机制的至少一个协议阶段包括:可靠广播传输RBC协议阶段和二进制协定BA协议阶段中的至少一个。
若所述蜜獾拜占庭共识机制的至少一个协议阶段包括有所述BA协议阶段,则所述共识持久化数据还包括:所述目标共识在所述BA协议阶段,基于BVAL消息、AUX消息和Term消息中的至少一者所确定的决策结果,其中,所述Bval消息用于确定所述目标共识的提议数据的初始BA值,所述AUX消息用于确定所述目标共识的提议数据的中间BA值,所述Term消息用于确定所述目标共识的提议数据的最终BA值。
可选地,所述持久化执行模块还用于若确定到的所述目标共识针对所述目标共识的完成状态指示所述目标共识节点在所述目标共识中发起的提议数据未达成共识,则向其他共识节点重新发送所述目标共识在所述目标共识中所发起的提议数据。
显然,本说明书实施例的共识节点可以作为上述图1所示的重启处理方法的执行主体,因此能够实现该重启处理方法在图1所实现的功能。由于原理相同,本文不再赘述。
与上述重启处理方法相对应地,本说明书实施例还提供一种区块链系统。图3是该区块链系统300的结构示意图,包括:多个共识节点310,其中:
所述多个共识节点310中的任意目标共识节点311在目标共识的过程中重启后,调取所述目标共识节点311在重启前记录的所述目标共识的共识持久化数据,其中,所述共识持久化数据包括所述目标共识节点311在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息。
所述目标共识节点311基于所述共识持久化数据中的所述目标共识节点311在所述至少一个协议阶段所收发的共识消息,确定所述目标共识节点311针对所述目标共识的完成状态。
所述目标共识节点311基于所述蜜獾拜占庭共识机制的逻辑,恢复至重启前的针对所述目标共识的完成状态。
基于本说明书实施例的区块链系统,共识节点在目标共识的过程中,批量记录有在HoneyBadgerBFT共识机制下各个协议阶段所收发的共识消息的共识持久化数据,从而在宕机重启后,基于该共识持久化数据,恢复至重启前针对目标共识的完成状态,进而能够照正确的逻辑执行目标共识,可避免区块链出现区块分叉的现象。由于方案采用了批量记录的方式存储共识持久化数据,对于HoneyBadgerBFT这种消息交互流程复杂的共识机制,能以较少的写操作次数实现更高的鲁棒性。
显然,本说明书实施例的区块链系统可以作为上述图1所示的重启处理方法的执行主体,因此能够实现该重启处理方法在图1中所实现的功能。由于原理相同,本文不再赘述。
图4是本说明书的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成上述联盟链中的共识主节点。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
在目标共识的过程中重启后,调取在重启前记录的所述目标共识的共识持久化数据,其中,所述共识持久化数据包括在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息。
基于所述共识持久化数据中的在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息,确定针对所述目标共识的完成状态。
基于所述蜜獾拜占庭共识机制的逻辑,恢复至重启前的针对所述目标共识的完成状态。
基于本说明书实施例的电子设备,共识节点在目标共识的过程中,批量记录有在HoneyBadgerBFT共识机制下各个协议阶段所收发的共识消息的共识持久化数据,从而在宕机重启后,基于该共识持久化数据,恢复至重启前针对目标共识的完成状态,进而能够照正确的逻辑执行目标共识,可避免区块链出现区块分叉的现象。由于方案采用了批量记录的方式存储共识持久化数据,对于HoneyBadgerBFT这种消息交互流程复杂的共识机制,可以大幅较少写操作的次数以及存储开销。
上述如本说明书图1所示实施例揭示的重启处理方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
应理解,本说明书实施例的电子设备可以实现上述重启处理方法在图1所示的实施例的功能,本文不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
此外,本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下方法:
在目标共识的过程中重启后,调取在重启前记录的所述目标共识的共识持久化数据,其中,所述共识持久化数据包括在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息。
基于所述共识持久化数据中的在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息,确定针对所述目标共识的完成状态。
基于所述蜜獾拜占庭共识机制的逻辑,恢复至重启前的针对所述目标共识的完成状态。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。此外,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。

Claims (10)

1.一种区块链共识节点的重启处理方法,包括:
区块链的目标共识节点在目标共识的过程中重启后,调取所述目标共识节点在重启前批量记录的所述目标共识的共识持久化数据,其中,所述共识持久化数据包括所述目标共识节点在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息;
所述目标共识节点基于所述共识持久化数据中的所述目标共识节点在所述至少一个协议阶段所收发的共识消息,确定所述目标共识节点针对所述目标共识的完成状态;
所述目标共识节点基于所述蜜獾拜占庭共识机制的逻辑,恢复至在重启前的所述目标共识的完成状态。
2.根据权利要求1所述的方法,所述目标共识节点设置有:
持久化缓存队列,存放有所述目标共识节点针对所述目标共识生成的共识持久化数据;
其中,在所述目标共识节点执行目标共识的过程中,所述方法还包括:
所述目标共识节点基于预设周期,将所述持久化缓存队列中的共识持久化数据进行本地写入并清空所述持久化缓存队列,或者,所述目标共识节点在所述持久化缓存队列中的共识持久化数据积累到预设数据量阈值时,将所述持久化缓存队列中的共识持久化数据进行本地写入并清空所述持久化缓存队列。
3.根据权利要求1所述的方法,所述共识持久化数据还包括:
所述目标共识节点接收到的其他共识节点基于所述目标共识节点发送的共识消息所反馈的确认响应消息;
其中,在所述目标共识节点执行目标共识的过程中,所述方法还包括:
所述目标共识节点还基于其他共识节点发送的确认响应消息,确定所述目标共识针对所述目标共识的完成状态。
4.根据权利要求3所述的方法,所述目标共识节点还设置有:
发送队列,存放有目标共识节点在所述目标共识中待发送且尚未发送过的共识消息;
重发送队列,存放有目标共识节点在所述目标共识中需要重新发送的共识消息;
响应队列,存放有目标共识节点在所述目标共识中待发送的确认响应消息;
其中,在所述目标共识节点执行目标共识的过程中,所述方法还包括:
所述目标共识节点在发送所述待发送队列中的任意第一目标共识消息后,将所述第一目标共识消息从待发送队列迁移至重发送队列;
所述目标共识节点在接收到其他共识节点基于所述重发送队列中的任意第二目标共识消息所发送的确认响应消息后,将所述第二目标共识消息从所述重发送队列中移除。
5.根据权利要求4所述的方法,
所述共识持久化数据包括的所述目标共识节点在所述蜜獾拜占庭共识机制的至少一个协议阶段所发送的共识消息为所述目标共识节点从所述重发送队列中移除的共识消息。
6.根据权利要求1-5中任一项所述的方法,
所述蜜獾拜占庭共识机制的至少一个协议阶段包括:可靠广播传输RBC协议阶段和二进制协定BA协议阶段中的至少一个。
7.根据权利要求6所述的方法,若所述蜜獾拜占庭共识机制的至少一个协议阶段包括有所述BA协议阶段,则所述共识持久化数据还包括:
所述目标共识在所述BA协议阶段,基于BVAL消息、AUX消息和Term消息中的至少一者所确定的决策结果,其中,所述Bval消息用于确定所述目标共识的提议数据的初始BA值,所述AUX消息用于确定所述目标共识的提议数据的中间BA值,所述Term消息用于确定所述目标共识的提议数据的最终BA值。
8.根据权利要求1-5中任一项所述的方法,还包括:
若确定到的所述目标共识节点针对所述目标共识的完成状态指示所述目标共识节点在所述目标共识中发起的提议数据未达成共识,则所述目标共识节点向其他共识节点重新发送所述目标共识在所述目标共识中所发起的提议数据。
9.一种区块链的共识节点,包括:
调取模块,在目标共识的过程中重启后,调取在重启前记录的所述目标共识的共识持久化数据,其中,所述共识持久化数据包括在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息;
确定模块,基于所述共识持久化数据中的在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息,确定针对所述目标共识的完成状态;
恢复模块,基于所述蜜獾拜占庭共识机制的逻辑,恢复至重启前的针对所述目标共识的完成状态。
10.一种区块链系统,包括多个共识节点,其中:
所述多个共识节点中的任意目标共识节点在目标共识的过程中重启后,调取所述目标共识节点在重启前记录的所述目标共识的共识持久化数据,其中,所述共识持久化数据包括所述目标共识节点在所述蜜獾拜占庭共识机制的至少一个协议阶段所收发的共识消息;
所述目标共识节点基于所述共识持久化数据中的所述目标共识节点在所述至少一个协议阶段所收发的共识消息,确定所述目标共识节点针对所述目标共识的完成状态;
所述目标共识节点基于所述蜜獾拜占庭共识机制的逻辑,恢复至重启前的针对所述目标共识的完成状态。
CN202010630197.2A 2020-07-03 2020-07-03 区块链共识节点的重启处理方法、共识节点及区块链系统 Active CN111522697B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011290257.7A CN112286731A (zh) 2020-07-03 2020-07-03 区块链共识节点的重启处理方法、共识节点及区块链系统
CN202010630197.2A CN111522697B (zh) 2020-07-03 2020-07-03 区块链共识节点的重启处理方法、共识节点及区块链系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010630197.2A CN111522697B (zh) 2020-07-03 2020-07-03 区块链共识节点的重启处理方法、共识节点及区块链系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202011290257.7A Division CN112286731A (zh) 2020-07-03 2020-07-03 区块链共识节点的重启处理方法、共识节点及区块链系统

Publications (2)

Publication Number Publication Date
CN111522697A true CN111522697A (zh) 2020-08-11
CN111522697B CN111522697B (zh) 2020-10-09

Family

ID=71911953

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202011290257.7A Pending CN112286731A (zh) 2020-07-03 2020-07-03 区块链共识节点的重启处理方法、共识节点及区块链系统
CN202010630197.2A Active CN111522697B (zh) 2020-07-03 2020-07-03 区块链共识节点的重启处理方法、共识节点及区块链系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202011290257.7A Pending CN112286731A (zh) 2020-07-03 2020-07-03 区块链共识节点的重启处理方法、共识节点及区块链系统

Country Status (1)

Country Link
CN (2) CN112286731A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112055067A (zh) * 2020-08-28 2020-12-08 杭州复杂美科技有限公司 节点连接方法、设备和存储介质
CN112433885A (zh) * 2020-11-19 2021-03-02 腾讯科技(深圳)有限公司 区块链共识处理方法及装置、电子设备、存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113794694B (zh) * 2021-08-25 2022-08-26 清华大学 一种基于可靠广播的二元共识方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368507A (zh) * 2017-03-28 2017-11-21 阿里巴巴集团控股有限公司 一种基于区块链的共识方法及装置
CN110569309A (zh) * 2019-09-17 2019-12-13 上海保险交易所股份有限公司 用于实现区块链的设备、方法、系统以及介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368507A (zh) * 2017-03-28 2017-11-21 阿里巴巴集团控股有限公司 一种基于区块链的共识方法及装置
CN110569309A (zh) * 2019-09-17 2019-12-13 上海保险交易所股份有限公司 用于实现区块链的设备、方法、系统以及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANDREW MILLER 等: "The Honey Badger of BFT Protocols", 《PROCEEDINGS OF THE 2016 ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112055067A (zh) * 2020-08-28 2020-12-08 杭州复杂美科技有限公司 节点连接方法、设备和存储介质
CN112055067B (zh) * 2020-08-28 2023-04-18 杭州复杂美科技有限公司 节点连接方法、设备和存储介质
CN112433885A (zh) * 2020-11-19 2021-03-02 腾讯科技(深圳)有限公司 区块链共识处理方法及装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN111522697B (zh) 2020-10-09
CN112286731A (zh) 2021-01-29

Similar Documents

Publication Publication Date Title
CN111522697B (zh) 区块链共识节点的重启处理方法、共识节点及区块链系统
JP6794551B2 (ja) トランザクション情報を送信するためのおよびコンセンサス検証のための方法およびデバイス
CN107391320B (zh) 一种共识方法及装置
US5396613A (en) Method and system for error recovery for cascaded servers
CN111522800A (zh) 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统
KR100599912B1 (ko) 복제 서버용 프로토콜
US7487246B2 (en) Gapless delivery and durable subscriptions in a content-based publish/subscribe system
CN102523243B (zh) 在简单拓扑的分布式系统中提供快速标头选择的系统和方法
CN114500552B (zh) 边缘计算场景下的云边消息可靠性传输方法及装置
CN111522696B (zh) 区块链共识节点的宕机处理方法、数据持久化方法及硬件
US7079535B2 (en) Method and apparatus for real-time fault-tolerant multicasts in computer networks
CN109684128B (zh) 消息中间件的集群整体故障恢复方法、服务器及存储介质
CN111880947B (zh) 一种数据传输方法及装置
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
CN110287159B (zh) 一种文件处理方法及装置
CN109905459B (zh) 一种数据传输方法及装置
CN114257492B (zh) 智能网卡的故障处理方法、装置、计算机设备和介质
CN111858177B (zh) 进程间通信的异常修复方法、装置、电子设备及存储介质
CN114285903A (zh) 请求处理方法、装置、系统及电子设备
US9509780B2 (en) Information processing system and control method of information processing system
CN115220877B (zh) 一种业务处理方法及装置
CN111478755B (zh) 异步数据通讯方法、介质、设备及异步数据通讯系统
CN115002020B (zh) 基于ospf的数据处理方法及装置
JP2645134B2 (ja) 復旧信号リンクへのメッセージ送出制御方式
CN117762652A (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: 40036323

Country of ref document: HK