CN111630826A - 共识系统和方法 - Google Patents

共识系统和方法 Download PDF

Info

Publication number
CN111630826A
CN111630826A CN201980004338.5A CN201980004338A CN111630826A CN 111630826 A CN111630826 A CN 111630826A CN 201980004338 A CN201980004338 A CN 201980004338A CN 111630826 A CN111630826 A CN 111630826A
Authority
CN
China
Prior art keywords
nodes
node
master node
messages
standby
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
CN201980004338.5A
Other languages
English (en)
Other versions
CN111630826B (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
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 CN111630826A publication Critical patent/CN111630826A/zh
Application granted granted Critical
Publication of CN111630826B publication Critical patent/CN111630826B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供了共识方法、系统和装置,包括编码在计算机存储介质上的计算机程序。其中一个方法在由多个(N个)节点维护的区块链上实施。其中节点之一充当主节点,而其他(N‑1个)节点充当备节点。该方法包括:检测区块链的当前长度H的改变;基于参数P和节点数N确定主节点,其中参数P与区块链的当前长度H成比例;响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议;以及响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。

Description

共识系统和方法
技术领域
本申请总体上涉及用于共识系统和方法的方法和设备,尤其涉及用于改变主节点的共识系统和方法。
背景技术
实用拜占庭容错(PBFT)是一种可以在分布式系统如区块链系统中实现的共识机制。PBFT共识机制使得分布式系统能够在安全性和活跃性方面达成足够的共识,尽管系统的某些节点可能发生故障(例如,由于网络连接不良或以其他方式变得有故障)或向其他对等方传播不正确的信息(例如,恶意行动)。这种机制的目的是通过减轻无功能节点对系统的正确功能的影响以及对由系统中功能节点(例如,无故障节点和诚实节点)达成的共识的影响来抵御灾难性的系统故障。
PBFT共识机制侧重于通过假设存在独立节点故障和由特定并独立的节点传播的操纵消息来提供容忍拜占庭故障(例如,无功能节点)的实用拜占庭状态机复制。例如,在这种PBFT共识机制中,区块链系统中的所有节点按顺序排序,其中一个节点是主节点(也称为领导节点或主控节点),其他节点称为备节点(也称为追随者节点)。系统内的所有节点彼此通信,并且目标是让所有诚实节点对系统状态达成一致/共识。
例如,为了使PBFT共识机制起作用,假设在给定的漏洞窗口中,区块链系统中的无功能节点的数量不能同时等于或超过系统中总节点数的三分之一。只要至多F个节点同时是无功能节点,该方法就有效地提供活跃性和安全性。换句话说,在一些实现中,PBFT共识机制可以容忍的无功能节点的数量F等于(N-1)/3向下取最接近整数,其中N表示系统中的节点总数。在一些实现中,实现PBFT共识机制的区块链系统可以处理多达F个拜占庭故障,其中总共存在至少3F+1个节点。
PBFT共识机制通常可以包括正常操作协议(也称为三阶段协议)和视图更改协议,其中提供正常操作协议以确保机制的安全性,提供视图更改协议以确保机制的活跃性。正常操作协议按顺序主要包括三个阶段,即预准备阶段、准备阶段和提交(commit)阶段。所有阶段都是消息驱动的,即通过在当前阶段获得足够数量的消息来触发协议中的下一阶段。
在正常操作协议期间,如果当前主节点变为无功能节点,则可以触发视图更改协议以便基于共识选举新的主节点。通过替换当前主节点,可以恢复正常操作协议以执行系统的功能。但是,对于要触发的视图更改协议,当前主节点必须显示出“无功能”行为,例如放弃交易(当PBFT共识机制用于验证区块链交易时)、操纵交易、伪造交易等。当系统尝试将这些行为编译成触发规则组群时,这些行为可能很复杂且容易被忽视。此外,视图更改协议也具有高通信成本。为了通过视图更改实现当前主节点的替换,需要O(N2)大小的通信容量的量,其中N个区块链节点中的每个节点需要发送N个消息(例如,视图更改消息、新视图消息等)至对等区块链节点。此外,可能需要执行多轮视图更改协议以改变当前主节点,这导致系统正常功能的不稳定性和中断。因此,期望提供一种替代解决方案来实现当前主节点改变而无需复杂的配置和通信负担。
发明内容
本文的各种实施例包括但不限于共识系统、方法和非暂态计算机可读介质。
在一些实施例中,计算机实施的共识方法将在由多个(N个)节点维护的区块链上实施,其中节点之一充当主节点而其他(N-1个)节点充当备节点,并且该方法由N个节点之一执行。该方法包括:检测区块链的当前长度H的改变;基于参数P和节点数N确定主节点,其中参数P与区块链的当前长度H成比例;响应于确定N个节点之一是主节点,作为主节点执行实用拜占庭容错(PBFT)正常操作协议;并且响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。
在一些实施例中,该方法还包括:重复计算机实施的共识方法的上述步骤,以执行一轮或多轮PBFT正常操作协议;并且对于一轮或多轮中的每一轮,基于参数P和节点数N来改变主节点。
在一些实施例中,当前长度H基于区块链中区块的数量;并且参数P对于N个节点中分别识别相同的区块链当前长度H的多个节点是相同的。
在一些实施例中,每个节点与标识相关联;基于参数P和节点数N确定主节点包括:确定具有(P mod N)标识的节点之一作为主节点。
在一些实施例中,执行PBFT正常操作协议包括:执行PBFT正常操作协议以将新区块添加到区块链。
在一些实施例中,检测区块链的当前长度H的改变包括:检测到区块链中区块的数量增加了1。
在一些实施例中,响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议包括:向至少一些备节点组播预准备消息;获得分别来自(Q-1)个或更多个备节点的(Q-1)个或更多个准备消息,其中每个准备消息表示相应备节点接受预准备消息,Q(法定数量,quorum)是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;向至少一些备节点组播提交消息,该提交消息表示主节点同意(Q-1)个或更多个准备消息;以及获得分别来自主节点加备节点中的Q个或更多个节点的Q个或更多个提交消息,每个提交消息表示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。
在一些实施例中,在向至少一些所述备节点组播所述预准备消息之前,该方法还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端,或者一个或多个备节点;以及在获得Q个或更多个提交消息之后,该方法还包括将一个或多个交易打包到新区块中以添加到区块链的本地副本中。
在一些实施例中,Q个或更多个提交消息包括组播的提交消息。
在一些实施例中,响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议包括:从主节点获得预准备消息;向主节点加其他(N-2个)备节点中的至少一些节点组播准备消息,该准备消息表示接受预准备消息;获得分别来自(Q-1)个或更多个备节点的(Q-1)个或更多个准备消息,其中Q(法定数量)是(N+F+1)/2向上取最接近的整数,并且F是(N-1)/3向下取最接近的整数;向主节点加其他备节点中的至少一些节点组播提交消息,该提交消息表示该一个备节点同意(Q-1)个或更多个准备消息;以及获得分别来自主节点加备节点中的Q个或更多个节点的Q个或更多个提交消息,每个提交消息表示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。
在一些实施例中,在从主节点获得预准备消息之前,该方法还包括从以下至少之一获得一个或多个交易请求:一个或多个客户端,主节点,或一个或多个其他备节点;以及在获得Q个或更多个提交消息之后,该方法还包括将一个或多个交易打包到新区块中以添加到区块链的本地副本中。
在一些实施例中,(Q-1)个或更多个准备消息包括组播的准备消息;Q个或更多个提交消息包括组播的提交消息。
在一些实施例中,共识系统(例如,充当用于维护区块链的N个节点之一)包括一个或多个处理器和一个或多个计算机可读存储器,该一个或多个计算机可读存储器耦接到一个或多个处理器并且其上存储有指令,该指令能够由一个或多个处理器执行以执行任何前述实施例的方法。
在一些实施例中,共识装置(例如,充当用于维护区块链的N个节点之一)包括用于执行任何前述实施例的方法的多个模块。
在一些实施例中,一种非暂态计算机可读介质,其中存储有指令,当该指令由设备的处理器执行时,该指令使得该设备执行任何前述实施例的方法。
在一些实施例中,共识系统用于维护区块链,其中多个(N个)节点维护区块链,N个节点之一充当主节点而其他(N-1个)节点充当备节点,共识系统充当N个节点之一并且包括一个或多个处理器和一个或多个非暂态计算机可读存储器,该一个或多个非暂态计算机可读存储器耦接到一个或多个处理器并且配置有可由一个或多个处理器执行以使得该系统执行包括以下操作的指令:检测区块链的当前长度H的改变;基于参数P和节点数N确定主节点,其中参数P与区块链的当前长度H成比例;响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议;并且响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。
根据又一实施例,非暂态计算机可读存储介质用于维护区块链,其中多个(N个)节点维持区块链,N个节点之一充当主节点而其他(N-1个)节点充当备节点,该存储介质与N个节点之一相关联,并且配置有可由一个或多个处理器执行以使得一个或多个处理器执行包括以下操作的指令:检测区块链的当前长度H的改变;基于参数P和节点数N确定主节点,其中参数P与区块链的当前长度H成比例;响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议;并且响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。
根据又一实施例,共识装置用于维护区块链。多个(N个)节点维护区块链,其中N个节点之一充当主节点而其他(N-1个)节点充当备节点,共识装置充当N个节点之一并且包括:检测模块,用于检测区块链的当前长度H的改变;确定模块,用于根据参数P和节点数N确定主节点,其中,参数P与区块链的当前长度H成比例;以及执行模块,用于响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议,并且响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。
本文中公开的实施例具有一种或多种技术效果。在一些实施例中,除了以及可选的PBFT的视图更改协议之外,该方法和系统还可以提供改变主节点的路径。在一个实施例中,实施具有所公开的改进的PBFT的区块链系统的每个节点响应于向区块链添加新区块,并且因此选举以改变当前主节点。因此,在每次添加新区块(这对应于区块链长度的增加)之后,在系统的节点之间切换主节点的指定。在一些实施例中,这种附加和可选路径至少减轻了配置用于触发传统PBFT中的视图更改协议的综合条件的负担,同时实现了用于确保主节点的属性功能的更彻底的解决方案。在一些实施例中,这种附加和可选路径消除了视图更改协议中实现主节点的改变所需的通信负担。不需要在节点之间传输附加消息。在一些实施例中,当应用于诸如处理区块链交易的区块链应用中时,结合了所公开的方法的系统可以降低操作成本并且提高区块链操作的稳定性、效率和准确性。在一个实施例中,这种附加和可选路径可以导致对每轮共识验证主动轮换主节点,而没有额外的成本也没有操作中断。
参考附图考虑以下描述和所附权利要求,本文公开的系统、方法和非瞬态计算机可读介质的这些和其他特征,以及相关结构元件的操作方法和功能以及部件的组合和制造经济性将变得更加明显。所有这些附图形成本说明书的一部分,其中相同的附图标记表示各附图中的对应部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,而不是限制性的。
附图说明
图1示出根据各种实施例的网络。
图2A示出根据各种实施例的PBFT的正常操作协议。
图2B示出根据各种实施例的具有一个故障副本的PBFT的正常操作协议。
图2C示出根据各种实施例的PBFT的正常操作协议和视图更改协议。
图3A示出根据各种实施例的PBFT的正常操作协议的步骤的流程图。
图3B示出了PBFT的视图更改协议的步骤的流程图。
图4示出根据各种实施例的共识系统的正常操作协议的步骤的流程图。
图5示出根据各种实施例的共识方法的流程图。
图6示出根据各种实施例的共识系统的框图。
图7示出计算机系统的框图,在其中可以实施本文描述的任何实施例。
具体实施方式
本文公开的实施例包括但不限于用于改变主节点的共识系统、方法和非暂态计算机可读介质。在各种实施例中,诸如区块链系统的分布式网络系统可包括多个节点。区块链系统可以实施PBFT共识机制,其中多个节点之一被指定为主节点,而其他节点被指定为备节点。根据一些实施例,每个节点可以响应于检测到由节点维护的区块链的区块链长度的改变来选举新的主节点。例如,当将新区块添加到区块链时,区块链长度可以增加。这样,结合所公开的方法的PBFT系统可以在不依赖于视图更改协议的情况下实现主节点改变,这导致在不产生通信成本的情况下区块链操作的稳定性、效率和准确性。与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),(1999年2月),该文献的全部内容通过引用并入本文。
图1示出了根据各种实施例的网络120。下面给出的组件旨在说明。如图所示,网络120可以包括分布式网络系统112,例如区块链系统。网络系统112可以包括在一个或多个计算设备(诸如服务器、计算机、移动电话等)中实现的一个或多个节点(例如,节点0、节点1、节点2、节点3、节点4、......、节点i、......等)。网络系统112可以安装有适当的软件(例如,共识程序)和/或硬件(例如,有线连接、无线连接),以访问网络120或附加系统的其他设备。每个节点可以包括一个或多个处理器以及耦接到所述一个或多个处理器的一个或多个存储器。例如,所述一个或多个存储器是非瞬态的且计算机可读的,并且配置有可由所述一个或多个处理器执行的指令,以促使所述一个或多个处理器执行本文描述的操作。尽管在该图中节点被示为单个组件,但是可以理解,这些节点可以实现为单个设备或耦接在一起的多个设备。通常,节点能够彼此通信并且与网络系统112外部的其他设备通信。例如,通过一个或多个有线网络或无线网络(例如,因特网),数据可以被传送。
在各种实施例中,网络系统112可以被实现为包括多个节点的区块链系统。例如,如图1所示,区块链系统包括多个区块链节点(例如,节点0、节点1、节点2、节点3、节点4、...、节点i、......等)。所述节点可以形成网络(例如,点对点网络,Peer-to-Peernetwork),其中一个区块链节点与另一区块链节点通信。所示的区块链节点的顺序和数量仅仅是示例性的并且是为了简化说明。所述区块链节点可以在服务器、计算机等中被实现。每个区块链节点可以对应于经由各种类型的通信方法诸如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可以将主节点确定为具有视图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的步骤的流程图。图3A(以及下面描述的图3B)中示出的步骤可以应用于一个或多个请求的一轮共识验证。例如,一轮共识验证可以处理一个或多个交易请求。交易请求可以包括请求共识验证相应的区块链交易以添加到区块链。如果共识验证成功,则相应的交易被每个节点打包到区块链的新区块中。
参考图2A、图2B和图3A,当客户端向负责提倡请求的主节点(副本0)提交请求(消息)时,正常操作协议在请求阶段开始。所述请求可以包括客户端的信息、交易请求(例如,用于共识验证的一个或多个交易)和请求时间戳。所述客户端(也称为客户端节点)可以例如在上述节点A中被实现。节点A可以是轻节点(例如,在移动电话中被实现)。附加地或替代地,客户端可以将请求提交给备节点,所述备节点在预准备阶段之前将所述请求转发到主节点。无论是主节点还是备节点接收所述请求,相应节点都可以将所接收的请求组播到网络中的其他节点。因此,主节点可能最终以某种方式获得客户端提交给共识网络的未决请求(步骤311)。
因此,主节点充当领导者并且领导备节点验证与请求相关联的交易。主节点负责在其视图中对请求的执行进行排序。在预准备阶段,主节点可以获得多个请求,验证所获得的请求,并为每个请求提议序列号。因此,每个请求可以被分配递增的序列号,从而被按顺序排列。另外,所述预准备消息可以包括区块链长度。所述区块链长度可以基于区块链的当前长度。例如,如果区块链当前具有1000个区块,则区块链长度可以是1000,其表示区块链中已经存在1000个区块。所述主节点可以转发客户端的请求以及相应序列号和/或区块链长度。例如,在获得所述请求之后,所述主节点可以通过分配序列号来将请求按照用于执行相应交易的顺序排列,并将其存储到列表中。所述主节点可以向区块链系统中的每个备节点(副本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)个提交消息并且已经执行具有较低序列号的所有请求,则所述节点可以执行所述请求。
在提交阶段,如果节点准备就绪,则所述节点可以执行该请求。例如,节点可以执行未验证的区块链交易的共识验证的一部分(当阈值数量的节点达到相同的验证结果时,将在下面描述的稍后的步骤317中达成共识)。如果验证成功,则节点可以将提交消息组播到其他节点(步骤316)。所述节点还可以从其他节点接收提交消息。只要提交消息是有效的,每个节点都接受它。所述提交消息可以包含允许确定消息的有效性的视图号、序列号、签名、摘要、其他元数据等。在一些实施例中,如果节点已经获得至少Q个不同的、有效的一致性提交消息,则表示法定数量的节点已经提交(即,至少(Q-F)个诚实节点准备就绪)并且已达成共识(步骤317)。至少Q个有效的提交消息可以包括组播的提交消息。因此,所述准备阶段至提交阶段确保至少(Q-F)个功能节点(Q个提交消息但考虑了至多F个无功能节点)同意,请求最终将在视图v中按照其序列号被执行。由于节点可以在不同视图(例如,当一些节点已经进入新视图并且一些其他节点依然在先前视图中时)中提交,所接收的提交消息可以对应于在不同视图中执行的提交。所述提交阶段确保跨视图的每个请求的容错一致性排序,因为功能节点对每个请求的序列号达成一致。
在一些实施例中,如果节点已经获得至少Q个不同的、有效的一致性提交消息,则所述节点可以执行相应请求。例如,一旦获得Q个提交消息,就意味着新区块被共识验证。因此,所述节点可以将新区块打包到本地维护的区块链副本中。已提交原始交易请求(步骤318)。否则,所述备节点可以直接触发视图更改协议。
在回复阶段,在执行所述请求之后,所述节点直接向客户端发送回复消息。对于打包到区块链中的交易,所述回复消息可以包括所述交易在区块链中的地址。由于允许多达F个故障,客户端在接受结果之前等待来自不同节点的具有有效签名并具有相同请求时间戳和相同执行结果的(Q-F)个回复。对于图2A和图2B中所示的PBFT网络系统,总共存在四个节点,因此可以容忍至多一个(F=1)无功能节点。因此,即使副本3是无功能的,在图2B中仍然可以达成共识。
为了保持活跃性,如果主节点没有组播请求的情况经过了特定时间量,则可以在视图更改协议中替换主节点。例如,所述备节点可以维护计时器。所述备节点在接收请求并且计时器尚未运行时启动计时器。当所述备节点不再等待执行请求时(即,所述请求被执行),所述备节点停止计时器,但是如果在那时它正在等待执行一个或多个其他请求,则重新启动计时器。如果所述计时器到期,则备节点可以确定主节点是无功能的。因此,所述备节点可以将视图更改消息组播到其他节点。又例如,所述备节点可以确定主节点是恶意的。因此,所述备节点可以组播视图更改消息。再例如,客户端可以使用计时器来确定在客户端将所述请求发送到主节点之后是否已经过太多时间而没有接收到响应。当该计时器到期时,客户端将其请求发送到所有节点。如果节点已经获知该请求,则忽略该重新广播。如果节点未获知该请求,它将启动计时器。一旦所述节点的计时器超时,基于怀疑主节点是故障的,所述节点通过将视图更改消息组播到其他备节点来启动视图更改过程(步骤321)。所述视图更改消息包括系统状态(以存档消息的形式,包括在先前正常操作期间其自己的准备消息),以便其他节点将获知发送方节点未发生故障。
绝大多数功能节点可以确定主节点是否是无功能的,并在用下一主节点作为替换的情况下删除该主节点。当足够的节点认为主节点发生故障时,发生视图更改。图2C的一部分示出了视图更改协议,图3B中示出了与视图更改协议相对应的步骤的流程图。在图2C,从请求阶段到回复阶段,由于当前视图是v,因为p=(v mod N)=0,因此副本/节点0是主节点。参考图2C和图3B,在视图更改阶段,如果当前视图是v+1,则副本/节点p=(v+1)mod N=1等待获得Q个有效视图更改消息以成为新的主节点,其中p是副本/节点标识,v是视图号,N是副本/节点的总数(步骤322)。也就是说,副本/节点1成为新的主节点。Q个视图更改消息可以包括组播的视图更改消息。由于先前视图是v,因此视图更改消息可以各自包括新视图v+1。一旦新主节点p获得Q个视图更改消息,它就组播新视图消息(步骤323)。该消息包含接收的所有有效视图更改消息以及由于主节点故障而可能尚未完成的所有请求的集合。新主节点可以决定最新的检查点,并且此外,确保非故障节点赶上最新状态,这可能涉及在新视图中重新提交先前的请求(例如,准备就绪、提交、但未被执行的请求)。当视图更改发生时,不会接受任何新请求。在节点接收包含Q个视图更改消息的有效新视图消息后,它将进入视图v+1并处理未完成的请求的集合。此后,正常操作协议继续进行,并且节点重做在最新的稳定检查点的序列号和准备消息中的最高号之间的请求,但是避免重新执行请求。所述备节点可以设置用于新主节点的定时器(步骤324)。
图4类似于图3A中示出的正常操作协议,除了添加了主节点改变步骤399之外。在一些实施例中,在区块链交易的背景下,通过在步骤318提交,节点将新区块中的经共识验证的交易/多个交易添加到区块链。节点可以根据节点之间达成的共识在其区块链的本地副本中进行添加,使得其本地副本与由系统识别的区块链的共识版本一致。新区块将链接到区块链的前一区块,将区块链的区块总数增加一个。因此,区块链长度增加1。在步骤399,节点可以基于区块链长度改变由其自身查看到的主节点。如果节点自身是执行步骤313-318的主节点,则在步骤399,该节点可以成为备节点。如果节点自身是执行步骤311、312和315-318的备节点,则在步骤399,该节点可以成为主节点或保持为备节点。在步骤399之后,该节点可以返回执行步骤313或311,这取决于它已成为备节点还是主节点。然后,重复图4中其他步骤以进行另一轮共识验证。下面参考图5描述进一步的细节。
图5A示出了根据本说明书的各种实施例的共识方法510的流程图。方法510可以由图1的系统112的一个或多个组件(例如,上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和一个或多个附加设备(例如节点A))的组合实施。方法510可以由一个或多个区块链节点(例如,备节点)实施。方法510可以由包括各种硬件机器和/或软件的共识系统或设备(例如,计算机、服务器)实施。例如,所述共识系统或设备可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行以促使系统或设备(例如,处理器)执行方法510的指令,。以下呈现的方法510的操作旨在是说明性的。根据实施方式,方法510可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。方法510的进一步细节也可以参照图1至图4和以上相关描述。
在一些实施例中,方法510可在由多个(N个)节点维护的区块链上实施,其中所述节点之一充当主节点而其他(N-1)个节点充当备节点,并且方法510由N个节点之一执行。N可以是不小于4的任何整数。在一些实施例中,N等于3F+1,其中F指示系统在PBFT共识机制中可以容忍的无功能节点的数量。主节点和备节点可以是PBFT共识机制中定义的节点。方法510可应用于针对一个或多个请求(例如,区块链交易请求)的一轮或多轮共识验证。方法510的步骤可由当前视图中的主节点或备节点执行。
方框511包括检测区块链的当前长度H的改变。在一些实施例中,当前长度H基于区块链中区块的数量。例如,如果区块链当前具有2000个区块,则当前长度H可以是2000(如果从区块1、区块2、...区块2000计数)。在一个实施例中,区块链长度可以指最新区块的区块长度,其是区块链中最新区块的序列号。例如,如果区块链中的最新区块是第2000个区块,则最新区块的区块长度可以是2000。虽然此处显示的区块链长度和区块长度的示例从区块1开始,但可以理解,第一个区块可以从任何序列号开始。在一些实施例中,检测区块链的当前长度H的改变包括检测区块链中区块的数量增加了1。H的增加可能表示完成了一轮共识验证。下一轮共识验证可能直到新的区块被添加到区块链中(表示为H的增加)才会开始。
方框512包括基于参数P和节点数N确定主节点,其中参数P与区块链的当前长度H成比例。在一些实施例中,参数P对于N个节点中分别识别相同的区块链当前长度H的多个节点是相同的。例如,P可以基于H和例如2H、3H+1等一个或多个常数。对于另一示例,P可以是基于H生成的一种随机数,使得对于相同的H,P是相同的。对于另一示例,每个节点可以将区块链的本地副本的当前长度识别为H。P可以是对于分别识别相同当前长度H的节点相同的任何参数。
方框513包括响应于确定N个节点之一是主节点,作为主节点执行实用拜占庭容错(PBFT)正常操作协议。方框514包括响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。在一些实施例中,每个节点与标识相关联;并且“基于参数P和节点数N确定主节点”包括:确定具有(P mod N)标识的节点之一作为主节点。例如,如果系统包括四个节点(N=4),包括节点0、节点1、节点2和节点4,并且如果P=H=2000,则节点0是主节点,因为(2000mod 4)=0。如果然后将新区块添加到区块链中使得H=2001,则节点1成为主节点,因为(2001mod 4)=1。因此,对于步骤513和514,执行方法510的节点可以确定它是否已成为主节点或备节点,并执行相应的协议。执行PBFT正常操作协议可包括例如通过上述共识验证执行PBFT正常操作协议以将新区块添加到区块链中。
可选方框515包括重复步骤511-514,以执行一轮或多轮PBFT正常操作协议;并且对于一轮或多轮中的每轮,基于参数P和节点数N来改变主节点。在一些实施例中,对于每轮共识验证,主节点和备节点均可以执行步骤51-514。在区块链长度增加1之后,每个节点将检查其状态(主或备)以执行下一轮共识验证,并且重复该循环。
在一些实施例中,响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议包括:从主节点获得预准备消息;向主节点加其他(N-2)个备节点中的至少一些节点组播准备消息,准备消息表示接受预准备消息;获得分别来自(Q-1)个或更多个备节点的(Q-1)个或更多个准备消息,其中Q(法定数量)是(N+F+1)/2向上取最接近的整数,并且F是(N-1)/3向下取最接近的整数;向主节点加其他备节点中的至少一些节点组播提交消息,该提交消息表示该一个备节点同意(Q-1)个或更多个准备消息;获得分别来自主节点加备节点中的Q个或更多个节点的Q个或更多个提交消息,每个提交消息表示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。组播意味着广播到PBFT系统中的一个或多个或所有其他节点。每个运行的备节点可以组播准备消息。(Q-1)个准备消息可以来自不同的节点并且是有效且一致的,这表示至少(Q-1)个备节点和主节点同意预准备消息。
在一些实施例中,提交消息表示组播了提交消息的相应节点同意预准备消息并且已经获得(Q-1)个或更多个准备消息。Q个提交消息可以来自不同的节点并且是有效且一致的,这表明Q个节点准备就绪以按顺序执行请求。因此,大多数节点达成共识。在一些实施例中,提交消息表示该一个备节点同意预准备消息并且已经获得(Q-1)个或更多个准备消息。在一个实施例中,(Q-1)个或更多个准备消息包括组播的准备消息;并且Q个或更多个提交消息包括组播的提交消息。在一些实施例中,可以执行验证步骤以同意组播提交消息。例如,如上所述,可以根据针对摘要d的验证的顺序来确定摘要D(m)。如果一致,则可以组播提交消息。
在一些实施例中,在从主节点获得预准备消息之前,该方法还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端、主节点、或者一个或多个其他备节点。术语“交易请求”中的交易可以经由区块链系统实施并记录在区块链中。该交易可以包括,例如,金融交易、用于部署或调用区块链合约的区块链合约交易、更新区块链的状态(例如,全局状态)的交易等。交易不必涉及金融交换。交易请求可以包括要经由共识验证添加到区块链的区块链交易。在一个实施例中,预准备消息包括与一个或多个交易请求相对应的一个或多个交易(例如,区块链交易)的顺序。该顺序可以由组播用于执行交易请求的预准备消息的主节点提议。该顺序可以对应于包含交易的被提议的新区块的唯一哈希值标识。主节点和备节点将验证所提议的顺序并尝试达成共识。或者,该请求可以包括用于一个或多个计算设备的另一指令,以提供信息或执行另一功能。
在一些实施例中,在获得Q个或更多个提交消息之后,该方法还包括将一个或多个交易打包到新区块中以添加到区块链的本地副本中。例如,请求可以被共识验证,因为至少(Q-F)个诚实节点(Q个提交消息但考虑最多F个无功能节点)已经验证其提交消息中的摘要d(或者对于主节点,它可能不必执行验证,因为它提议了摘要d)。因此,如果有足够多的节点验证了相应的交易,则可以将交易打包到区块链中。可以通知最初发送请求的客户端(例如,节点A)。
在一些实施例中,响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议包括:将预准备消息组播到至少一些备节点;获得分别来自(Q-1)个或更多个备节点的(Q-1)个或更多个准备消息,其中每个准备消息表示相应备节点接受了预准备消息,Q(法定数量)是(N+F+1)/2向上取最接近的整数,而F是(N-1)/3向下取最接近的整数;向至少一些备节点组播提交消息,该提交消息表示主节点同意(Q-1)个或更多个准备消息;以及获得分别来自主节点加备节点中的Q个或更多个节点的Q个或更多个提交消息,每个提交消息表示相应节点同意由所述相应节点接收的(Q-1)个或更多个准备消息。在一个实施例中,Q个或更多个提交消息包括组播的提交消息。在一些实施例中,F表示N个节点中为保持N个节点的共识系统运行而允许的无功能节点的最大数量。(Q-1)个或更多个准备消息可以来自不同的节点并且是有效且一致的,这表示(Q-1)个或更多个备节点和主节点同意预准备消息。
在一些实施例中,提交消息表示主节点已获得(Q-1)个或更多个准备消息。在一些实施例中,提交消息表示组播提交消息的相应节点同意预准备消息并且已经获得(Q-1)个或更多个准备消息。Q个或更多个提交消息可以来自不同的节点并且是有效且一致的,这表示Q个或更多个节点准备就绪以按顺序执行请求。因此,大多数节点达成共识,并且可以执行下一个执行步骤。
在一些实施例中,在将预准备消息组播到至少一些备节点之前,该方法还包括从以下至少之一获得一个或多个交易请求:一个或多个客户端或者一个或多个备节点;并且在获得Q个或更多个提交消息之后,该方法还包括将一个或多个交易打包到新区块中以添加到区块链的本地副本中。
在一些实施例中,方法510可以提供改变主节点的附加路径,而不替换视图更改协议。也就是说,方法510或视图更改协议可以触发主节点的改变。方法510可以提供在每轮共识验证成功增加区块链长度之后改变主节点的机会,而视图更改协议可以提供在主节点无功能时改变主节点的机会。将它们组合在一起到一个实施例中,可以将具有((P+v)mod N)标识的节点选为主节点。
图6示出了根据各种实施例的共识系统610的框图。共识系统610(例如,计算机系统)可以是上述节点0、节点1、节点2、......或节点i,或类似设备,或者任何节点和附加设备(例如,节点A)的组合的实施示例。方法510可以由共识系统610实施。共识系统610可以包括一个或多个处理器以及一个或多个非暂态计算机可读存储介质(例如,一个或多个存储器),该计算机可读存储介质耦接到一个或多个处理器并配置有可由一个或多个处理器执行以使系统或设备(例如,处理器)执行方法510的指令。共识系统610可以在主节点或备节点中实施。共识系统610可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,共识系统610可以被称为共识装置。共识装置可以用于维护区块链,其中多个(N个)节点维护区块链,N个节点之一充当主节点而其他(N-1个)节点充当备节点,共识装置充当N个节点之一,并且包括一个或多个处理器和一个或多个非暂态计算机可读存储器,该计算机可读存储器耦接到一个或多个处理器并配置有可由一个或多个处理器执行以使装置执行操作的指令。共识装置可包括与指令(例如,软件指令)相对应的各种单元/模块。共识装置可包括:检测模块611,用于检测区块链的当前长度H的改变;确定模块612,用于基于参数P和节点数N确定主节点,其中,参数P与区块链的当前长度H成比例;以及执行模块613,用于响应于确定N个节点之一是主节点,作为主节点执行PBFT正常操作协议,并且响应于确定N个节点之一不是主节点,作为备节点之一执行PBFT正常操作协议。
本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备或结合硬连线和/或程序逻辑以实现这些技术的任何其他设备或设备的组合。专用计算设备可以被实现为个人计算机、膝上型计算机、蜂窝电话、照相电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板电脑、可穿戴设备或其组合。计算设备通常由操作系统软件控制和协调。传统的操作系统控制和调度用于执行的计算机进程,执行存储器管理,提供文件系统、网络、I/O服务,以及提供用户界面功能,例如图形用户界面(“GUI”)等。这里描述的各种系统、装置、存储介质、模块和单元可以在专用计算设备或者一个或多个专用计算设备的一个或多个计算芯片中实现。在一些实施例中,本文描述的指令可以在专用计算设备上的虚拟机中实现。当被执行时,指令可以促使专用计算设备执行本文描述的各种方法。虚拟机可以包括软件、硬件或其组合。例如,虚拟机可以包括为以太坊中的智能合约提供运行时环境的以太坊虚拟机(EVM)软件。
图7是示出计算机系统700的框图,在所述计算机系统700上可以实现本文描述的任何实施例。系统700可以执行本文描述的任何方法(例如,共识方法510)。系统700可以在本文描述的任何系统(例如,共识系统610)中实现。系统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个节点中的一个节点执行,所述方法包括:
检测所述区块链的当前长度H的改变;
基于参数P和节点数N确定所述主节点,其中所述参数P与所述区块链的所述当前长度H成比例;
响应于确定所述N个节点中的该节点是所述主节点,作为所述主节点执行实用拜占庭容错PBFT正常操作协议;以及
响应于确定所述N个节点中的该节点不是所述主节点,作为所述备节点之一执行PBFT正常操作协议。
2.根据权利要求1所述的方法,其中:
所述当前长度H基于所述区块链中区块的数量;并且
对于所述N个节点中分别识别相同的所述区块链的当前长度H的多个节点,所述参数P是相同的。
3.根据前述任一项权利要求所述的方法,其中:
每个所述节点关联有标识;并且
基于所述参数P和所述节点数N确定所述主节点包括:确定所述节点中具有(P mod N)标识的一个节点作为所述主节点。
4.根据前述任一项权利要求所述的方法,其中,执行所述PBFT正常操作协议包括:
执行所述PBFT正常操作协议以将新区块添加到所述区块链中。
5.根据前述任一项权利要求所述的方法,还包括:
重复权利要求1的所述步骤,以执行一轮或多轮所述PBFT正常操作协议;以及
对于所述一轮或多轮中的每一轮,基于所述参数P和所述节点数N来改变所述主节点。
6.根据前述任一项权利要求所述的方法,其中,检测所述区块链的所述当前长度H的改变包括:
检测到所述区块链中区块的数量增加了1。
7.根据前述任一项权利要求所述的方法,其中,响应于确定所述N个节点中的该节点是所述主节点,作为所述主节点执行PBFT正常操作协议包括:
向至少一些所述备节点组播预准备消息;
获得分别来自Q-1个或更多个节点的Q-1个或更多个准备消息,其中所述Q-1个或更多个准备消息各自表示相应备节点接受所述预准备消息,法定数量Q是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;
向至少一些所述备节点组播提交消息,所述提交消息表示所述主节点同意所述Q-1个或更多个准备消息;以及
获得分别来自所述主节点加所述备节点中的Q个或更多个节点的Q个或更多个提交消息,所述Q个或更多个提交消息各自表示相应节点同意由所述相应节点接收的Q-1个或更多个准备消息。
8.根据权利要求7所述的方法,其中:
在向至少一些所述备节点组播所述预准备消息之前,所述方法还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端或者一个或多个所述备节点;以及
在获得所述Q个或更多个提交消息之后,所述方法还包括将所述一个或多个交易打包到新区块中以添加到所述区块链的本地副本中。
9.根据权利要求7或8所述的方法,其中:
所述Q个或更多个提交消息包括组播的提交消息。
10.根据权利要求1-6中任一项所述的方法,其中,响应于确定所述N个节点中的该节点不是所述主节点,作为所述备节点之一执行所述PBFT正常操作协议包括:
从所述主节点获得预准备消息;
向所述主节点加其他N-2个备节点中的至少一些节点组播准备消息,所述准备消息表示接受所述预准备消息;
获得分别来自Q-1或更多个所述备节点的Q-1个或更多个准备消息,其中法定数量Q是(N+F+1)/2向上取最接近的整数,并且F是(N-1)/3向下取最接近的整数;
向所述主节点加所述其他备节点中的至少一些节点组播提交消息,所述提交消息表示所述一个备节点同意所述Q-1个或更多个准备消息;以及
获得分别来自所述主节点加所述备节点中的Q个或更多个节点的Q个或更多个提交消息,所述Q个或更多个提交消息各自表示相应节点同意由所述相应节点接收的Q-1个或更多个准备消息。
11.根据权利要求10所述的方法,其中:
在从所述主节点获得所述预准备消息之前,所述方法还包括从以下中的至少一个获得一个或多个交易请求:一个或多个客户端、所述主节点、或者一个或多个所述其他备节点;以及
在获得Q个或更多个提交消息之后,所述方法还包括将所述一个或多个交易打包到新区块中以添加到所述区块链的本地副本中。
12.根据权利要求10或11所述的方法,其中:
所述Q-1个或更多个准备消息包括组播的准备消息;以及
所述Q个或更多个提交消息包括组播的提交消息。
13.一种共识系统,包括:
一个或多个处理器;和
一个或多个计算机可读存储器,所述一个或多个计算机可读存储器耦接到所述一个或多个处理器并且其上存储有指令,所述指令能够由所述一个或多个处理器执行以执行权利要求1到12中任一项所述的方法。
14.一种共识装置,包括用于执行权利要求1至12中任一项所述的方法的多个模块。
15.一种非暂态计算机可读介质,其中存储有指令,当所述指令由设备的处理器执行时,所述指令使得所述设备执行权利要求1至12中任一项所述的方法。
CN201980004338.5A 2019-06-05 2019-06-05 共识系统和方法 Active CN111630826B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/090101 WO2019170169A2 (en) 2019-06-05 2019-06-05 Consensus system and method

Publications (2)

Publication Number Publication Date
CN111630826A true CN111630826A (zh) 2020-09-04
CN111630826B CN111630826B (zh) 2022-07-29

Family

ID=67847520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980004338.5A Active CN111630826B (zh) 2019-06-05 2019-06-05 共识系统和方法

Country Status (5)

Country Link
US (1) US10671599B2 (zh)
EP (1) EP3701701A4 (zh)
CN (1) CN111630826B (zh)
SG (1) SG11202004685RA (zh)
WO (1) WO2019170169A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110796547A (zh) * 2019-10-30 2020-02-14 桂林电子科技大学 一种基于联盟区块链的改进的实用拜占庭容错系统
CN112132579A (zh) * 2020-09-30 2020-12-25 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN112241436A (zh) * 2020-10-26 2021-01-19 云账户技术(天津)有限公司 一种区块链网络的切换方法及装置
CN112995317A (zh) * 2021-02-26 2021-06-18 中国工商银行股份有限公司 区块链共识方法及区块链节点
CN114047899A (zh) * 2022-01-12 2022-02-15 南京金宁汇科技有限公司 一种区块链的视图同步方法及系统
CN115293769A (zh) * 2022-10-08 2022-11-04 中铱数字科技有限公司 一种基于区块链的动态管理和校验节点系统

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110800258B (zh) * 2019-03-18 2022-04-22 创新先进技术有限公司 用于结束视图更改协议的系统和方法
US11263067B2 (en) 2019-03-18 2022-03-01 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
CN111083221B (zh) * 2019-12-13 2023-08-04 北京菲林方德科技有限公司 一种交易验证方法及装置
CN115632933A (zh) * 2019-12-24 2023-01-20 杭州趣链科技有限公司 一种基于pbft算法的集群异常恢复方法
CN111274317A (zh) * 2020-01-07 2020-06-12 书生星际(北京)科技有限公司 多节点数据同步的方法和装置,以及计算机设备
CN111510317B (zh) * 2020-03-06 2022-08-26 杜晓楠 弱化dbft中连续多个节点故障导致的延迟的方法、计算机可读存储介质和dbft网络
US11250021B2 (en) * 2020-04-17 2022-02-15 International Business Machines Corporation Faster view change for blockchain
CN111654393B (zh) * 2020-05-20 2023-01-06 中国工商银行股份有限公司 区块链组网方法及系统
CN111523901B (zh) * 2020-07-03 2020-12-04 支付宝(杭州)信息技术有限公司 基于拜占庭容错算法的区块链的共识方法、装置及系统
CN113179166B (zh) * 2021-04-13 2022-07-08 华东师范大学 基于高鲁棒性拜占庭容错的联盟链数据安全实时上链方法
CN115551109A (zh) * 2021-06-29 2022-12-30 华为技术有限公司 无线通信方法、装置和无线分布式系统
CN115550274A (zh) * 2021-06-29 2022-12-30 华为技术有限公司 一种数据流量控制方法及相关装置
CN113573255A (zh) * 2021-07-26 2021-10-29 上海点融信息科技有限责任公司 基于区块链进行共识的方法、装置及存储介质
CN114448980B (zh) * 2022-01-06 2023-09-01 上海应用技术大学 面向物联网的pbft算法的改进方法
CN114254050B (zh) * 2022-03-02 2022-06-07 恒生电子股份有限公司 区块链网络共识预加载方法、装置、设备及存储介质
CN114625802A (zh) * 2022-03-15 2022-06-14 北京广元科技有限公司 基于能源区块链的高并发交易优化方法和系统
CN116991623B (zh) * 2023-08-30 2024-01-02 杭州趣链科技有限公司 区块链节点异常恢复方法、装置、电子设备及存储介质
CN116915505B (zh) * 2023-09-12 2023-11-21 南京理工大学 基于改进pbft算法的区块链共识方法及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107450981A (zh) * 2017-05-31 2017-12-08 阿里巴巴集团控股有限公司 一种区块链共识方法及设备
CN107528882A (zh) * 2017-07-14 2017-12-29 阿里巴巴集团控股有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备
US20180225448A1 (en) * 2017-02-07 2018-08-09 Microsoft Technology Licensing, Llc Transaction processing for consortium blockchain network
CN109246122A (zh) * 2018-09-29 2019-01-18 上海海事大学 一种基于谣言传播协议的拜占庭容错区块链生成方法
CN109586949A (zh) * 2018-10-17 2019-04-05 北京新唐思创教育科技有限公司 区块生成方法及计算机存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9805108B2 (en) * 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US20170236120A1 (en) 2016-02-11 2017-08-17 Oracle International Corporation Accountability and Trust in Distributed Ledger Systems
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
US10360191B2 (en) 2016-10-07 2019-07-23 International Business Machines Corporation Establishing overlay trust consensus for blockchain trust validation system
US11182851B2 (en) 2016-10-20 2021-11-23 International Business Machines Corporation Inter-ledger messaging in a blockchain
US10523421B2 (en) 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
US11954697B2 (en) 2017-02-27 2024-04-09 Ncr Corporation Blockchain consumer ledger
CN107391320B (zh) * 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
US10740733B2 (en) 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
US20190012662A1 (en) 2017-07-07 2019-01-10 Symbiont.Io, Inc. Systems, methods, and devices for reducing and/or eliminating data leakage in electronic ledger technologies for trustless order matching
US10984134B2 (en) * 2017-07-14 2021-04-20 Microsoft Technology Licensing, Llc Blockchain system for leveraging member nodes to achieve consensus
US20190058709A1 (en) 2017-08-16 2019-02-21 Telefonaktiebolaget Lm Ericsson (Publ) Tenant management method and system in a cloud computing environment
US10887090B2 (en) * 2017-09-22 2021-01-05 Nec Corporation Scalable byzantine fault-tolerant protocol with partial tee support
JP6987594B2 (ja) 2017-10-16 2022-01-05 株式会社日立製作所 アクセス権管理方法、アクセス権管理システム、および、アクセス権管理装置
US20190164150A1 (en) 2017-11-29 2019-05-30 Bank Of America Corporation Using Blockchain Ledger for Selectively Allocating Transactions to User Accounts
US11159537B2 (en) * 2017-11-30 2021-10-26 Bank Of America Corporation Multicomputer processing for data authentication and event execution using a blockchain approach
US10949511B2 (en) 2017-11-30 2021-03-16 Bank Of America Corporation Multicomputer processing for data authentication using a blockchain approach
US10735450B2 (en) 2017-11-30 2020-08-04 Intel Corporation Trust topology selection for distributed transaction processing in computing environments
US10084826B1 (en) 2018-05-14 2018-09-25 Xage Security, Inc. Protocol agnostic security by using out-of-band health check
WO2019072296A2 (en) * 2018-12-13 2019-04-18 Alibaba Group Holding Limited REALIZING A CHANGE OF A PRIMARY NODE IN A DISTRIBUTED SYSTEM
CN110800258B (zh) * 2019-03-18 2022-04-22 创新先进技术有限公司 用于结束视图更改协议的系统和方法
US10491608B1 (en) * 2019-03-26 2019-11-26 Farmobile Llc Distributed transaction-based security and tracking of agricultural machine and agronomic data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180225448A1 (en) * 2017-02-07 2018-08-09 Microsoft Technology Licensing, Llc Transaction processing for consortium blockchain network
CN107450981A (zh) * 2017-05-31 2017-12-08 阿里巴巴集团控股有限公司 一种区块链共识方法及设备
CN107528882A (zh) * 2017-07-14 2017-12-29 阿里巴巴集团控股有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备
CN109246122A (zh) * 2018-09-29 2019-01-18 上海海事大学 一种基于谣言传播协议的拜占庭容错区块链生成方法
CN109586949A (zh) * 2018-10-17 2019-04-05 北京新唐思创教育科技有限公司 区块生成方法及计算机存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110796547A (zh) * 2019-10-30 2020-02-14 桂林电子科技大学 一种基于联盟区块链的改进的实用拜占庭容错系统
CN112132579A (zh) * 2020-09-30 2020-12-25 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN112132579B (zh) * 2020-09-30 2022-08-12 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN112241436A (zh) * 2020-10-26 2021-01-19 云账户技术(天津)有限公司 一种区块链网络的切换方法及装置
CN112995317A (zh) * 2021-02-26 2021-06-18 中国工商银行股份有限公司 区块链共识方法及区块链节点
CN112995317B (zh) * 2021-02-26 2023-04-07 中国工商银行股份有限公司 区块链共识方法及区块链节点
CN114047899A (zh) * 2022-01-12 2022-02-15 南京金宁汇科技有限公司 一种区块链的视图同步方法及系统
CN114047899B (zh) * 2022-01-12 2022-03-18 南京金宁汇科技有限公司 一种区块链的视图同步方法及系统
CN115293769A (zh) * 2022-10-08 2022-11-04 中铱数字科技有限公司 一种基于区块链的动态管理和校验节点系统

Also Published As

Publication number Publication date
CN111630826B (zh) 2022-07-29
SG11202004685RA (en) 2020-06-29
WO2019170169A3 (en) 2020-04-02
US20200125556A1 (en) 2020-04-23
EP3701701A2 (en) 2020-09-02
US10671599B2 (en) 2020-06-02
EP3701701A4 (en) 2020-12-30
WO2019170169A2 (en) 2019-09-12

Similar Documents

Publication Publication Date Title
CN111630826B (zh) 共识系统和方法
CN110800258B (zh) 用于结束视图更改协议的系统和方法
CN110870288B (zh) 共识系统停机时间恢复
CN110785966B (zh) 用于结束视图更改协议的系统和方法
CN110915185B (zh) 共识系统停机时间恢复
US10938750B2 (en) Consensus system downtime recovery
AU2019101612A4 (en) Consensus system downtime recovery
AU2019101610A4 (en) Consensus system downtime recovery
AU2019101575A4 (en) System and method for ending view change protocol

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

Effective date of registration: 20200928

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.

Effective date of registration: 20200928

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.

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40037018

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant