共识系统停机时间恢复技术方案

技术编号:23474853 阅读:16 留言:0更新日期:2020-03-06 15:32
用于共识系统停机时间恢复的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。所述方法之一包括:从主节点获取预准备消息;将指示接受所述预准备消息的准备消息组播到所述主节点加其他(N‑2)个备份节点中的至少一些节点;分别从(Q‑1)个或更多个所述备份节点获得(Q‑1)个或更多个准备消息;存储所述预准备消息和所述(Q‑1)个或更多个准备消息;向所述主节点加其他备份节点中的至少一些节点组播提交消息,所述提交消息指示该备份节点同意所述(Q‑1)个或更多个准备消息;分别从所述主节点加所述备份节点中的Q个或更多个节点获得Q个或更多个提交消息,所述Q个或更多个提交消息各自指示相应节点同意(Q‑1)个或更多个准备消息。

Consensus system downtime recovery

【技术实现步骤摘要】
【国外来华专利技术】共识系统停机时间恢复
本申请一般涉及用于共识系统和方法的方法和设备,尤其涉及实用拜占庭容错(PBFT)共识系统和方法。
技术介绍
实用拜占庭容错(PBFT)是一种可以在分布式系统如区块链系统中实现的共识机制。PBFT共识机制使得分布式系统能够在安全性和活跃性方面达成足够的共识,尽管系统的某些节点可能发生故障(例如,由于网络连接不良或以其他方式变得有故障)或向其他对等方传播不正确的信息(例如,恶意行动)。这种机制的目的是通过减轻无功能节点对系统的正确功能的影响以及对由系统中功能节点(例如,无故障和诚实节点)达成的共识的影响来抵御灾难性的系统故障。PBFT共识机制侧重于通过假设存在独立节点故障和由特定并独立的节点传播的操纵消息来提供容忍拜占庭故障(例如,无功能节点)的实用拜占庭状态机复制。例如,在这种PBFT共识机制中,区块链系统中的所有节点按顺序排序,其中一个节点是主节点(也称为领导节点或主控节点),其他节点称为备份节点(也称为追随者节点)。系统内的所有节点彼此通信,并且目标是让所有诚实节点对系统状态达成一致/共识。例如,为了使PBFT共识机制起作用,假设在给定的漏洞窗口中,区块链系统中的无功能节点的数量不能同时等于或超过系统中总节点数的三分之一。只要至多F个节点同时是无功能节点,该方法就有效地提供活跃性和安全性。换句话说,在一些实现中,PBFT共识机制可以容忍的无功能节点的数量F等于(N-1)/3向下取最接近整数,其中N表示系统中的节点总数。在一些实现中,实现PBFT共识机制的区块链系统可以处理多达F个拜占庭故障,其中总共存在至少3F+1个节点。PBFT共识机制通常包括正常操作协议(也称为三阶段协议)和视图更改协议,其中提供正常操作协议以确保机制的安全性,提供视图更改协议以确保机制的活跃性。正常阶段协议按顺序主要包括三个阶段,即预准备阶段、准备阶段和提交(commit)阶段。所有阶段都是消息驱动的,即通过在当前阶段获得足够数量的消息来触发协议中的下一阶段。正常操作协议下的整个过程的进展高度取决于在每个阶段连续接收的足够数量的消息。即使在视图更改协议中,所述过程的进展也是基于正常操作协议中的准备消息。因此,可以看出,PBFT共识机制极大地依赖于一致性信息来运行。如果一个或多个节点变得无功能(例如,遇到停机和重启),则存储在存储器中的消息将丢失,从而影响整个共识过程,甚至引起不一致。
技术实现思路
本说明书的各种实施例包括但不限于用于共识系统停机时间恢复的系统、方法和非瞬态计算机可读介质。根据一个实施例,计算机实现的共识方法将在由多个(N个)节点维护的区块链上实现,其中所述节点之一充当主节点而其他(N-1)个节点充当备份节点,所述方法由所述备份节点之一执行。所述方法包括:从主节点获取预准备消息;将准备消息(也称为“组播准备消息”)组播到主节点加其他(N-2)个备份节点中的至少一些节点,所述准备消息指示接受所述预准备消息;分别从(Q-1)个或更多个备份节点获得(Q-1)个或更多个准备消息,其中Q(法定数量,quorum)是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;存储预准备消息和(Q-1)个或更多个准备消息;将提交消息组播至主节点加其他备份节点中的至少一些节点,所述提交消息指示该一个备份节点同意(Q-1)个或更多个准备消息;分别从主节点加备份节点中的Q个或更多个节点获得Q个或更多个提交消息,所述提交消息各自指示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。在一个实施例中,所述(Q-1)个或更多个准备消息包括所述组播准备消息;所述Q个或更多个提交消息包括组播提交消息。在一些实施例中,在从所述主节点获得所述预准备消息之前,所述方法还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端、所述主节点或者一个或多个所述其他备份节点。在其他实施例中,所述预准备消息包括与一个或多个交易请求相对应的一个或多个交易的顺序;并且所述提交消息指示发送所述提交消息的相应节点同意所述顺序。在其他实施例中,所述方法还包括:根据所述顺序将所述一个或多个交易打包到所述区块链的由该一个备份节点维护的本地副本中。在其他实施例中,存储预准备消息和(Q-1)个或更多个准备消息包括:仅存储预准备消息和(Q-1)个或更多个准备消息。在一些实施例中,在组播所述提交消息之后,所述方法还包括:执行系统重启;并加载所存储的预准备消息和所存储的(Q-1)个或更多个准备消息。在其他实施例中,在存储预准备消息和(Q-1)个或更多个准备消息之后并且在组播所述提交消息之前,所述方法还包括:执行系统重启;并加载所存储的预准备消息和所存储的(Q-1)个或更多个准备消息。在其他实施例中,在存储预准备消息和(Q-1)个或更多个准备消息之后并且在组播所述提交消息之前,所述方法还包括:将视图更改消息(也称为“组播视图更改消息”)组播,所述视图更改消息包括所加载的预准备消息和所加载的(Q-1)个或更多个准备消息。在其他实施例中,在存储预准备消息和至少2F个准备消息之后并且在组播所述提交消息之前,所述方法还包括:从新主节点获得指示新主节点已经接收Q个或更多个视图更改消息的新视图消息,所述视图更改消息各自指示相应节点同意所述视图更改消息;将另一准备消息(也称为“另一组播准备消息”)组播至包括新主节点的至少一些备份节点,所述另一准备消息指示接受所述新视图消息;分别从(Q-1)个或更多个所述备份节点获得另一(Q-1)个或更多个准备消息。在一个实施例中,所述Q个或更多个视图更改消息包括所述组播视图更改消息;所述另一(Q-1)个或更多个准备消息包括所述另一组播准备消息。在一些实施例中,在存储所述预准备消息和所述(Q-1)个或更多个准备消息之后并且在组播所述提交消息之前,所述方法还包括:分别从Q个或更多个备份节点获得Q个或更多个视图更改消息,所述视图更改消息各自指示相应节点同意所述视图更改消息;向至少一些所述备份节点组播新视图消息,所述新视图消息指示该一个备份节点作为新主节点已经接收Q个或更多个视图更改消息;从(Q-1)个或更多个备份节点分别获得另一(Q-1)个或更多个准备消息。在其他实施例中,多达N个节点中的所有节点经历崩溃;所述N个节点中的至少Q个节点执行系统重启并分别加载所存储的相应预准备消息和所存储的(Q-1)个或更多个准备消息。在其他实施例中,执行系统重启包括:执行系统重启且不触发视图更改。在一些实施例中,充当用于维护区块链的备份节点之一的共识系统包括一个或多个处理器和一个或多个计算机可读存储器,所述一个或多个计算机可读存储器耦接到所述一个或多个处理器并且其上存储有指令,所述指令可由所述一个或多个处理器执行以执行任何前述实施例的方法。在其他实施例中,充当用于维护区块链的备份节点之一的共识装置包括用于执行任何前述实施例的方法的多个模块。根据另一实施例,共识系统用于维护区块链,其中多个(N个)节点维护所述区块链,所述本文档来自技高网
...

【技术保护点】
1.一种计算机实现的待在由多个、即N个节点维护的区块链上实施的共识方法,其中,所述节点之一充当主节点而其他N-1个节点充当备份节点,所述方法由所述备份节点之一执行,所述方法包括:/n从所述主节点获取预准备消息;/n将准备消息组播至所述主节点加其他N-2个备份节点中的至少一些节点,所述准备消息指示接受所述预准备消息;/n分别从Q-1个或更多个所述备份节点获得Q-1个或更多个准备消息,其中法定数量Q是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;/n存储所述预准备消息和所述Q-1个或更多个准备消息;/n将提交消息组播至所述主节点加所述其他备份节点中的至少一些节点,所述提交消息指示该备份节点同意所述Q-1个或更多个准备消息;并且/n分别从所述主节点加所述备份节点中的Q个或更多个节点获得Q个或更多个提交消息,所述Q个或更多个提交消息各自指示相应节点同意由所述相应节点接收的Q-1个或更多个准备消息。/n

【技术特征摘要】
【国外来华专利技术】1.一种计算机实现的待在由多个、即N个节点维护的区块链上实施的共识方法,其中,所述节点之一充当主节点而其他N-1个节点充当备份节点,所述方法由所述备份节点之一执行,所述方法包括:
从所述主节点获取预准备消息;
将准备消息组播至所述主节点加其他N-2个备份节点中的至少一些节点,所述准备消息指示接受所述预准备消息;
分别从Q-1个或更多个所述备份节点获得Q-1个或更多个准备消息,其中法定数量Q是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;
存储所述预准备消息和所述Q-1个或更多个准备消息;
将提交消息组播至所述主节点加所述其他备份节点中的至少一些节点,所述提交消息指示该备份节点同意所述Q-1个或更多个准备消息;并且
分别从所述主节点加所述备份节点中的Q个或更多个节点获得Q个或更多个提交消息,所述Q个或更多个提交消息各自指示相应节点同意由所述相应节点接收的Q-1个或更多个准备消息。


2.如权利要求1所述的方法,其中,在从所述主节点获得所述预准备消息之前,所述方法还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端、所述主节点或者一个或多个所述其他备份节点。


3.如权利要求2所述的方法,其中:
所述预准备消息包括与所述一个或多个交易请求相对应的一个或多个交易的顺序;以及
所述提交消息指示发送所述提交消息的相应节点同意所述顺序。


4.如权利要求3所述的方法,还包括:
根据所述顺序将所述一个或多个交易打包到所述区块链的由所述一个备份节点维护的本地副本中。


5.如前述任一权利要求所述的方法,其中:
所述Q-1个或更多个准备消息包括组播准备消息;以及
所述Q个或更多个提交消息包括组播提交消息。


6.如前述任一权利要求所述的方法,其中,存储所述预准备消息和所述Q-1个或更多个准备消息包括:
仅存储所述预准备消息和所述Q-1个或更多个准备消息。


7.如前述任一权利要求所述的方法,在组播所述提交消息之后,还包括:
执行系统重启;并且
加载存储的所述预准备消息和存储的所述Q-1个或更多个准备消息。


8.如权利要求1-6中任一项所述的方法,在存储所述预准备消息和所述Q...

【专利技术属性】
技术研发人员:杨达一
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1