CN110870288A - 共识系统停机时间恢复 - Google Patents

共识系统停机时间恢复 Download PDF

Info

Publication number
CN110870288A
CN110870288A CN201980003366.5A CN201980003366A CN110870288A CN 110870288 A CN110870288 A CN 110870288A CN 201980003366 A CN201980003366 A CN 201980003366A CN 110870288 A CN110870288 A CN 110870288A
Authority
CN
China
Prior art keywords
message
node
messages
prepare
nodes
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
CN201980003366.5A
Other languages
English (en)
Other versions
CN110870288B (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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN110870288A publication Critical patent/CN110870288A/zh
Application granted granted Critical
Publication of CN110870288B publication Critical patent/CN110870288B/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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

共识系统停机时间恢复
技术领域
本申请一般涉及用于共识系统和方法的方法和设备,尤其涉及实用拜占庭容错(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个)节点维护所述区块链,所述N个节点之一充当主节点而其他(N-1)个节点充当备份节点,该共识系统充当(N-1)个备份节点之一并且包括一个或多个处理器和一个或多个非瞬态计算机可读存储器,所述存储器耦接到一个或多个处理器并配置有可由所述一个或多个处理器执行的指令,以促使系统执行包括以下的操作:从主节点获得预准备消息;将准备消息组播至所述主节点加其他(N-2)个备份节点中的至少一些节点,所述准备消息指示接受所述预准备消息;分别从(Q-1)个或更多个备份节点获得(Q-1)个或更多个准备消息,其中Q(法定数量)是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;存储预准备消息和(Q-1)个或更多个准备消息;将提交消息组播至所述主节点加其他备份节点中的至少一些节点,所述提交消息指示该一个备份节点同意(Q-1)个或更多个准备消息;分别从主节点加备份节点中的Q个或更多个节点获得Q个或更多个提交消息,所述提交消息各自指示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。
根据另一实施例,非瞬态计算机可读存储介质用于维护区块链,其中多个(N个)节点维护所述区块链,其中N个节点之一充当主节点,其他(N-1)个节点充当备份节点,所述存储介质与(N-1)个备份节点之一相关联并被配置有可由一个或多个处理器执行的指令,以促使所述一个或多个处理器执行包括以下的操作:从主节点获得预准备消息;将准备消息组播至所述主节点加其他(N-2)个备份节点中的至少一些节点,所述准备消息指示接受所述预准备消息;分别从(Q-1)个或更多个备份节点获得(Q-1)个或更多个准备消息,其中Q(法定数量)是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;存储预准备消息和(Q-1)个或更多个准备消息;将提交消息组播至所述主节点加其他备份节点中的至少一些节点,所述提交消息指示该一个备份节点同意(Q-1)个或更多个准备消息;分别从主节点加备份节点中的Q个或更多个节点获得Q个或更多个提交消息,所述提交消息各自指示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。
根据又一实施例,共识装置用于维护区块链。多个(N个)节点维护所述区块链,其中N个节点之一充当主节点,其他(N-1)个节点充当备份节点,所述共识装置充当(N-1)个备份节点之一,并且包括:第一获取模块,用于从主节点获取预准备消息;第一组播模块,用于将准备消息组播至主节点加其他(N-2)个备份节点中的至少一些节点,所述准备消息指示接受所述预准备消息;第二获取模块,用于分别从(Q-1)个或更多个备份节点获取(Q-1)个或更多个准备消息,其中Q(法定数量)为(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;存储模块,用于存储预准备消息和(Q-1)个或更多个准备消息;第二组播模块,用于将提交消息组播至主节点加其他备份节点中的至少一些节点,所述提交消息指示该一个备份节点同意(Q-1)个或更多个准备消息;第三获取模块,用于分别从主节点加备份节点中的Q个或更多个节点获取Q个或更多个提交消息,所述提交消息各自指示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。
本说明书中公开的实施例具有一个或多个技术效果。在一些实施例中,所述方法和系统可以确保PBFT共识系统的各个节点能够在一个或多个节点经历系统崩溃之后恢复正常操作。在其他实施例中,在每轮共识验证中,共识系统的节点(主节点或备份节点)可以存储预准备消息和足够数量的准备消息,以便当中断(例如,系统范围的崩溃)发生时,节点可以恢复共识验证且不会导致不一致的共识结果以及区块链分支。在其他实施例中,在崩溃之后,节点可以执行系统重启并加载所存储的消息以恢复正常功能。通过加载所存储的消息可以加速系统停机时间恢复。在其他实施例中,可以在获得准备消息(在正常操作协议的准备阶段)之后并且在组播提交消息(在正常操作协议的提交阶段)之前存储预准备消息和至少(Q-1)个准备消息。因此,需要提交较少的用于存储的系统资源,这是因为需要存储至多预准备消息和(Q-1)个准备消息以实现停机时间恢复。在一些实施例中,可以容忍多达F个恶意或故障节点,且不存在不一致的共识结果和区块链分支。也就是说,即使多达F个节点不可信,由PBFT共识系统的法定数量确定的共识验证也是可靠的。
参考附图考虑以下描述和所附权利要求,本文公开的系统、方法和非瞬态计算机可读介质的这些和其他特征,以及相关结构元件的操作方法和功能以及部件的组合和制造经济性将变得更加明显。所有这些附图形成本说明书的一部分,其中相同的附图标记表示各附图中的对应部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,而不是限制性的。
附图说明
图1示出了根据各种实施例的网络。
图2A示出了PBFT的正常操作协议。
图2B示出了具有一个故障副本的PBFT的正常操作协议。
图2C示出了PBFT的正常操作协议和视图更改协议。
图3A示出了PBFT的正常操作协议的步骤的流程图。
图3B示出了PBFT的视图更改协议的步骤的流程图。
图3C示出了根据各种实施例的共识系统的正常操作协议的步骤的流程图。
图4A至图4D各自示出了根据各种实施例的共识步骤的流程图。
图5A示出了根据各种实施例的共识方法的流程图。
图5B示出了根据各种实施例的共识方法的流程图。
图6A示出了根据各种实施例的共识系统的框图。
图6B示出了根据各种实施例的共识系统的框图。
图7示出了计算机系统的框图,其可以实现本文描述的任何实施例。
具体实施方式
本文公开的实施例包括但不限于PBFT停机时间恢复系统、方法和非瞬态计算机可读介质。在各种实施例中,诸如区块链系统的分布式网络系统可包括多个节点。区块链系统可以实现PBFT共识机制,其中多个节点之一被指定为主节点而其他节点被指定为备份节点。根据一些实施例,对于在区块链系统中执行的每轮共识验证,仅存储部分一致性消息而不是所有一致性消息。例如,在正常操作协议期间,存储预准备消息和足够数量的准备消息。在一些实施例中,仅存储预准备消息和(Q-1)个准备消息。Q代表法定数量,并且为(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数。以这种方式,可以有效且高效地从任何中断(例如,系统范围的崩溃)恢复并且推进共识验证过程,具有较少的系统存储消耗且不会导致不一致的共识结果以及区块链分支。与PBFT类似,所公开的系统、方法和非瞬态计算机可读介质可以应用于其他共识协议,例如SecureRing、Byzantine Paxos、Q/U、HQ、Zyzzvyva、ABsTRACTs、RBFT、Adapt、Tangaroa、CheapBFT、MinBFT、FastBFT等。PBFT的各个方面可以参考M.Castro,B.Liskov,“Practical Byzantine Fault Tolerance,”Proceedings of the Third Symposium on Operating Systems Design andImplementation,(Feb 1999),其通过引用完整地并入本文。
图1示出了根据各种实施例的网络120。下面给出的组件旨在说明。如图所示,网络120可以包括分布式网络系统112,例如区块链系统。网络系统112可以包括在一个或多个计算设备(诸如服务器、计算机、移动电话等)中实现的一个或多个节点(例如,节点0、节点1、节点2、节点3、节点4...节点i等)。网络系统112可以安装有适当的软件(例如,共识程序)和/或硬件(例如,有线连接、无线连接),以访问网络120或附加系统的其他设备。每个节点可以包括一个或多个处理器以及耦接到所述一个或多个处理器的一个或多个存储器。例如,所述一个或多个存储器是非瞬态的且计算机可读的,并且配置有可由所述一个或多个处理器执行的指令,以促使所述一个或多个处理器执行本文描述的操作。尽管在该图中节点被示为单个组件,但是应当理解,这些节点可以实现为单个设备或耦接在一起的多个设备。通常,节点能够彼此通信并且与网络系统112外部的其他设备通信。例如,通过一个或多个有线网络或无线网络(例如,因特网),数据可以被传送。
在各种实施例中,网络系统112可以被实现为包括多个节点的区块链系统。例如,如图1所示,区块链系统包括多个区块链节点(例如,节点0、节点1、节点2、节点3、节点4......节点i等)。所述节点可以形成网络(例如,点对点网络,Peer-to-Peer network),其中一个区块链节点与另一区块链节点通信。所示的区块链节点的顺序和数量仅仅是示例性的并且是为了简化说明。所述区块链节点可以在服务器、计算机等中被实现。每个区块链节点可以对应于经由各种类型的通信方法诸如TCP/IP耦接在一起的一个或多个物理硬件设备或虚拟设备。根据分类,区块链节点可以包括全节点、Geth节点、共识节点等。
在各种实施例中,所述区块链系统可以与诸如节点A和节点B(例如,轻节点)的其他系统和设备交互。所述交互可以涉及数据的发送和接收,以便例如接收请求,并返回所述请求的执行结果。在一个示例中,用户A可能想要通过区块链与用户B进行交易。所述交易可以涉及将用户A的账号中的某些资产转移到用户B的账号。用户A和用户B可以使用各自的安装有适当区块链软件(例如,加密货币钱包)的设备节点A和节点B进行交易。节点A可以通过与节点0的通信来访问区块链,节点B可以通过与节点1的通信来访问区块链。例如,节点A可以通过节点0向区块链提交交易请求,节点B可以通过节点1向区块链提交智能合约执行请求。在区块链之外,节点A和节点B可以具有其他通信信道(例如,不经过节点0和节点1的常规因特网通信)。
所述区块链节点可以各自包括存储器或耦接到存储器。在一些实施例中,存储器可以存储池数据库(pool database)。所述池数据库可以被分布式方式的多个区块链节点访问。例如,所述池数据库可以分别存储在区块链节点的存储器中。所述池数据库可以存储由一个或多个用户设备(例如由用户操作的节点A和节点B)提交的多个交易。
区块链节点形成网络(例如,P2P网络),所述网络,通过共识,在称为区块链的分布式分类账中记录交易。P2P网络的参与者可以被称为维护区块链的节点。在区块链P2P网络中,每个节点参与共识验证并存储区块链的完整分类账副本。每个节点通过区块链共识算法确认批量交易,以确保所有节点具有一致的确认结果,从而确保所有节点具有一致的区块链副本。
区块链共识算法之一是实用拜占庭容错(PBFT)。拜占庭容错源于拜占庭一般问题。对于P2P网络系统,只要无功能节点的数量在一定限度内,所述系统就可以继续正常运行。这种系统称为拜占庭容错系统。PBFT是拜占庭容错网络能力优化的一个例子。PBFT通过复制服务器并将客户端交互与服务器副本同步,为网络提供拜占庭状态机。
PBFT操作的核心是维护记录在区块链上的信息的一致性全局视图,这形成了使用户能够以分散方式彼此交互的主干。PBFT共识机制的安全性对区块链系统至关重要。共识模型的两个关键属性是:1)安全性或共识性:所有诚实节点产生相同的有效输出;2)活跃性:共识中的所有诚实节点最终都会产生值而不会在中间步骤停滞。安全可靠的PBFT共识机制需要容忍各种各样的拜占庭行为,包括节点故障、网络分区、消息延迟、无序消息传递、消息损坏等,并且在节点中达成共识,只要系统内的无功能节点数量是有限的。为此,PBFT模型在两种互斥协议中的任何一种下工作:正常操作/共识协议和视图更改协议,这将在下面进一步描述。在本说明书中,无功能意味着有故障和/或恶意,起作用意味着无故障和诚实。可能的故障和/或恶意行为可以包括:消息传递故障、消息传递延迟、无序消息传递、拜占庭故障(向不同节点传递任意消息,违反协议)等。
在一些实施例中,实现实用拜占庭容错(PBFT)机制的区块链系统可以包括总数N个节点,其中N个节点之一充当主节点,N个节点中的其他节点充当备份节点。主节点指定可以不被固定于特定节点,因为可以通过视图更改协议选择另一节点成为新主节点。例如,可以通过取模运算选择主节点,其中具有最低序列号(模视图号)的功能节点成为新主节点。当前视图和节点总数N可以确定主节点id=(view+1)mod N。在PBFT中,每次选择新主节点时都会更改视图。例如,随着每个视图更改,视图从零开始单调增加。也就是说,所述视图可以随主节点更改而更改。
在一些实施例中,所述主节点在视图v处运行,并且执行正常操作协议。对于正常操作,所述主节点和/或备份节点可以从一个或多个客户端接收与未验证交易相关联的请求。例如,作为客户端的节点A可以向主节点和/或备份节点提交请求。所述请求可以包括未验证交易(例如,通过共识验证将要添加到区块链的新区块中的交易)。所述未验证交易可以包括例如基于区块链的金融交易、智能合约部署或执行交易等。所述主节点和所述备份节点可以执行或不执行交易的一些初步验证。接收所述请求的备份节点可以将接收到的请求转发到主节点。一旦主节点处的具有未验证交易的请求达到特定级别或以其他方式满足触发条件,则所述主节点可以发起一轮共识验证,并提议对未验证交易的验证结果。所述备份节点可以响应共识,并确认所述提议以达成共识。对这些节点的要求是它们是确定性的并且以相同状态开始。最终的结果是,所有诚实节点对记录的顺序达成共识,所有诚实节点要么接受它,要么拒绝它。一旦经过共识验证,所述交易就可以被打包到区块链的新区块中,并被添加到由这些节点维护的本地区块链副本中。此外,最初发送请求的客户端(例如,节点A)被通知。
如上所述,为了保持安全,PBFT共识机制主要包括正常操作协议的三个阶段:预准备阶段、准备阶段和提交阶段。参考图2A至图2C,实现PBFT共识机制的区块链系统的示例包括四个副本(副本是节点的另一术语):副本0、副本1、副本2和副本3。数字0至3是可用于确定新主节点的副本序列号。副本0可以对应于主节点0,副本1、副本2和副本3可以对应于备份节点1、备份节点2和备份节点3。例如,所述副本可以在上述网络系统112的相应节点中被实现。图2A中示出了正常操作协议,其中不存在无功能节点,图2B中示出了另一种正常操作协议,其中副本3是无功能节点。对于这两种情况,除了预准备阶段、准备阶段和提交阶段之外,正常操作协议还可以包括两个阶段:请求阶段和回复阶段。图3A中示出了对应于图2A的步骤的流程图。
参考图2A、图2B和图3A,当客户端向负责提倡请求的主节点(副本0)提交请求(消息)时,正常操作协议在请求阶段开始。所述请求可以包括客户端的信息、请求操作(例如,用于共识验证的一个或多个交易)和请求时间戳。所述客户端(也称为客户端节点)可以例如在上述节点A中被实现。节点A可以是轻节点(例如,在移动电话中被实现)。附加地或替代地,客户端可以将请求提交给备份节点,所述备份节点在预准备阶段之前将所述请求转发到主节点。无论是主节点还是备份节点接收所述请求,相应节点都可以将所接收的请求组播到网络中的其他节点。因此,主节点可能最终以某种方式获得客户端提交给共识网络的未决请求(步骤311)。
因此,主节点充当领导者并且领导备份节点验证与请求相关联的交易。主节点负责在其视图中对请求的执行进行排序。在预准备阶段,主节点可以获得多个请求,验证所获得的请求,并为每个请求提出序列号。因此,每个请求可以被分配递增的序列号,从而被按顺序排列。另外,所述预准备消息可以包括区块长度。所述区块长度可以基于区块链的当前长度。例如,如果区块链当前具有1000个区块,则区块长度可以是1000,其表示区块链中已经存在1000个区块,或者可以是1001,其表示与请求相关联的交易被提议打包到区块链中尚未被其他节点验证的第1001个区块中。所述主节点可以转发客户端的请求以及相应序列号和/或区块长度。例如,在获得所述请求之后,所述主节点可以通过分配序列号来将请求按照用于执行相应交易的顺序排列,并将其存储到列表中。所述主节点可以向区块链系统中的每个备份节点(副本1至副本3)发送预准备消息(步骤312)。如图2A所示,所述主节点可以将预准备消息中的列表组播到备份节点或将所述列表与预准备消息一起组播到备份节点。如图2B所示,即使备份节点(副本3)是无功能的并且主节点不知道这一点,所述主节点仍然可以发送预准备消息(步骤313)。每个备份节点都接受预准备消息,只要所述预准备消息是有效的。所述预准备消息可以包含允许确定预准备消息的有效性的视图号、序列号、主节点的签名、摘要(d)、其他元数据等。
在准备阶段,如果备份节点接受预准备消息,则可以通过将准备消息组播到区块链系统中的包括主节点的其他节点来继续(步骤314)。组播所述准备消息指示发送方节点同意所述预准备消息。每个准备消息,只要是有效的,就被接收节点接受。可以基于视图号、序列号、相应备份节点的签名、摘要(d)、其他元数据等类似地确定所述准备消息的有效性。如果备份节点已经从主节点接收有效的预准备消息,并且已经从其他节点获得(Q-1)个或更多个不同的、有效的一致性准备消息(步骤315),则备份节点准备就绪,其中,法定数量(Q)表示确保所有副本/节点数据一致性和容错要求所需的副本/节点的数量。在一些实施例中,实现PBFT系统的区块链系统具有多个(至少3F+1个)副本/节点,其中F表示PBFT安全且活跃地运行可以容忍的拜占庭故障/无功能节点的数量,法定数量(Q)等于2F+1。在这种情况下,可以存储预准备消息和至少2F个准备消息。所述2F个准备消息可以包括组播准备消息。这里,需要Q-1(在这种情况下,2F)个而不是Q个准备消息,因为预准备消息可以被视为主节点的准备消息的等效物(尽管主节点本身可以不发送准备消息)。如果将预准备消息计算为另一个准备消息,那么将有至少Q(例如,2F+1)个不同且有效的准备消息,这些准备消息指示所有节点中的至少Q(例如,2F+1)个节点接受预准备消息,其中至多F个无功能节点可以被容忍。因此,所述预准备阶段至准备阶段确保至少F+1个功能节点(2F+1个准备节点但考虑了至多F个无功能节点)同意:如果在视图v中执行请求,则将按照其序列号执行所述请求。所述准备阶段确保视图中每个请求的容错一致性排序。
在一些实施例中,在接收到预准备消息和(Q-1)个准备消息之后,所述备份节点可以验证所述顺序并将验证结果与主节点在预准备消息中写入的提议验证结果进行比较。可以有多种方法来验证所述顺序。例如,所述提议验证结果可以包括写入摘要(d)中的建议的Merkle Patricia Trie根。所述备份节点可以根据所述顺序对与请求相关联的交易进行排列,并计算Merkle Patricia Trie根以与提议的Merkle Patricia Trie根进行比较。所述计算还可能需要某些现有信息,例如区块链中现有区块的节点哈希值。所述比较产生由备份节点计算的摘要(D(m))。如果摘要(D(m))与摘要(d)一致,则验证成功。一旦被验证,所述备份节点可以同意所述请求的排序(例如,将与请求相关联的交易打包到区块链的新区块中的顺序)。类似地,所述备份节点可以验证它接收的提交消息(下面相对于提交阶段描述的)是否包括相同摘要D(m),以确定其他节点是否也同意所述请求的排序。如果准备节点已经获得Q(例如,2F+1)个提交消息并且已经执行了具有较低序列号的所有请求,则所述节点可以执行所述请求。
在一些实施例中,所述预准备消息可以包括新区块的摘要(d)或者与执行所述请求有关的其他信息(例如,与所述请求相关联的交易)。所述摘要(d)(例如,哈希值)可以是将哈希算法应用于诸如交易的数据的数值结果。所述备份节点可以执行交易以确认所述摘要(d)。对于多个请求,所述备份节点可以根据顺序(即,所述请求的序列号)执行所述请求以获得摘要D(m)。如果D(m)和d是一致的,则所述备份节点组播提交消息(下面针对提交阶段描述的),所述提交消息指示备份节点与主节点的验证结果一致。对于特定序列号的未决请求,如果准备节点已经获得Q(例如,2F+1)个提交消息并且已经执行具有较低序列号的所有请求,则所述节点可以执行所述请求。
在提交阶段,如果节点准备就绪,则所述节点可以将提交消息组播到其他节点(步骤316)。所述节点可以从其他节点接收提交消息。只要提交消息是有效的,每个节点都接受它。所述提交消息可以包含允许确定消息的有效性的视图号、序列号、签名、摘要、其他元数据等。在一些实施例中,如果节点已经获得至少Q个不同的、有效的一致性提交消息,则表示法定数量的节点已经提交(即,至少(Q-F)个诚实节点准备就绪)并且已达成共识(步骤317)。至少Q个有效的提交消息可以包括组播提交消息。因此,所述准备阶段至提交阶段确保至少(Q-F)个功能节点(Q个提交消息但考虑了至多F个无功能节点)同意,请求最终将在视图v中按照其序列号被执行。由于节点可以在不同视图(例如,当一些节点已经进入新视图并且一些其他节点依然在先前视图中时)中提交,所接收的提交消息可以对应于在不同视图中执行的提交。所述提交阶段确保跨视图的每个请求的容错一致性排序,因为功能节点对每个请求的序列号达成一致。
在一些实施例中,如果节点已经获得至少Q个不同的、有效的一致性提交消息,则所述节点可以执行相应请求。例如,一旦获得Q个提交消息,就意味着新区块被共识验证。因此,所述节点可以将新区块打包到本地维护的区块链副本中。否则,所述备份节点可以直接触发视图更改协议。
在回复阶段,在执行所述请求之后,所述节点直接向客户端发送回复消息。对于打包到区块链中的交易,所述回复消息可以包括所述交易在区块链中的地址。由于允许多达F个故障,客户端在接受结果之前等待来自不同节点的具有有效签名并具有相同请求时间戳和相同执行结果的(Q-F)个回复。对于图2A和图2B中所示的PBFT网络系统,总共存在四个节点,因此可以容忍至多一个(F=1)无功能节点。因此,即使副本3是无功能的,在图2B中仍然可以达成共识。
为了保持活跃性,如果主节点没有组播请求的情况经过了特定时间量,则可以在视图更改协议中替换主节点。例如,所述备份节点可以维护计时器。所述备份节点在接收请求并且计时器尚未运行时启动计时器。当所述备份节点不再等待执行请求时(即,所述请求被执行),所述备份节点停止计时器,但是如果在那时它正在等待执行一个或多个其他请求,则重新启动计时器。如果所述计时器到期,则备份节点可以确定主节点是无功能的。因此,所述备份节点可以将视图更改消息组播到其他节点。又例如,所述备份节点可以确定主节点是恶意的。因此,所述备份节点可以组播视图更改消息。再例如,客户端可以使用计时器来确定在客户端将所述请求发送到主节点之后是否已经过太多时间而没有接收到响应。当该计时器到期时,客户端将其请求发送到所有节点。如果节点已经获知该请求,则忽略该重新广播。如果节点未获知该请求,它将启动计时器。一旦所述节点的计时器超时,基于怀疑主节点是故障的,所述节点通过将视图更改消息组播到其他备份节点来启动视图更改过程(步骤321)。所述视图更改消息包括系统状态(以存档消息的形式,包括在先前正常操作期间其自己的准备消息),以便其他节点将获知发送方节点未发生故障。
绝对多数功能节点可以确定主节点是否是无功能的,并在用下一主节点作为替换的情况下删除该主节点。当足够的节点认为主节点发生故障时,发生视图更改。图2C的一部分示出了视图更改协议,图3B中示出了与视图更改协议相对应的步骤的流程图。参考图2C和图3B,在视图更改阶段,如果当前视图是v,则节点p=(v+1)mod N等待获得Q个有效视图更改消息以成为新主节点,其中p是副本/节点序列号,v是视图号,N是副本/节点的总数(步骤322)。Q个视图更改消息可以包括组播视图更改消息。由于先前视图是v,因此视图更改消息可以各自包括新视图v+1。一旦新主节点p获得Q个视图更改消息,它就组播新视图消息(步骤323)。该消息包含接收的所有有效视图更改消息以及由于主节点故障而可能尚未完成的所有请求的集合。新主节点可以决定最新的检查点,并且此外,确保非故障节点赶上最新状态,这可能涉及在新视图中重新提交先前的请求(例如,准备就绪、提交、但未被执行的请求)。当视图更改发生时,不会接受任何新请求。在节点接收包含Q个视图更改消息的有效新视图消息后,它将进入视图v+1并处理未完成的请求的集合。此后,正常操作协议继续进行,并且节点重做在最新的稳定检查点的序列号和准备消息中的最高号之间的请求,但是避免重新执行请求。所述备份节点可以设置用于新主节点的定时器(步骤324)。
除了增加存储阶段之外,图3C类似于图3B。也就是说,除了在步骤335和步骤336之间另外执行步骤399之外,步骤331-步骤337分别类似于步骤311-步骤317。在一些实施例中,如图3C所示,在准备阶段(备份节点或主节点获得(Q-1)个准备消息)和提交阶段(备份节点或主节点组播所述提交消息)之间,可以在存储阶段存储所述预准备消息和所述至少(Q-1)个准备消息。下面参考图4A至图6B描述进一步的细节。
图4A示出了根据本说明书的各种实施例的由主节点执行的共识步骤410a的流程图。图4B示出了根据本说明书的各种实施例的由备份节点执行的共识步骤410b的流程图。这两幅图显示了实施PBFT共识机制的区块链系统,所述区块链系统包括至少3F+1个节点。然而,本说明书不限于此。所述区块链系统可以具有除“至少3F+1”之外的其他数量的节点,只要系统中存在用于维护有效的共识过程并满足安全性和活跃度要求的法定数量的节点。在一些实施例中,如图4A所示,共识步骤410a由视图v中的主节点执行,并且如图4B所示,共识步骤410b由视图v中的备份节点执行,且不触发视图更改。所述视图指示N个节点中的哪个节点被视为主节点,其中N表示网络系统中的节点的数量。步骤410a和步骤410b可以各自由图1的系统112的一个或多个组件(例如,上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和附加设备(例如,节点A)的组合)实现。在该图中,节点A(例如,上述轻节点)是客户端,节点0至节点3是网络系统112中的节点。在当前视图v中,节点0充当主节点,节点1至节点3充当备份节点。步骤410a和步骤410b可以各自由包括各种硬件机器和/或软件的共识系统或设备(例如,计算机、服务器)实现。例如,所述共识系统或设备可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行步骤410a或步骤410b。下面的操作旨在说明。根据实施方式,操作可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。
在图4A和图4B的垂直方向上,各个步骤对应于“请求”、“预准备”、“准备”、“存储”、“提交”和“回复”阶段,其可以参考上面参照图1至图3C所描述的。为清楚起见,各个阶段的排列被示出,并且可以没有严格的顺序要求。例如,所述存储阶段可以在准备阶段结束之前开始,和/或在提交阶段开始之后结束。如图4A所示,例如,当中断(例如,停机时间情况)发生时,可以在步骤415至步骤417之间另外执行可选步骤498,如下所述。所述主节点和所述备份节点可以是PBFT共识机制中定义的节点。
图4A的步骤410a和图4B的步骤410b可以应用于针对一个或多个请求的一轮共识验证。例如,一轮共识验证可以处理一个或多个交易请求。如果成功,相应交易将被打包到区块链的新区块中。除非特别指出,否则下面的描述参照图4A或图4B,因为某些步骤是相互交织的。步骤411a和步骤412a仅在图4A中找到,而步骤411b和步骤412b仅在图4B中找到。在图4A和图4B中均示出了步骤413、步骤414、步骤415、步骤416和步骤417。
在步骤411a,如图4A所示,在请求阶段,所述主节点可以从客户端获得请求。例如,所述请求可以由主节点(节点0)直接从客户端(节点A)获得,或从备份节点(例如,备份节点1、备份节点2或备份节点3)获得,所述备份节点将请求转发到主节点,如虚线所示。在一些实施例中,所述请求可以涉及用于共识验证的交易(具有或不具有智能合约)。可以在执行正常操作协议期间执行共识验证。或者,所述请求可以对应于其他操作。
在步骤412a,在预准备阶段,主节点(节点0)将预准备消息与请求一起组播至备份节点(节点1、节点2和节点3)。在一些实施例中,在获得多个请求之后,所述主节点可以将预准备消息和多个请求组播至每个备份节点。所述预准备消息可以包括请求的顺序(例如,与请求相关联的交易的顺序)。
如图4B所示,图4B示出了在正常操作协议下由备份节点(例如,节点1、节点2或节点3)执行的步骤,在步骤411b,在预准备阶段,所述备份节点获得预准备消息以及请求。所述请求可以包括用于共识验证的相关联的交易。在一些实施例中,可以从主节点获得预准备消息和请求。在一些实施例中,可以从主节点获得预准备消息,并且可以从客户端、主节点和/或任何其他备份节点获得请求。如果主节点是无功能的,则可以触发视图更改协议。
在步骤412b,在准备阶段,如果预准备消息是有效的,则备份节点将准备消息组播到系统中的其他节点。
在步骤413,在准备阶段,所述主节点或所述备份节点接收从其他节点发送的准备消息。获得(Q-1)个有效的准备消息可以是在共识过程进入下一提交阶段之前要满足的条件。在图4A和图4B所示的实施例中,例如,(Q-1)是2F,并且需要2F个或更多个准备消息。2F个或更多个准备消息可以包括备份节点或主节点自己的准备消息。对于备份节点,2F个或更多个准备消息可以包括步骤412b处的准备消息(即,在步骤412b由备份节点自身组播的准备消息)。
在步骤414,所述主节点或所述备份节点可以存储预准备消息和至少(Q-1)个准备消息。例如,如果节点获得了多个(3F个)准备消息,则这些节点可以存储预准备消息和多个(2F个至3F个,包括2F个和3F个)准备消息。在一些实施例中,仅存储预准备消息和Q-1个准备消息。在一些实施例中,仅存储预准备消息和2F个准备消息。例如,如果获得3F个准备消息,则预准备消息和2F个准备消息可以是在整个系统从中断(例如,系统崩溃)恢复之后,有效且高效地恢复并且推进共识过程所需要存储的最小量的一致性消息,而不消耗太多的系统存储资源。在一些实施例中,存储所述预准备消息和(Q-1)个或更多个准备消息包括:仅存储预准备消息和(Q-1)个或更多个准备消息,这意味着除了预准备消息和至少2F个准备消息之外不存储任何消息。例如,对于每轮共识验证,不存储提交消息。当进行多轮共识验证时,同样适用。
步骤413和步骤414可以按顺序、同时或以其他方式执行。在一些实施例中,可以仅在获得(Q-1)个或更多个准备消息时执行预准备消息和至少(Q-1)个准备消息的存储。在其他实施例中,可以在获得相应的消息之后的任何时间执行预准备消息和至少(Q-1)个准备消息的存储。
在一些实施例中,可以以各种方式存储预准备消息和至少(Q-1)个准备消息,只要在系统从中断恢复之后所存储的消息是可检索的。例如,可以将预准备消息和至少(Q-1)个准备消息存储在永久存储器中,所述永久存储器确保所述存储不受系统崩溃和重启的影响。
在一些实施例中,如果系统操作没有中断(例如,由系统崩溃引起的停机时间),则可以执行步骤415。在一个实施例中,在存储至少预准备消息和(Q-1)个准备消息之后执行步骤415的提交阶段。对于步骤415,在所述提交阶段,所述主节点和所述备份节点各自将提交消息组播至其他节点。每个节点还可以接收由其他节点组播的提交消息。在步骤416,所述主节点或所述备份节点可以获得至少法定数量(Q)的提交消息(在这种情况下,2F+1)。对于备份节点或主节点,如图4A和图4B所示,所述Q个提交消息可以包括步骤415中的提交消息(即,在步骤415由备份节点或主节点自身组播的提交消息)。在步骤417,如果节点看到足够的节点(例如,Q个节点)已经提交,则这些节点可以根据所述顺序执行请求,并通过回复消息通知客户端(节点A)。
在一些实施例中,如果在组播提交消息之后存在系统操作的中断(例如,由系统崩溃引起的停机时间),则可以在步骤415之后且在步骤417之前执行可选步骤498。在步骤498,所述主节点或所述备份节点可以执行系统重启,并且加载这些节点曾经在步骤414处存储的预准备消息和至少(Q-1)个准备消息。在一些实施例中,所述系统可以在中断之后自动或非自动地重新启动。然后,可以继续其余步骤416至步骤417或步骤417。
在一些实施例中,如果在组播提交消息之前存在系统操作的中断(例如,由系统崩溃引起的停机时间),则可以在步骤414之后且在步骤415之前执行可选步骤499。在步骤499,所述主节点或所述备份节点可以加载在存储阶段曾经存储的预准备消息和至少(Q-1)个准备消息(步骤414)。在一些实施例中,所述系统可以在中断之后自动或非自动地重新启动。如果执行步骤499,则可以在某些情况下触发视图更改协议(例如,如果非功能节点是主节点,并且主节点在超时时段内没有恢复其运行状态)。然而,如果不满足超时条件(例如,在触发超时条件之前完成步骤499),则可以不触发视图更改协议,如图4A和图4B所示。因此,如果无功能主节点足够快地恢复其运行状态而避免超时条件,则可以不触发视图更改协议,并且可以在所述协议中继续步骤415至步骤417。如果满足超时条件(例如,在触发超时条件之前步骤499未完成),如下面参考图4C和图4D所述,可以触发视图更改协议。
图4C示出了根据本说明书的各种实施例的视图v中的备份节点的共识步骤420a的流程图,所述备份节点成为视图v+1中的新主节点。图4D示出了根据本说明书的各种实施例的视图v中的备份节点的共识步骤420b的流程图,所述备份节点在视图v+1中仍然为备份节点。步骤420a和步骤420b可以各自由图1的系统112的一个或多个组件(例如,上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和附加设备(例如,节点A)的组合)实现。在该图中,节点A(例如,上述轻节点)是客户端,节点0至节点3是区块链节点。如图4A和图4B中所述,在视图v中,节点0充当主节点,但是对于图4C和图4D中的视图v+1,节点1变为新主节点,节点2至节点3仍为备份节点。步骤420a和步骤420b可以各自由分布式网络系统(例如,区块链系统)的一个或多个节点实现。步骤420a和步骤420b可以各自由包括各种硬件机器和/或软件的共识系统或设备(例如,计算机、服务器)实现。例如,所述共识系统或设备可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行步骤420a和步骤420b。下面的操作旨在说明。根据实施方式,操作可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。
如上所述,如果在图4B的步骤414之后且步骤415之前触发视图更改,则执行图4C和图4D中所示的步骤。为简洁起见,在图4C和图4D中不再现步骤499之前的步骤(直到图4B中所示的步骤414的步骤)。
在一些实施例中,如图4C和图4D所示的共识步骤420a和共识步骤420b可以对应于触发视图更改的情况。视图v中的主节点(例如,节点0)可能变成故障的或者无功能的。对于图4C,视图v中的备份节点(例如,节点1)可以执行步骤499、步骤423、步骤424a、步骤425a、步骤426a、步骤425、步骤426和步骤427,所述备份节点在视图v+1中成为新主节点。视图v中的备份节点(例如,节点2或节点3)可以执行步骤499、步骤423、步骤424b、步骤425b、步骤426b、步骤425、步骤426和步骤427,所述备份节点在视图v+1中仍然为备份节点。在两个图的垂直方向上,各个步骤对应于“视图更改”阶段、“新视图”阶段、“准备”阶段、“提交”阶段和“回复”阶段,可以参考上面参考图1至图3C所描述的。为清楚起见,各个阶段的排列被示出,并且可以没有严格的顺序要求。所述主节点和所述备份节点可以是PBFT共识机制中定义的节点。以下描述参考图4C或图4D,因为某些步骤是相互交织的。
在一些实施例中,如步骤499所示,仍然处于视图v中,主节点(节点0)和一些备份节点(节点1、节点2和/或节点3)可以各自加载分别在步骤414处存储的预准备消息和至少(Q-1)个准备消息。如果从永久存储器存储这些消息,则现在可以从永久存储器加载它们。可以响应于正常操作的中断(例如,由系统崩溃引起的停机时间),执行系统重启。
在一个实施例中,当怀疑主节点可能是无功能的时,备份节点(例如,节点1、节点2或节点3)可以组播视图更改消息,所述视图更改消息可以包括所加载的预准备消息和所加载的至少(Q-1)个准备消息,如步骤423所示。在视图更改协议下,所述备份节点之一可以成为新主节点,其余节点可以仍然为备份节点。上面描述了新主节点的选择。例如,如图所示,节点1可以被选为新主节点,而节点2和节点3可以仍然为备份节点。
在步骤424a,当备份节点已经从其他节点获得至少Q个视图更改消息时,所述视图更改消息各自指示相应节点同意所述视图更改消息,新主节点可以被选择(例如,节点1)。所述至少Q个视图更改消息可以包括由备份节点本身组播的视图更改消息。在步骤425a,新主节点(例如,节点1)将包括至少Q个视图更改消息的新视图消息组播至至少一些备份节点。
如图4D所示,在步骤424b,在视图更改协议下的过程中,备份节点可以从新主节点获得指示该新主节点已经接收Q个或更多个视图更改消息的新视图消息,所述视图更改消息各自指示相应节点同意所述视图更改消息。在步骤425b,所述备份节点组播指示接受所述新视图消息的另一准备消息。所述另一准备消息可以至少在视图号方面不同于图4A和图4B的准备消息。
参考图4C,在步骤426a,新主节点(节点1)可以获得另一(Q-1)个或更多个准备消息。在步骤426b,剩余备份节点可以各自获得另一(Q-1)个或更多个准备消息。除了在视图更改之后准备消息内容可能不同并且一些节点可能已经提交一些所述请求之外,图4C和图4D的准备阶段类似于图4A和图4B的准备阶段。为了区分,用于图4C和图4D的准备阶段的准备消息被称为另一准备消息或另一数量的准备消息。
视图更改协议下的步骤425至步骤427类似于正常操作协议下的步骤415至步骤417,但是在以下方面可以不同:(1)视图号,(2)不需要在相应节点处重新提交所提交的请求,(3)无功能节点0可以不执行步骤425至步骤427,或者不诚实地执行步骤425至步骤427。
所公开的方法可以以较少的存储消耗需求确保区块链系统的正常功能。在一个示例中,在具有至少3F+1个节点的总数的区块链系统中,当至少F+1个节点已经组播所述提交消息时,这意味着至少2F+1个节点已经准备就绪,并且预准备消息和至少2F个准备消息是持久性的。在一些实施例中,在存储阶段,所述预准备消息和至少2F个准备消息由相应节点存储。例如,所述主节点和/或一些备份节点已经存储预准备消息和准备消息。因此,即使一个或多个或最坏情况下所有节点经历系统崩溃和重启,与没有存储阶段的过程不同,在存储阶段曾经存储的预准备消息和至少2F个消息被加载。因此,即使F个节点没有重启并恢复功能(可能已经组播或可能没有组播所述提交消息),因为存储并加载了预准备消息和至少2F个消息,整个共识验证过程可以有效地恢复和前进,且对存储消耗的需求较少并且不受系统崩溃的影响,否则所述系统崩溃可能导致不一致和/或分支或影响系统的安全性和/或活跃性。
在一些实施例中,如果主节点不在重启的节点中,则可以在超时时段结束时触发视图更改。因为至少Q个节点已经准备就绪,即使它们中的F个节点已经提交且没有执行重启,(Q-F)个节点也可以执行系统重启并加载所存储的预准备消息和准备消息。由重启的(Q-F)个节点组播的视图更改消息将携带崩溃之前的预准备消息和准备消息,这确保由新主节点组播的新视图消息将携带相同的内容。因此,防止了不一致的共识结果和区块链分支。
在其他实施例中,如果主节点在重启的Q个节点之中,则主节点可以尝试恢复正常操作协议或提议其他操作。如果重启不够快,由于至少(Q-F)个节点被加载的预准备消息和准备消息锁定,它们将不响应所述主节点。因此,不能达成共识,并且可以触发视图更改以选择新主节点。其余的可以遵循上述视图更改实施例。
图5A示出了根据本说明书的各种实施例的共识方法510的流程图。方法510可以由图1的系统112的一个或多个组件(例如,上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和一个或多个附加设备(例如节点A))的组合实现。方法510可以由一个或多个区块链节点(例如,备份节点)实现。方法510可以由包括各种硬件机器和/或软件的共识系统或设备(例如,计算机、服务器)实现。例如,所述共识系统或设备可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行方法510。以下呈现的方法510的操作旨在是说明性的。根据实施方式,方法510可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。除非另有说明,否则下面描述的各种框可以不必按照图中所示的顺序执行。例如,框512可以在框513开始之后开始并且在框513结束之前结束。类似地,框515可以在框516开始之后开始并且在框516结束之前结束。又例如,可以按顺序执行或并行执行框513和框514。
在一些实施例中,方法510可以在由多个(N个)节点维护的区块链上实现,其中所述节点之一充当主节点而其他(N-1)个节点充当备份节点,并且所述方法510由所述备份节点之一执行。N可以是不小于4的任何整数。在一些实施例中,N等于3F+1,其中F表示系统在PBFT共识机制中可以容忍的无功能节点的数量。所述主节点和所述备份节点可以是PBFT共识机制中定义的节点。方法510可以应用于针对一个或多个请求(例如,区块链交易请求)的一轮共识验证。方法510的步骤可以由当前视图中的备份节点执行,所述备份节点可以在视图更改发生的情况下仍然为备份节点或者成为新主节点。在方法510的实现期间,根据PBFT共识机制的视图可以改变或可以不改变。方法510的进一步细节可以参考图1至图4B以及上面的相关描述。
框511包括从主节点获得预准备消息。在一些实施例中,在从所述主节点获得所述预准备消息之前,所述方法510还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端、所述主节点或者一个或多个所述其他备份节点。术语“交易请求”中的交易可以通过区块链系统实现并被记录到区块链中。所述交易可以包括,例如,金融交易、用于部署或调用区块链合约的区块链合约交易、更新区块链状态(例如,世界状态)的交易等。所述交易不必涉及金融交易。所述交易请求可以包括要通过共识验证添加到区块链的区块链交易。在一个实施例中,所述预准备消息包括与一个或多个交易请求相对应的一个或多个交易的顺序。所述顺序可以由组播用于执行交易请求的预准备消息的主节点提议。所述顺序可以对应于包含交易的提议新区块的唯一哈希值标识。所述主节点和所述备份节点将验证所提议的顺序并尝试达成共识。或者,所述请求可以包括用于一个或多个计算设备的另一指令,以提供信息或执行另一功能。
框512包括将准备消息组播至主节点和其他(N-2)个备份节点中的至少一些节点,所述准备消息指示接受所述预准备消息。组播意味着广播到PBFT系统中的一个或多个或所有其他节点。每个运行的备份节点可以组播所述准备消息。
框513包括分别从(Q-1)个或更多个所述备份节点获得(Q-1)个或更多个准备消息,其中Q(法定数量)是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数。例如,执行方法510的节点是N个节点之一。所述(Q-1)个准备消息可以来自不同的节点并且是有效且一致的,这表示至少(Q-1)个备份节点和主节点同意所述预准备消息。
框514包括存储所述预准备消息和所述(Q-1)个或更多个准备消息。例如,如果(Q-1)是2F并且如果在前一步骤中获得3F个准备消息,则这里可以存储所述预准备消息和多个(2F至3F个,包括2F个和3F个)准备消息。在一些实施例中,仅存储预准备消息和(Q-1)个准备消息。例如,如果(Q-1)是2F并且如果在前一步骤中获得3F个准备消息,则这里可以仅存储预准备消息和2F个准备消息。在一些实施例中,存储预准备消息和(Q-1)个或更多个准备消息包括:仅存储预准备消息和(Q-1)个或更多个准备消息。例如,仅存储预准备消息和(Q-1)个准备消息。除了预准备消息和(Q-1)个或更多个准备消息之外,不存储任何消息。例如,对于每轮共识验证,不存储提交消息。当进行多轮共识验证时,同样适用。
在一些实施例中,可以以各种方式存储预准备消息和至少(Q-1)个准备消息,只要在系统停机时间恢复(例如系统重启)之后所存储的数据是可检索的。例如,可以将预准备消息和(Q-1)个或更多个准备消息存储在关系数据库、非关系数据库、文档系统等中。例如,可以将预准备消息和(Q-1)个或更多个准备消息存储在永久存储器中。本文描述的存储步骤和其他步骤可以不受编程语言的限制。
在一些实施例中,可以仅在满足框513时执行框514,即,仅在获得(Q-1)个或更多个准备消息时执行框514。在其他实施例中,可以在接收到每个预准备消息或准备消息之后立即进行存储。
在一些实施例中,在存储预准备消息和(Q-1)个或更多个准备消息(步骤514)之后并且在组播提交消息(步骤515)之前,所述方法还包括:执行系统重启;并且加载所存储的预准备消息和所存储的(Q-1)个或更多个准备消息。可以响应于正常操作的中断(例如,系统崩溃、断电等)来执行系统重启。所述中断可能发生在PBFT系统中的一个或多个或所有节点上。在一些实施例中,多达N个节点中的所有节点经历崩溃;所述N个节点中的至少Q个节点执行系统重启并分别加载所存储的相应预准备消息和所存储的(Q-1)个或更多个准备消息。接下来,可以触发或不触发视图更改协议。
在一个实施例中,如果重启足够快以避免触发超时,则可以不触发视图更改协议,因此系统重启避免触发视图更改。也就是说,执行系统重启包括:执行系统重启且不触发视图更改。因此,可以继续方法510的从框515开始的其余步骤。
否则,可以触发视图更改协议。在一个实施例中,在存储预准备消息和(Q-1)个或更多个准备消息之后并且在组播提交消息之前,所述方法还包括:组播包括所加载的预准备消息和所加载的(Q-1)个或更多个准备消息的视图更改消息。其他备份节点也可以组播视图更改消息。所述备份节点之一可以被选择成为新主节点,所述备份节点之一可以是或可以不是执行前述步骤的该一个备份节点。
在一些实施例中,如果执行上述步骤的备份节点未被选为新主节点,则它可以仍然为备份节点并在视图更改期间执行以下步骤。在存储预准备消息和(Q-1)个或更多个准备消息之后并且在组播提交消息之前,所述方法还包括:从新主节点获得指示所述新主节点已经接收Q个或更多个视图更改消息的新视图消息,所述视图更改消息各自指示相应节点同意所述视图更改消息;将另一准备消息组播至包括新主节点的至少一些所述备份节点,所述另一准备消息指示接受所述新视图消息;分别从(Q-1)个或更多个备份节点获得另一(Q-1)个或更多个准备消息,其中所述另一(Q-1)个或更多个准备消息包括组播另一准备消息。
在其他实施例中,如果执行上述步骤的节点被选为新主节点,则它可以成为新主节点并在视图更改期间执行以下步骤。在存储预准备消息和(Q-1)个或更多个准备消息之后并且在组播提交消息之前,所述方法还包括:分别从Q个或更多个备份节点获得Q个或更多个视图更改消息,所述视图更改消息各自指示相应节点同意所述视图更改消息,其中Q个或更多个视图更改消息包括所述组播视图更改消息;向至少一些所述备份节点组播指示该备份节点已经作为新主节点接收所述Q个或更多个视图更改消息的新视图消息;分别从(Q-1)个或更多个备份节点获得另一(Q-1)个或更多个准备消息,其中所述另一(Q-1)个或更多个准备消息包括所述组播另一准备消息。
如果视图更改没有发生,则可以在与框511-框514相同的视图中执行框515和框516以及随后的步骤,或者如果在框515之前发生视图更改,则可以在新视图中执行框515和框516以及随后的步骤。
框515包括将提交消息组播至所述主节点和其他备份节点中的至少一些节点,所述提交消息指示该一个备份节点同意(Q-1)个或更多个准备消息。在一些实施例中,所述提交消息指示该一个备份节点同意预准备消息并且已经获得(Q-1)个或更多个准备消息。在一些实施例中,可以执行验证步骤以同意组播所述提交消息。例如,如上所述,可以根据针对摘要d进行验证的顺序来确定摘要D(m)。如果是一致的,则可以组播提交消息。
在一些实施例中,框513中的(Q-1)个或更多个备份节点中的多达F个节点在分别组播提交消息之后是故障的或者在其他方面是无功能的,并且不执行系统重启。例如,已提交的F个节点可能会遇到系统崩溃,并且不会重启以恢复功能。尽管如此,可以正确地执行共识验证,而不会导致不一致的结果和区块链分支。
框516包括分别从所述主节点加所述备份节点中的Q个或更多个节点获得Q个或更多个提交消息,所述提交消息各自指示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。在一些实施例中,所述提交消息指示组播所述提交消息的相应节点同意预准备消息并且已经获得(Q-1)个或更多个准备消息。所述Q个提交消息可以来自不同的节点并且是有效的且一致的,这指示Q个节点准备就绪以按顺序执行所述请求。因此,大多数节点达成共识,并且可以执行下一个执行步骤。
在一些实施例中,在组播提交消息(框515)之后并且在执行请求之前,所述方法还包括:执行系统重启,并且加载所存储的预准备消息和所存储的(Q-1)个或更多个准备消息。所述系统重启可以是自动的或非自动的。所述系统重启可能是由系统或设备功能中断引起的,例如系统崩溃。
在一些实施例中,方法510还可以包括根据所述顺序将所述一个或多个交易打包到所述区块链的由该一个备份节点维护的本地副本中。例如,所述请求可以被共识验证,因为至少(Q-F)个诚实节点(Q个提交消息但考虑了至多F个无功能节点)已经验证其提交消息中的摘要d(或者对于主节点,可以不必执行验证,因为所述主节点提议所述摘要d)。因此,如果足够的节点已经验证相应交易,则可以将交易打包到区块链中。可以通知最初发送请求的客户端(例如,节点A)。
图5B示出了根据本说明书的各种实施例的共识方法520的流程图。方法520可以由图1的系统112的一个或多个组件(例如,上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和一个或多个附加设备(例如节点A)的组合)实现。方法520可以由一个或多个区块链节点(例如,主节点)实现。方法520可以由包括各种硬件机器和/或软件的共识系统或设备(例如,计算机、服务器)实现。例如,所述共识系统或设备可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行方法520。以下呈现的方法520的操作旨在是说明性的。根据实施方式,方法520可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。除非另有说明,否则下面描述的各种框可以不必按照图中所示的顺序执行。例如,框521可以在框522开始之后开始并且在框522结束之前结束。类似地,框524可以在框525开始之后开始并且在框525结束之前结束。又例如,可以按顺序执行或并行执行框522和框523。
在一些实施例中,方法520可以在由多个(N个)节点维护的区块链上实现,其中所述节点之一充当主节点而其他(N-1)个节点充当备份节点,并且所述方法520由主节点执行。所述主节点和所述备份节点可以是PBFT模型中定义的节点。方法520可以应用于针对一个或多个请求(例如,区块链交易请求)的一轮共识验证。方法520的进一步细节可以参考图1至图4B以及上面的相关描述。
框521包括将预准备消息组播至至少一些所述备份节点。在一些实施例中,在将所述预准备消息组播至至少一些所述备份节点之前,方法520还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端(例如,轻节点)或者一个或多个所述备份节点。所述交易请求可以包括要通过共识验证添加到区块链中的区块链交易。在一个实施例中,所述预准备消息包括与一个或多个交易请求相对应的一个或多个交易的顺序。所述顺序可以由组播用于执行交易请求的预准备消息的主节点提议。所述顺序可以对应于包含交易的提议新区块的唯一哈希值标识。所述主节点和所述备份节点将验证所提议的顺序并尝试达成共识。或者,所述请求可以包括用于一个或多个计算设备的另一指令,以提供信息或执行另一功能。
除了如果主节点变成无功能的,则视图更改被触发并且新主节点被选择之外,框522至框525可以类似于框513至框516以及上面的相关描述。
框522包括分别从(Q-1)个或更多个备份节点获得(Q-1)个或更多个准备消息,其中所述准备消息各自指示相应备份节点接受所述预准备消息,Q(法定数量)是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数。所述备份节点可以分别组播所述准备消息。在一些实施例中,F表示为保持N个节点的共识系统运行,N个节点中被允许的无功能节点的最大数量。例如,执行方法520的节点是N个节点之一。所述(Q-1)个或更多个准备消息可以来自不同的节点并且是有效的且一致的,这指示(Q-1)个或更多个备份节点和主节点同意所述预准备消息。
框523包括存储所述预准备消息和所述(Q-1)个或更多个准备消息。例如,如果(Q-1)是2F并且如果在前一步骤中获得3F个准备消息,则这里可以存储预准备消息和多个(2F至3F个,包括2F个和3F个)准备消息。在一些实施例中,仅存储预准备消息和(Q-1)个准备消息。例如,如果(Q-1)是2F并且如果在前一步骤中获得3F个准备消息,则这里可以仅存储预准备消息和2F个准备消息。在一些实施例中,存储预准备消息和(Q-1)个或更多个准备消息包括:仅存储预准备消息和(Q-1)个或更多个准备消息。例如,仅存储预准备消息和(Q-1)个准备消息。除了预准备消息和(Q-1)个或更多个准备消息之外,不存储任何消息。例如,对于每轮共识验证,不存储提交消息。当进行多轮共识验证时,同样适用。
在一些实施例中,可以以各种方式存储预准备消息和(Q-1)个或更多个准备消息,只要在系统停机时间恢复(例如系统重启)之后所存储的数据是可检索的。例如,可以将预准备消息和(Q-1)个或更多个准备消息存储在关系数据库、非关系数据库、文档系统等中。例如,可以将预准备消息和(Q-1)个或更多个准备消息存储在永久存储器中。本文描述的存储步骤和其他步骤可以不受编程语言的限制。
在一些实施例中,可以仅在满足框522时执行框523,即,仅在获得(Q-1)个或更多个准备消息时执行框523。在其他实施例中,可以在接收到每个预准备消息或准备消息之后立即进行存储。
在一些实施例中,在存储预准备消息和(Q-1)个或更多个准备消息(框523)之后并且在组播所述提交消息(框524)之前,所述方法还包括:执行系统重启;并且加载所存储的预准备消息和所存储的(Q-1)个或更多个准备消息。可以响应于正常操作的中断(例如,系统崩溃、断电等)执行系统重启。所述中断可以发生在PBFT系统中的一个或多个或所有节点上。在一些实施例中,多达N个节点中的所有节点经历崩溃;所述N个节点中的至少Q个节点执行系统重启并分别加载所存储的相应预准备消息和所存储的(Q-1)个或更多个准备消息。接下来,可以触发或不触发视图更改协议。
在一个实施例中,如果重启足够快以避免触发超时,则可以不触发视图更改协议,因此系统重启避免触发视图更改。因此,可以继续方法520的从框524开始的其余步骤。在另一实施例中,可以触发视图更改协议,并且可以不继续方法520的从框524开始的其余步骤。
框524包括将提交消息组播至至少一些备份节点,所述提交消息指示所述主节点同意(Q-1)个或更多个准备消息。在一些实施例中,所述提交消息指示所述主节点已获得(Q-1)个或更多个准备消息。在一些实施例中,框522中的(Q-1)个或更多个备份节点中的多达F个节点在分别组播所述提交消息之后是故障的或者在其他方面是无功能的,并且不执行系统重启。例如,已提交的F个节点可能会遇到系统崩溃,并且不会重启以恢复功能。尽管如此,可以正确地执行共识验证,而不会导致不一致的结果和区块链分支。
框525包括分别从主节点加备份节点中的Q个或更多个节点获得Q个或更多个提交消息,所述提交消息各自指示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息,其中Q个或更多个提交消息包括组播提交消息。在一些实施例中,所述提交消息指示组播所述提交消息的相应节点同意预准备消息并且已经获得(Q-1)个或更多个准备消息。所述Q个或更多个提交消息可以来自不同的节点并且是有效的且一致的,这指示Q个或更多个节点准备就绪以按顺序执行所述请求。因此,大多数节点达成共识,并且可以执行下一个执行步骤。
在一些实施例中,在组播提交消息(框525)之后并且在执行请求之前,所述方法还包括:执行系统重启,并且加载所存储的预准备消息和所存储的(Q-1)个或更多个准备消息。所述系统重启可以是自动的或非自动的。所述系统重启可能是由系统或设备功能中断引起的,例如系统崩溃。
在一些实施例中,方法520还可以包括根据所述顺序将所述一个或多个交易打包到所述区块链的由所述主节点维护的本地副本中。例如,可以对请求进行共识验证,因为至少(Q-F)个诚实节点(Q个提交消息但考虑了至多F个无功能节点)已经验证其提交消息中的摘要d(或者对于主节点,可以不必执行验证,因为所述主节点提议所述摘要d)。因此,如果足够的节点已经验证相应交易,则可以将交易打包到区块链中。可以通知最初发送请求的客户端(例如,节点A)。
图6A示出了根据各种实施例的共识系统610的框图。共识系统610(例如,计算机系统)可以是上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和附加设备(例如,节点A)的组合的实现的示例。方法510可以由共识系统610实现。共识系统610可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述非瞬态计算机可读存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行方法510。共识系统610可以在备份节点中实现。共识系统610可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,共识系统610可以被称为共识装置。所述共识装置可以用于维护区块链,其中多个(N个)节点维护区块链,其中N个节点之一充当主节点而其他(N-1)个节点充当备份节点,所述共识装置充当(N-1)个备份节点之一,并且包括一个或多个处理器和一个或多个非瞬态计算机可读存储器,所述存储器耦接到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使所述装置执行操作。所述共识装置可以包括与指令(例如,软件指令)对应的各种单元/模块。所述共识装置可以包括:第一获取模块611,用于从主节点获得预准备消息;第一组播模块612,用于将准备消息组播到主节点和其他(N-2)个备份节点中的至少一些节点,所述准备消息指示接受所述预准备消息;第二获取模块613,用于分别从(Q-1)个或更多个备份节点获取(Q-1)个或更多个准备消息,其中Q(法定数量)为(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数,并且(Q-1)个或更多个准备消息包括所述组播准备消息;存储模块614,用于存储预准备消息和(Q-1)个或更多个准备消息;第二组播模块615,用于将提交消息组播至主节点和其他备份节点中的至少一些节点,所述提交消息指示该一个备份节点同意(Q-1)个或更多个准备消息;第三获取模块616,用于分别从主节点加备份节点中的Q个或更多个节点获取Q个或更多个提交消息,所述提交消息各自指示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息,其中所述Q个或更多个提交消息包括所述组播提交消息。
在一些实施例中,第一获取模块611或另一模块还用于从以下中的至少一个获得一个或多个交易请求:一个或多个客户端、主节点或者一个或多个其他备份节点。所述共识装置还可以包括打包模块617,用于根据所述顺序将所述一个或多个交易打包到所述区块链的由该一个备份节点维护的本地副本中。
图6B示出了根据各种实施例的共识系统620的框图。共识系统620(例如,计算机系统)可以是上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和附加设备(例如,节点A)的组合的实现的示例。方法520可以由共识系统620实现。共识系统620可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述非瞬态计算机可读存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行方法520。共识系统620可以在主节点中实现。共识系统620可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,共识系统620可以被称为共识装置。所述共识装置可以用于维护区块链,其中多个(N个)节点维护区块链,其中N个节点之一充当主节点而其他(N-1)个节点充当备份节点,所述共识装置充当主节点并且包括一个或多个处理器和一个或多个非瞬态计算机可读存储器,所述存储器耦接到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使所述装置执行操作。所述共识装置可以包括与指令(例如,软件指令)对应的各种单元/模块。所述共识装置可以包括第一组播模块621,用于将预准备消息组播至至少一些所述备份节点;第一获取模块622,用于分别从(Q-1)个或更多个备份节点获取(Q-1)个或更多个准备消息,其中所述准备消息各自指示相应备份节点接受预准备消息,Q(法定数量)是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;存储模块623,用于存储预准备消息和(Q-1)个或更多个准备消息;第二组播模块624,用于将提交消息组播至至少一些备份节点,所述提交消息指示所述主节点同意(Q-1)个或更多个准备消息;第二获取模块625,用于分别从主节点加备份节点中的Q个或更多个节点获取Q个或更多个提交消息,所述提交消息各自指示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息,其中所述Q个或更多个提交消息包括组播提交消息。
在一些实施例中,所述共识装置还可以包括第三获取模块626,用于从以下中的至少一个获得一个或多个交易请求:一个或多个客户端或者一个或多个备份节点。所述共识装置还可以包括打包模块627,用于根据所述顺序将所述一个或多个交易打包到所述区块链的由所述主节点维护的本地副本中。
本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备或结合硬连线和/或程序逻辑以实现这些技术的任何其他设备或设备的组合。专用计算设备可以被实现为个人计算机、膝上型计算机、蜂窝电话、照相电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板电脑、可穿戴设备或其组合。计算设备通常由操作系统软件控制和协调。传统的操作系统控制和调度用于执行的计算机进程,执行存储器管理,提供文件系统、网络、I/O服务,以及提供用户界面功能,例如图形用户界面(“GUI”)等。这里描述的各种系统、装置、存储介质、模块和单元可以在专用计算设备或者一个或多个专用计算设备的一个或多个计算芯片中实现。在一些实施例中,本文描述的指令可以在专用计算设备上的虚拟机中实现。当被执行时,指令可以促使专用计算设备执行本文描述的各种方法。虚拟机可以包括软件、硬件或其组合。例如,虚拟机可以包括为以太坊中的智能合约提供运行时环境的以太坊虚拟机(EVM)软件。
图7是示出计算机系统700的框图,在所述计算机系统700上可以实现本文描述的任何实施例。系统700可以执行本文描述的任何方法(例如,共识方法510、共识方法520)。系统700可以在本文描述的任何系统(例如,共识系统610、共识系统620)中实现。系统700可以在本文描述的任何节点中实现,并且被配置为执行用于实现区块链合约的相应步骤。计算机系统700包括用于通信信息的总线702或其他通信机制,与总线702耦接以处理信息的一个或多个硬件处理器704。硬件处理器704可以是例如一个或多个通用微处理器。
计算机系统700还包括耦接到总线702的用于存储信息和可由处理器704执行的指令的主存储器706,例如随机存取存储器(RAM)、高速缓存和/或其他动态存储设备。主存储器706还可以用于在执行可由处理器704执行的指令期间存储临时变量或其他中间信息。当这些指令存储在处理器704可访问的存储介质中时,这些指令将计算机系统700呈现为被定制以执行指令中指定的操作的专用机器。计算机系统700还包括耦接到总线702的用于存储处理器704的静态信息和指令的只读存储器(ROM)708或其他静态存储设备。存储设备710诸如磁盘、光盘或USB拇指驱动器(闪存驱动器)等被提供并被耦接到总线702以存储信息和指令。
计算机系统700可以使用与计算机系统相结合使得计算机系统700成为专用机器或将计算机系统700编程为专用机器的定制硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑实现本文所述的技术。根据一个实施例,本文描述的操作、方法和过程由计算机系统700响应于处理器704执行主存储器706中包含的一个或多个指令的一个或多个序列而执行。这些指令可以从另一存储介质(例如存储设备710)读入主存储器706中。主存储器706中包含的指令序列的执行促使处理器704执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令组合。
主存储器706、ROM 708和/或存储710可以包括非瞬态存储介质。本文使用的术语“非瞬态介质”和类似术语是指存储促使机器以特定方式操作的数据和/或指令的介质,所述介质不包括暂时性信号。这种非瞬态介质可以包括非易失性介质和/或易失性介质。例如,非易失性介质包括光盘或磁盘,诸如存储设备710。易失性介质包括动态存储器,例如主存储器706。常规形式的非瞬态介质包括,例如,软磁盘、软盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒式磁带的以及它们的网络版本。
计算机系统700还包括耦接到总线702的网络接口718。网络接口718提供耦接到一个或多个网络链路的双向数据通信,所述一个或多个网络链路连接到一个或多个本地网络。例如,网络接口718可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或调制解调器,以提供与相应类型的电话线的数据通信连接。作为另一示例,网络接口718可以是局域网(LAN)卡,以提供到兼容LAN(或与WAN通信的WAN组件)的数据通信连接。还可以实现无线链路。在任何这样的实施方式中,网络接口718发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
计算机系统700可以通过网络、网络链路和网络接口718发送消息和接收数据,包括程序代码。在因特网示例中,服务器可以通过因特网、ISP、本地网络和网络接口718发送用于应用程序的请求代码。
所接收的代码可在其被接收时由处理器704执行,和/或存储在存储设备710或其他非易失性存储器中以用于稍后执行。
前面部分中描述的每个过程、方法和算法可以在由包括计算机硬件的一个或多个计算机系统或计算机处理器执行的代码模块中实现,并且完全或部分自动化地实现。过程和算法可以部分或全部地在专用电路中实现。
上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都旨在落入本说明书的范围内。另外,在一些实施方式中可以省略某些方法或过程框。本文描述的方法和过程也不限于任何特定序列,与其相关的框或状态可以以适当的其他序列执行。例如,所描述的框或状态可以以不同于具体公开的顺序执行,或者多个框或状态可以在单个框或状态中组合。框或状态的示例可以串行、并行或以某种其他方式执行。可以将框或状态添加到所公开的实施例中或从所公开的实施例中移除。本文描述的系统和组件的示例可以与所描述的不同地被配置。例如,与所公开的实施例相比,可以添加、移除或重新排列元件。
本文描述的方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或被永久配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现引擎,所述处理器实现引擎操作以执行本文描述的一个或多个操作或功能。
类似地,本文描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是硬件的示例。例如,所述方法的至少一些操作可以由一个或多个处理器或处理器实现引擎执行。此外,一个或多个处理器还可以操作以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(SaaS)。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以经由网络(例如,因特网)并且经由一个或多个适当的接口(例如,应用程序接口(API))被访问。
某些操作的性能可以在处理器之间分配,不仅驻留在单个机器中,而且跨多个机器被部署。在一些实施例中,处理器或处理器实现引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他实施例中,处理器或处理器实现引擎可以分布在多个地理位置。
在整个说明书中,多个实例可以实现作为单个实例所描述的组件、操作或结构。尽管一个或多个方法的各个操作被示出并描述为独立的操作,但是可以同时执行一个或多个独立的操作,并且不需要以所示的顺序执行所述操作。在配置中作为独立组件呈现的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为独立的组件。这些和其他变化、修改、添加和改进都落入本文中的主题的范围内。此外,本文使用的相关术语(诸如“第一”、“第二”、“第三”等)不表示任何顺序、高度或重要性,而是用于将一个元件与另一元件区分开。此外,术语“一”、“一个”和“多个”在本文中并不表示数量的限制,而是表示存在至少一个所述的物品。
尽管已经参考具体实施例描述了主题的概述,但是在不脱离本说明书的实施例的较宽范围的情况下,可以对这些实施例进行各种修改和改变。具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的等同物的全部范围限定。

Claims (15)

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-1个或更多个准备消息之后并且在组播所述提交消息之前,还包括:
执行系统重启;并且
加载存储的所述预准备消息和存储的所述Q-1个或更多个准备消息。
9.如权利要求8所述的方法,在存储所述预准备消息和所述Q-1个或更多个准备消息之后并且在组播所述提交消息之前,还包括:
组播视图更改消息,所述视图更改消息包括加载的所述预准备消息和加载的所述Q-1个或更多个准备消息。
10.如权利要求9所述的方法,在存储所述预准备消息和所述Q-1个或更多个准备消息之后并且在组播所述提交消息之前,还包括:
从新主节点获得指示所述新主节点已经接收Q个或更多个视图更改消息的新视图消息,所述视图更改消息各自指示相应节点同意所述视图更改消息;
将另一准备消息组播至包括所述新主节点的至少一些所述备份节点,所述另一准备消息指示接受所述新视图消息;并且
分别从Q-1个或更多个所述备份节点获得另一Q-1个或更多个准备消息。
11.如权利要求10所述的方法,其中:
所述Q个或更多个视图更改消息包括组播视图更改消息;以及
所述另一Q-1个或更多个准备消息包括另一组播准备消息。
12.如权利要求9所述的方法,在存储所述预准备消息和所述Q-1个或更多个准备消息之后并且在组播所述提交消息之前,还包括:
分别从Q个或更多个所述备份节点获得Q个或更多个视图更改消息,所述视图更改消息各自指示相应节点同意所述视图更改消息;
向至少一些所述备份节点组播指示该备份节点已经作为新主节点接收所述Q个或更多个视图更改消息的新视图消息;并且
分别从Q-1个或更多个所述备份节点获得另一Q-1个或更多个准备消息。
13.如权利要求8所述的方法,其中,执行所述系统重启包括:
执行所述系统重启且不触发视图更改。
14.一种充当用于维护区块链的备份节点之一的共识系统,包括:
一个或多个处理器;和
耦接到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求1至13中任一项所述的方法。
15.一种充当用于维护区块链的备份节点之一的共识装置,所述装置包括用于执行权利要求1至13中任一项所述的方法的多个模块。
CN201980003366.5A 2019-03-18 2019-03-18 共识系统停机时间恢复 Active CN110870288B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/078552 WO2019101245A2 (en) 2019-03-18 2019-03-18 Consensus system downtime recovery

Publications (2)

Publication Number Publication Date
CN110870288A true CN110870288A (zh) 2020-03-06
CN110870288B CN110870288B (zh) 2022-05-27

Family

ID=66631283

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980003366.5A Active CN110870288B (zh) 2019-03-18 2019-03-18 共识系统停机时间恢复

Country Status (9)

Country Link
US (2) US11347598B2 (zh)
EP (1) EP3607733B1 (zh)
JP (1) JP6880227B2 (zh)
KR (1) KR102365793B1 (zh)
CN (1) CN110870288B (zh)
AU (1) AU2019203865B2 (zh)
SG (1) SG11201908387SA (zh)
TW (1) TWI724678B (zh)
WO (1) WO2019101245A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113850600A (zh) * 2021-12-01 2021-12-28 深圳前海微众银行股份有限公司 基于区块链的交易共识方法、装置、设备及存储介质

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102170345B1 (ko) * 2019-03-18 2020-10-28 알리바바 그룹 홀딩 리미티드 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
US10938750B2 (en) 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
ES2862428T3 (es) 2019-03-18 2021-10-07 Advanced New Technologies Co Ltd Recuperación de tiempo de inactividad de sistema de consenso
CA3057395A1 (en) 2019-03-18 2019-05-31 Alibaba Group Holding Limited System and method for ending view change protocol
US11108553B2 (en) * 2019-04-05 2021-08-31 International Business Machines Corporation Database transaction guaranteed commitment
CN111108478B (zh) 2019-07-11 2023-11-21 创新先进技术有限公司 一种用于通信和共享区块链数据的方法、系统、和装置
SG11202001989WA (en) 2019-07-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage
SG11202001975SA (en) 2019-07-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage
CN110730204B (zh) * 2019-09-05 2022-09-02 创新先进技术有限公司 区块链网络中删除节点的方法和区块链系统
CN110727731B (zh) 2019-09-05 2021-12-21 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统
US20210099312A1 (en) * 2019-09-27 2021-04-01 Cypherium Blockchain Inc. Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system
CN110460484B (zh) * 2019-10-10 2020-02-18 杭州趣链科技有限公司 一种基于pbft算法改进的单节点异常主动恢复方法
CN111522648B (zh) * 2020-07-03 2020-10-09 支付宝(杭州)信息技术有限公司 一种区块链的交易处理方法、装置及电子设备
KR102447063B1 (ko) * 2020-12-24 2022-09-23 한양대학교 산학협력단 개선된 pbft 기반의 블록체인 관리 방법, 블록체인 시스템 및 노드 장치
US11343313B1 (en) * 2021-01-28 2022-05-24 International Business Machines Corporation Fault tolerant periodic leader rotation for blockchain
US11743327B2 (en) * 2021-02-05 2023-08-29 International Business Machines Corporation Topological ordering of blockchain associated proposals
KR102574890B1 (ko) * 2021-04-02 2023-09-06 주식회사 헤세그 장애 노드에 내성을 갖는 블록체인 시스템 및 그 동작 방법
US11983161B2 (en) 2021-06-23 2024-05-14 Bank Of America Corporation System for mitigating data loss in an edge computing environment using machine learning and distributed ledger techniques
KR20240047735A (ko) * 2022-10-05 2024-04-12 한양대학교 산학협력단 상태기계복제를 위한 2단계 비잔틴 합의 방법 및 시스템
CN116991623B (zh) * 2023-08-30 2024-01-02 杭州趣链科技有限公司 区块链节点异常恢复方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107528882A (zh) * 2017-07-14 2017-12-29 阿里巴巴集团控股有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备
CN108108967A (zh) * 2017-12-29 2018-06-01 山大地纬软件股份有限公司 面向复杂数字资产的多阶段pbft共识系统及方法
CN108492103A (zh) * 2018-02-07 2018-09-04 北京大学深圳研究生院 一种联盟区块链共识方法
CN109447810A (zh) * 2018-11-29 2019-03-08 杭州秘猿科技有限公司 并行区块链共识方法、系统、电子设备和计算机可读存储介质
CN109472593A (zh) * 2018-10-10 2019-03-15 远光软件股份有限公司 一种基于区块链技术的结算方法、装置及区块链网络

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728958B1 (en) 1998-07-31 2004-04-27 Hewlett-Packard Development Company, L.P. Volatile resource manager with pre-prepare notification
US6671821B1 (en) * 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
US6928577B2 (en) * 2002-07-29 2005-08-09 Eternal Systems, Inc. Consistent message ordering for semi-active and passive replication
US7454521B2 (en) * 2003-10-23 2008-11-18 Microsoft Corporation Byzantine fault quantifying clock synchronization
US8868504B2 (en) 2007-03-07 2014-10-21 Oracle International Corporation Database system with active standby and nodes
US8943271B2 (en) 2008-06-12 2015-01-27 Microsoft Corporation Distributed cache arrangement
US9455992B2 (en) 2009-06-12 2016-09-27 Microsoft Technology Licensing, Llc Trusted hardware component for distributed systems
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8549142B2 (en) 2011-03-28 2013-10-01 Siemens Corporation Replicated state machine utilizing view change protocol resilient to performance attacks
US20130138614A1 (en) 2011-11-30 2013-05-30 Mark Travis Two-phase data locking transaction processing with distributed partitions and mirroring
US9450852B1 (en) * 2014-01-03 2016-09-20 Juniper Networks, Inc. Systems and methods for preventing split-brain scenarios in high-availability clusters
JP2015146165A (ja) * 2014-02-04 2015-08-13 日本電信電話株式会社 障害耐性信号処理装置および障害耐性信号処理方法
US9251017B2 (en) 2014-03-25 2016-02-02 International Business Machines Corporation Handling failed cluster members when replicating a database between clusters
WO2016024986A1 (en) 2014-08-15 2016-02-18 Hewlett-Packard Development Company, L.P. Three phase commit for a distributed file system
US9720789B2 (en) * 2014-10-15 2017-08-01 Netapp, Inc. Multicast transport configuration
US10304143B2 (en) 2016-05-05 2019-05-28 Lance Timothy Kasper Consensus system for manipulation resistant digital record keeping
EP3317775B1 (en) 2015-07-02 2022-02-16 Nasdaq, Inc. Systems and methods of secure provenance for distributed transaction databases
US10812582B2 (en) * 2016-03-10 2020-10-20 Vmware, Inc. Management of applications across nodes using exo-clones
US10198325B2 (en) 2016-05-24 2019-02-05 Mastercard International Incorporated Method and system for desynchronization recovery for permissioned blockchains using bloom filters
US10204341B2 (en) 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
WO2017186317A1 (en) 2016-10-04 2017-11-02 Nec Europe Ltd. Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
US10158527B2 (en) 2016-10-28 2018-12-18 International Business Machines Corporation Changing an existing blockchain trust configuration
JP6968166B2 (ja) 2016-11-25 2021-11-17 エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー データをビザンチン障害耐性複製する方法及びシステム
US11954697B2 (en) 2017-02-27 2024-04-09 Ncr Corporation Blockchain consumer ledger
CN106789095B (zh) 2017-03-30 2020-12-08 腾讯科技(深圳)有限公司 分布式系统及消息处理方法
US20180285217A1 (en) 2017-03-31 2018-10-04 Intel Corporation Failover response using a known good state from a distributed ledger
WO2018194368A1 (en) 2017-04-18 2018-10-25 Samsung Electronics Co., Ltd. Method and apparatus for access control in distributed blockchain-based internet of things (iot) network
US20180308091A1 (en) 2017-04-21 2018-10-25 Vmware, Inc. Fairness preserving byzantine agreements
US11626993B2 (en) 2017-05-22 2023-04-11 Visa International Service Association Network for improved verification speed with tamper resistant data
US10740733B2 (en) 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
US11055703B2 (en) 2017-06-19 2021-07-06 Hitachi, Ltd. Smart contract lifecycle management
CN107301600B (zh) 2017-06-23 2021-07-20 北京天德科技有限公司 一种跨链交易的区块链互联网模型的核心构建方法
CN107248076A (zh) 2017-06-24 2017-10-13 北京天德科技有限公司 一种双链式跨链交易的区块链互联网模型的核心算法
EP3649558B8 (en) 2017-07-06 2024-04-17 Chromaway AB Method and system for a distributed computing system
US10984134B2 (en) * 2017-07-14 2021-04-20 Microsoft Technology Licensing, Llc Blockchain system for leveraging member nodes to achieve consensus
US11281644B2 (en) * 2017-07-28 2022-03-22 Hitachi, Ltd. Blockchain logging of data from multiple systems
CN107423426B (zh) 2017-08-02 2020-06-02 众安信息技术服务有限公司 一种区块链块数据的数据归档方法及电子设备
US10735203B2 (en) 2017-10-09 2020-08-04 Cisco Technology, Inc. Sharing network security threat information using a blockchain network
US10832241B2 (en) 2017-10-11 2020-11-10 International Business Machines Corporation Transaction reservation for block space on a blockchain
CN107819749A (zh) 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法
CA3078476C (en) 2017-10-31 2022-10-18 Ab Initio Technology Llc Managing a computing cluster using durability level indicators
US10572352B2 (en) 2017-11-01 2020-02-25 Vmware, Inc. Byzantine fault tolerance with verifiable secret sharing at constant overhead
US10735450B2 (en) 2017-11-30 2020-08-04 Intel Corporation Trust topology selection for distributed transaction processing in computing environments
US11055419B2 (en) 2017-12-01 2021-07-06 Alan Health and Science Decentralized data authentication system for creation of integrated lifetime health records
US11243945B2 (en) 2017-12-11 2022-02-08 International Business Machines Corporation Distributed database having blockchain attributes
US11139979B2 (en) * 2017-12-18 2021-10-05 Koninklijke Kpn N.V. Primary and secondary blockchain device
CN108134706B (zh) 2018-01-02 2020-08-18 中国工商银行股份有限公司 区块链多活高可用系统、计算机设备以及方法
CN108108487B (zh) 2018-01-10 2019-11-22 杭州复杂美科技有限公司 一种区块链的共识方法
EP3522064B1 (en) * 2018-02-02 2021-12-22 Università Degli Studi Di Trento A method and apparatus for distributed, privacy-preserving and integrity-preserving exchange, inventory and order book
US20190251573A1 (en) 2018-02-09 2019-08-15 Airbus (S.A.S.) Systems and methods of verifying credentials of aircraft personnel using a blockchain computer system
TWI659373B (zh) 2018-02-14 2019-05-11 財團法人工業技術研究院 區塊鏈系統及應用其的方法
CN108616596B (zh) 2018-05-09 2020-12-25 南京邮电大学 基于动态授权和网络环境感知的区块链自适应共识方法
US10671315B2 (en) * 2018-08-17 2020-06-02 Bank Of America Corporation Blockchain architecture for selective data restore and migration
CN109345386B (zh) 2018-08-31 2020-04-14 阿里巴巴集团控股有限公司 基于区块链的交易共识处理方法及装置、电子设备
CN109347804B (zh) 2018-09-19 2020-02-07 电子科技大学 一种用于区块链的拜占庭容错共识优化方法
CN111045855B (zh) * 2018-10-12 2024-01-26 伊姆西Ip控股有限责任公司 备份数据的方法、装置和计算机程序产品
CN109327459B (zh) 2018-11-12 2020-12-01 崔晓晖 一种联盟区块链网络的共识方法
SG11201907346UA (en) 2018-12-13 2019-09-27 Alibaba Group Holding Ltd Performing a change of primary node in a distributed system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107528882A (zh) * 2017-07-14 2017-12-29 阿里巴巴集团控股有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备
CN108108967A (zh) * 2017-12-29 2018-06-01 山大地纬软件股份有限公司 面向复杂数字资产的多阶段pbft共识系统及方法
CN108492103A (zh) * 2018-02-07 2018-09-04 北京大学深圳研究生院 一种联盟区块链共识方法
CN109472593A (zh) * 2018-10-10 2019-03-15 远光软件股份有限公司 一种基于区块链技术的结算方法、装置及区块链网络
CN109447810A (zh) * 2018-11-29 2019-03-08 杭州秘猿科技有限公司 并行区块链共识方法、系统、电子设备和计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XU HAO ET AL: "Dynamic Practical Byzantine Fault Tolerance", 《2018 IEEE CONFERENCE ON COMMUNICATION AND NETWORK SECURITY(CNS)》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113850600A (zh) * 2021-12-01 2021-12-28 深圳前海微众银行股份有限公司 基于区块链的交易共识方法、装置、设备及存储介质
CN113850600B (zh) * 2021-12-01 2022-04-26 深圳前海微众银行股份有限公司 基于区块链的交易共识方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US10922195B2 (en) 2021-02-16
WO2019101245A3 (en) 2020-01-16
EP3607733A4 (en) 2020-05-27
KR20200112633A (ko) 2020-10-05
SG11201908387SA (en) 2019-10-30
JP2020518887A (ja) 2020-06-25
EP3607733B1 (en) 2022-02-09
AU2019203865A1 (en) 2019-05-31
KR102365793B1 (ko) 2022-02-21
US20200125456A1 (en) 2020-04-23
CN110870288B (zh) 2022-05-27
US20200004643A1 (en) 2020-01-02
EP3607733A2 (en) 2020-02-12
US11347598B2 (en) 2022-05-31
AU2019203865B2 (en) 2021-01-21
TW202037138A (zh) 2020-10-01
TWI724678B (zh) 2021-04-11
JP6880227B2 (ja) 2021-06-02
WO2019101245A2 (en) 2019-05-31

Similar Documents

Publication Publication Date Title
CN110870288B (zh) 共识系统停机时间恢复
CN110915185B (zh) 共识系统停机时间恢复
CN111630826B (zh) 共识系统和方法
CN110800258B (zh) 用于结束视图更改协议的系统和方法
CN111183625B (zh) 用于在区块链网络中删除节点的系统和方法
CN110785966B (zh) 用于结束视图更改协议的系统和方法
US10938750B2 (en) Consensus system downtime recovery
AU2019101612A4 (en) Consensus system downtime recovery
AU2019101610A4 (en) Consensus system downtime recovery

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
TA01 Transfer of patent application right

Effective date of registration: 20201012

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201012

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40028138

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant