CN110785966A - 用于结束视图更改协议的系统和方法 - Google Patents

用于结束视图更改协议的系统和方法 Download PDF

Info

Publication number
CN110785966A
CN110785966A CN201980002995.6A CN201980002995A CN110785966A CN 110785966 A CN110785966 A CN 110785966A CN 201980002995 A CN201980002995 A CN 201980002995A CN 110785966 A CN110785966 A CN 110785966A
Authority
CN
China
Prior art keywords
node
nodes
view
sequence number
protocol
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
CN201980002995.6A
Other languages
English (en)
Other versions
CN110785966B (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.)
Ant Chain Technology 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 CN110785966A publication Critical patent/CN110785966A/zh
Application granted granted Critical
Publication of CN110785966B publication Critical patent/CN110785966B/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1621Group acknowledgement, i.e. the acknowledgement message defining a range of identifiers, e.g. of sequence numbers
    • 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/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/3247Cryptographic 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 involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

用于执行视图更改的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。所述方法之一将在区块链上实施并由N个节点中处于视图更改协议的第一节点执行。所述方法包括:将视图更改消息组播到所述N个节点中的至少一些节点;分别从所述N个节点中的至少Q个第二节点获得至少Q个回应消息,Q个回应消息各自包括第二节点已知的指示N个节点中指定的主节点的一致性当前视图以及第二节点已知的一致性当前序列号,所述当前序列号与最新交易或最新区块相关联,所述当前序列号大于所述第一节点已知的第一序列号;并且响应于获得至少Q个回应消息,结束所述视图更改协议。

Description

用于结束视图更改协议的系统和方法
技术领域
本申请一般涉及用于执行视图更改的方法和设备,尤其涉及用于在实用拜占庭容错(PBFT)系统中结束视图更改的方法和设备。
背景技术
实用拜占庭容错(PBFT)是一种可以在分布式系统如区块链系统中实现的共识机制。PBFT共识机制使得分布式系统能够在安全性和活跃性方面达成足够的共识,尽管系统的某些节点可能发生故障(例如,由于网络连接不良或以其他方式变得有故障)或向其他对等方传播不正确的信息(例如,恶意行动)。这种机制的目的是通过减轻无功能节点对系统的正确功能的影响以及对由系统中功能节点(例如,无故障和诚实节点)达成的共识的影响来抵御灾难性的系统故障。
PBFT共识机制侧重于通过假设存在独立节点故障和由特定并独立的节点传播的操纵消息来提供容忍拜占庭故障(例如,无功能节点)的实用拜占庭状态机复制。例如,在这种PBFT共识机制中,区块链系统中的所有节点按顺序排序,其中一个节点是主节点(也称为领导节点或主控节点),其他节点称为备份节点(也称为追随者节点)。系统内的所有节点彼此通信,并且目标是让所有诚实节点对系统状态达成一致/共识。
例如,为了使PBFT共识机制起作用,假设在给定的漏洞窗口中,区块链系统中的无功能节点的数量不能同时等于或超过系统中总节点数的三分之一。只要至多F个节点同时是无功能节点,该方法就有效地提供活跃性和安全性。换句话说,在一些实现中,PBFT共识机制可以容忍的无功能节点的数量F等于(N-1)/3向下取最接近整数,其中N表示系统中的节点总数。在一些实现中,实现PBFT共识机制的区块链系统可以处理多达F个拜占庭故障,其中总共存在至少3F+1个节点。为了执行共识验证,每个节点在主节点的领导下执行正常操作协议。当节点认为主节点是无功能的时,所述节点可以进入视图更改协议,以启动主节点的更改。在新主节点在大多数节点同意下替换无功能主节点之后,这些节点切换回正常操作协议。
在当前技术中,节点根据如下的传统程序退出视图更改协议:等待大多数节点也进入视图更改协议并同意主节点是无功能的。在传统的视图更改协议中,这种情况是当至少2F+1个节点进入视图更改协议并分别组播视图更改消息时,获得至少2F+1个视图更改消息的新主节点组播新的视图消息以帮助这些节点恢复正常操作。然而,在一些情况下,网络通信中断可能导致节点错误地确定主节点是无功能的并且进入视图更改协议,而其他节点仍处于正常操作。结果,所述节点陷入视图更改协议中并且有效地关闭共识过程。在使陷入的节点恢复正常操作之前的延迟是不可预测的,因为它可能取决于实际的主节点故障或功能失灵何时发生。因此,在等待其他节点加入视图更改时浪费了陷入的节点的计算能力。因此,期望提供可以帮助节点退出视图更改协议的替代机制。
发明内容
本说明书的各种实施例包括但不限于用于执行视图更改的系统、方法和非瞬态计算机可读介质。
根据一个实施例,计算机实现的待在由多个(N个)节点维护的区块链上实施的视图更改方法由N个节点中处于视图更改协议的第一节点执行。所述方法包括:将视图更改消息组播到N个节点中的至少一些节点;分别从N个节点中的至少Q个第二节点获得至少Q个回应消息,至少Q个回应消息各自包括(1)所述第二节点已知的指示N个节点中指定的主节点的一致性当前视图以及(2)所述第二节点已知的一致性当前序列号,所述当前序列号与第二节点提交(commit)的最新区块或最新交易相关联,当前序列号大于第一节点已知的第一序列号,Q(定额,quorum)是(N+F+1)/2向上取最接近整数,F是(N-1)/3向下取最接近整数;并且响应于获得至少Q个回应消息,结束视图更改协议。
在一些实施例中,至少Q个回应消息分别由至少Q个第二节点响应于至少Q个第二节点获得视图更改消息而发送到第一节点。
在其他实施例中,当前序列号包括由第二节点维护的区块链的第二副本的长度;第一序列号包括由第一节点维护的区块链的第一副本的长度。
在其他实施例中,当前序列号包括第二节点提交的最新交易的序列号;第一序列号包括第一节点提交的最新交易的序列号。
在其他实施例中,所述回应消息包括认证当前视图和当前序列号均为第二节点已知的数字签名。
在一些实施例中,所述回应消息还包括最新区块或最新交易的摘要。
在其他实施例中,所述摘要包括最新区块或最新交易的哈希值。
在其他实施例中,所述摘要包括第二节点已知但第一节点未知的最新区块的区块默克尔(Merkle)根。
在其他实施例中,结束视图更改协议包括:将由第一节点维护的区块链的第一副本与由第二节点维护的区块链的第二副本同步;并且退出视图更改协议,以使用第一节点的一致性当前视图进入正常操作协议。
在一些实施例中,至少Q个第二节点已知的当前序列号是(n+1);并且第一节点已知的第一序列号是n。
在其他实施例中,至少Q个第二节点的当前视图是v;当处在视图更改协议中时,第一节点具有大于v的第一视图。
在其他实施例中,N个节点形成实用拜占庭容错(PBFT)网络,其中N个节点之一充当主节点而其他(N-1)个节点充当备份节点。
在实施例中,视图更改系统包括:一个或多个处理器;和耦合到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行任何前述实施例的方法。
在一些实施例中,视图更改装置包括用于执行任何前述实施例的方法的多个模块。
根据另一实施例,视图更改系统用于维护区块链,其中多个(N个)节点维护所述区块链,所述系统充当N个节点中处于视图更改协议的第一节点。所述系统包括一个或多个处理器和一个或多个非瞬态计算机可读存储器,所述非瞬态计算机可读存储器耦合到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使所述系统执行包括以下的操作:将视图更改消息组播到N个节点中的至少一些节点;分别从N个节点中的至少Q个第二节点获得至少Q个回应消息,至少Q个回应消息各自包括(1)所述第二节点已知的指示N个节点中指定的主节点的一致性当前视图以及(2)所述第二节点已知的一致性当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联,当前序列号大于第一节点已知的第一序列号,Q(定额)是(N+F+1)/2向上取最接近整数,F是(N-1)/3向下取最接近整数;并且响应于获得至少Q个回应消息,结束视图更改协议。
根据又一实施例,非瞬态计算机可读存储介质用于维护区块链,其中多个(N个)节点维护所述区块链,所述存储介质与N个节点中处于视图更改协议的第一节点相关联。所述存储介质配置有可由一个或多个处理器执行的指令,以促使一个或多个处理器执行包括以下的操作:将视图更改消息组播到N个节点中的至少一些节点;分别从N个节点中的至少Q个第二节点获得至少Q个回应消息,至少Q个回应消息各自包括(1)所述第二节点已知的指示N个节点中指定的主节点的一致性当前视图以及(2)所述第二节点已知的一致性当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联,当前序列号大于第一节点已知的第一序列号,Q(定额)是(N+F+1)/2向上取最接近整数,F是(N-1)/3向下取最接近整数;并且响应于获得至少Q个回应消息,结束视图更改协议。
根据另一实施例,视图更改装置用于维护区块链,其中多个(N个)节点维护所述区块链,所述装置充当N个节点中处于视图更改协议的第一节点。所述装置包括组播模块、获取模块和结束模块,所述组播模块用于将视图更改消息组播到N个节点中的至少一些节点;所述获取模块用于分别从N个节点中的至少Q个第二节点获得至少Q个回应消息,至少Q个回应消息各自包括(1)所述第二节点已知的指示N个节点中指定的主节点的一致性当前视图以及(2)所述第二节点已知的一致性当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联,当前序列号大于第一节点已知的第一序列号,Q(定额)是(N+F+1)/2向上取最接近整数,F是(N-1)/3向下取最接近整数;所述结束模块用于响应于获得至少Q个回应消息,结束视图更改协议。
根据一个实施例,计算机实现的待在由多个(N个)节点维护的区块链上实施的视图更改方法由N个节点中处于正常操作协议的第二节点执行。所述方法包括:从处于视图更改协议的第一节点获得视图更改消息;确定第二节点的当前协议状态;响应于确定当前协议状态是正常操作协议,向第一节点发送回应消息,所述回应消息包括:(1)所述第二节点已知的指示N个节点中指定的主节点的当前视图以及(2)所述第二节点已知的当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联。
在一些实施例中,所述当前序列号大于所述第一节点已知的第一序列号。
在其他实施例中,所述当前序列号包括由第二节点维护的区块链的第二副本的长度;第一序列号包括由第一节点维护的区块链的第一副本的长度。
在其他实施例中,所述当前序列号包括第二节点提交的最新交易的序列号;第一序列号包括第一节点提交的最新交易的序列号。
在其他实施例中,所述回应消息包括认证当前视图和当前序列号均为第二节点已知的数字签名。
在一些实施例中,所述回应消息还包括最新区块或最新交易的摘要。
在其他实施例中,所述摘要包括最新区块或最新交易的哈希值。
在其他实施例中,所述摘要包括第二节点已知但第一节点未知的最新区块的区块默克尔(Merkle)根。
在其他实施例中,第二节点已知的当前序列号是(n+1);并且第一节点已知的第一序列号是n。
在一些实施例中,第二节点的当前视图是v;当处在视图更改协议中时,第一节点具有大于v的第一视图。
在其他实施例中,N个节点形成实用拜占庭容错(PBFT)网络,其中N个节点之一充当主节点而其他(N-1)个节点充当备份节点。
在实施例中,视图更改系统包括:一个或多个处理器;和耦合到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行任何前述实施例的方法。
在一些实施例中,视图更改装置包括用于执行任何前述实施例的方法的多个模块。
根据另一实施例,视图更改系统用于维护区块链,其中多个(N个)节点维护所述区块链,所述系统充当N个节点中处于正常操作协议的第二节点。所述系统包括一个或多个处理器和一个或多个非瞬态计算机可读存储器,所述存储器耦合到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统执行包括以下的操作:从处于视图更改协议的第一节点获得视图更改消息;确定第二节点的当前协议状态;响应于确定当前协议状态是正常操作协议,向第一节点发送回应消息,所述回应消息包括(1)所述第二节点已知的指示N个节点中指定的主节点的当前视图以及(2)所述第二节点已知的当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联。
根据又一实施例,非瞬态计算机可读存储介质用于维护区块链,其中多个(N个)节点维护所述区块链,所述存储介质与N个节点中处于正常操作协议的第二节点相关联。所述存储介质配置有可由一个或多个处理器执行的指令,以促使一个或多个处理器执行包括以下的操作:从处于视图更改协议的第一节点获得视图更改消息;确定第二节点的当前协议状态;响应于确定当前协议状态是正常操作协议,向第一节点发送回应消息,所述回应消息包括(1)所述第二节点已知的指示N个节点中指定的主节点的当前视图以及(2)所述第二节点已知的当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联。
根据另一实施例,视图更改装置用于维护区块链,其中多个(N个)节点维护所述区块链,所述装置充当N个节点中处于正常操作协议的第二节点。所述装置包括获取模块,用于从处于视图更改协议的第一节点获得视图更改消息;确定模块,用于确定第二节点的当前协议状态;发送模块,用于响应于确定当前协议状态是正常操作协议,向第一节点发送回应消息,所述回应消息包括:(1)所述第二节点已知的指示N个节点中指定的主节点的当前视图以及(2)所述第二节点已知的当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联。
本说明书中公开的实施例具有一个或多个技术效果。在一些实施例中,所述方法和系统可以确保PBFT共识系统中已进入视图更改协议的节点(例如,第一节点)可以有效地退出视图更改协议并恢复正常操作协议。在其他实施例中,当处于正常操作协议的第二节点接收视图更改消息时,它可以回复包括第二节点已知的当前视图和当前序列号的回应消息。当前视图指示第二节点的主节点视图,当前序列号指示第二节点的最新提交的交易或与由第二节点维护的区块链的最新区块相关联的区块链长度(也称为区块长度)。在其他实施例中,陷入视图更改协议的第一节点可以从回应消息获得当前视图和当前序列号。在接收到定额数量Q的一致性回应消息时,第一节点可以将它们与其自己的视图和序列号进行比较,以确定大多数节点是否仍处于正常操作中。如果大多数其他节点仍处于正常操作中,则第一节点可以结束视图更改协议并恢复正常操作协议。在其他实施例中,如回应消息中的序列号所指示的,大多数节点可能已经对共识验证序列中的下一交易或下一区块达成共识,所述下一交易或下一区块尚未被第一节点识别。通过意识到大多数节点没有进入视图更改,第一节点可以顺利地结束视图更改协议。在一些实施例中,如果大多数节点没有也进入视图更改且对用于结束视图更改协议的新视图达成一致,第一节点可以结束视图更改。因此可以优化正常操作中的节点数量以及贡献其计算能力的节点数量。
参考附图考虑以下描述和所附权利要求,本文公开的系统、方法和非瞬态计算机可读介质的这些和其他特征,以及相关结构元件的操作方法和功能以及部件的组合和制造经济性将变得更加明显。所有这些附图形成本说明书的一部分,其中相同的附图标记表示各附图中的对应部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,而不是限制性的。
附图说明
图1示出了根据各种实施例的网络。
图2A示出了PBFT的正常操作协议。
图2B示出了具有一个无功能副本的PBFT的正常操作协议。
图2C示出了PBFT的正常操作协议和视图更改协议。
图3A示出了正常操作协议和视图更改协议之间切换路径的流程图。
图3B示出了根据各种实施例的在正常操作协议和视图更改协议之间切换路径的流程图。
图4示出了根据各种实施例的视图更改退出步骤的流程图。
图5A示出了根据各种实施例的视图更改方法的流程图。
图5B示出了根据各种实施例的视图更改方法的流程图。
图6A示出了根据各种实施例的视图更改系统的框图。
图6B示出了根据各种实施例的视图更改系统的框图。
图7示出了计算机系统的框图,其中可以实现本文描述的任何实施例。
具体实施方式
本文公开的实施例包括但不限于可以在PBFT系统中实现的视图更改系统、方法和非瞬态计算机可读介质。在各种实施例中,提供了退出视图更改协议并恢复正常操作协议的路径。已进入视图更改的节点在无需通过传统视图更改协议的情况下可以被恢复到正常操作,传统视图更改协议需要至少Q个节点进入视图更改。Q(定额)是(N+F+1)/2向上取最接近整数,N表示节点总数并且是不小于4的整数,F是(N-1)/3向下取最接近整数。与PBFT类似,所公开的系统、方法和非瞬态计算机可读介质可以应用于其他共识协议,例如SecureRing、Byzantine Paxos、Q/U、HQ、Zyzzvyva、ABsTRACTs、RBFT、Adapt、Tangaroa、CheapBFT、MinBFT、FastBFT等。PBFT的各个方面可以参考M.Castro,B.Liskov,“PracticalByzantine Fault Tolerance,”Proceedings of the Third Symposium on OperatingSystems Design and Implementation,(Feb 1999),其通过引用完整地并入本文。
图1示出了根据各种实施例的网络120。下面给出的组件旨在说明。如图所示,网络120可以包括网络系统112。网络系统112可以包括在诸如服务器、计算机、移动电话之类的一个或多个计算设备中实现的一个或多个节点(例如,节点0、节点1、节点2、节点3、节点4、节点i等)。网络系统112可以安装有适当软件(例如,共识程序)和/或硬件(例如,有线连接、无线连接),以访问网络120或附加系统的其他设备。所述节点可以包括一个或多个处理器以及耦合到所述一个或多个处理器的一个或多个存储器。所述存储器可以是非瞬态的且计算机可读的,并且配置有可由所述一个或多个处理器执行的指令,以促使所述一个或多个处理器执行本文所述的操作。尽管在该图中节点被示为单个组件,但是应当理解,这些节点可以实现为单个设备或耦合在一起的多个设备。通常,节点能够彼此通信并且与网络系统112外部的其他设备通信。例如,通过一个或多个有线网络或无线网络(例如,因特网),数据可以被传送。
在各种实施例中,网络系统112可以被实现为包括各种区块链节点的区块链网络系统。如图所示,所述区块链网络系统可以包括多个区块链节点(例如,节点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是无功能节点。对于这两种情况,可以将正常操作协议划分为请求阶段、预准备阶段、准备阶段、提交阶段和回复阶段。
参考图2A和图2B,当客户端向负责提倡请求的主节点(副本0)提交请求(消息)时,正常操作在请求阶段开始。所述请求可以包括客户端的信息、请求操作(例如,用于共识验证的交易请求)和请求时间戳。所述客户端(也称为客户端节点)可以例如在上述节点A中被实现。节点A可以是轻量节点(例如,在移动电话中被实现)。附加地或替代地,客户端可以将请求提交给备份节点,所述备份节点在预准备阶段之前将所述请求转发到主节点。无论是主节点还是备份节点接收所述请求,相应节点都可以将所接收的请求组播到网络中的其他节点。因此,主节点可能最终以某种方式获得客户端提交给共识网络的未决请求。
因此,主节点充当领导者并且领导备份节点验证与请求相关联的交易。主节点负责在其视图中对请求的执行进行排序。在预准备阶段,主节点可以验证所获得的请求并为每个请求提出序列号。因此,每个请求可以被分配递增的序列号,从而被按顺序排列。另外,所述预准备消息可以包括区块长度。所述区块长度可以基于区块链的当前长度。例如,如果区块链当前具有1000个区块,则区块长度可以是1000,其表示区块链中已经存在1000个区块,或者可以是1001,其表示与请求相关联的交易被提议打包到区块链中尚未被其他节点验证的第1001个区块中。所述主节点可以转发请求以及序列号和/或区块长度。例如,在获得所述请求之后,所述主节点可以通过分配序列号来将请求按照用于执行相应交易的顺序排列,并将其存储到列表中。所述主节点可以向PBFT网络系统中的每个备份节点(副本1至副本3)发送预准备消息。如图2A所示,所述主节点可以将预准备消息中的列表组播到备份节点或将所述列表与预准备消息一起组播到备份节点。如图2B所示,即使备份节点(副本3)是无功能的并且主节点不知道这一点,所述主节点仍然可以发送预准备消息。每个备份节点都接受预准备消息,只要所述预准备消息是有效的。预准备消息可以包含允许确定消息的有效性的视图号、序列号、签名、摘要(d)、其他元数据等。
在准备阶段,如果备份节点接受预准备消息,则可以通过将准备消息组播到包括主节点的PBFT网络系统中的其他节点来跟踪。组播准备消息表示发送方节点同意该顺序。每个准备消息,只要是有效的,就被接收节点接受。所述准备消息的有效性可以基于视图号、序列号、签名、摘要(d)、其他元数据等被类似地确定。如果节点已经从主节点接收原始请求,已经预准备(例如,通过组播预准备消息),并且已经获得至少(Q-1)个不同的、有效的且与预准备消息匹配的一致性准备消息,则节点准备就绪。(Q-1)个准备消息可以包括组播准备消息。Q(定额)是(N+F+1)/2向上取最接近整数,N表示节点总数并且是不小于4的整数,F是(N-1)/3向下取最接近整数。Q个节点的PBFT网络系统可以容忍多达F个拜占庭故障。在一些实施例中,当N至少为(3F+1)时,Q为(2F+1)。这里,需要(Q-1)个而不是Q个准备消息,因为预准备消息可以被视为主节点的准备消息的等效物(尽管主节点本身可以不发送准备消息)。如果将预准备消息计算为另一个准备消息,那么将有至少Q个不同且有效的准备消息,这些准备消息指示所有节点中的至少Q个节点接受预准备消息,其中至多F个无功能节点可以被容忍。因此,所述预准备阶段至准备阶段确保至少(Q-F)个功能节点(Q个准备节点但考虑了至多F个无功能节点)同意,如果在视图v中执行请求,则将按照其序列号执行所述请求。所述准备阶段确保视图中每个请求的容错一致性排序。
在一些实施例中,在接收到预准备消息和(Q-1)个准备消息之后,所述备份节点可以验证该顺序并将验证结果与主节点在预准备消息中写入的提议验证结果进行比较。可以有多种方法来验证该顺序。例如,所述提议验证结果可以包括写入摘要(d)中的提议的Merkle Patricia Trie根。所述备份节点可以根据该顺序对与请求相关联的交易进行排列,并计算Merkle Patricia Trie根以与提议的Merkle Patricia Trie根进行比较。所述计算还可能需要某些现有信息,例如区块链中现有区块的节点哈希值。所述比较产生由备份节点计算的摘要(D(m))。如果摘要(D(m))与摘要(d)一致,则验证成功。一旦被验证,所述备份节点可以同意所述请求的排序(例如,将与请求相关联的交易打包到区块链的新区块中的顺序)。类似地,所述备份节点可以验证它接收的提交消息(下面相对于提交阶段描述的)是否包括相同摘要D(m),以确定其他节点是否也同意所述请求的排序。如果准备节点已经获得Q个提交消息并且已经执行了具有较低序列号的所有请求,则所述节点可以执行所述请求。
在一些实施例中,所述预准备消息可以包括新区块的摘要(d)或者与执行所述请求有关的其他信息(例如,与所述请求相关联的交易)。所述摘要(d)(例如,哈希值)可以是将哈希算法应用于诸如交易的数据的数值结果。所述备份节点可以执行交易以确认所述摘要(d)。对于多个请求,所述备份节点可以根据顺序(即,所述请求的序列号)执行所述请求以获得摘要D(m)。如果D(m)和(d)是一致的,则所述备份节点组播提交消息(下面针对提交阶段描述的),所述提交消息指示备份节点与主节点的验证结果一致。在一些实施例中,所述提交消息指示组播提交消息的备份节点同意预准备消息,并且已经从不同节点获得(Q-1)个或更多个有效的一致性准备消息。对于特定序列号的未决请求,如果准备节点已经获得Q个提交消息并且已经执行具有较低序列号的所有请求,则所述节点可以执行所述请求。
在提交阶段,如果节点准备就绪,则所述节点可以将提交消息组播到其他节点。所述节点可以从其他节点接收提交消息。只要提交消息是有效的,每个节点都接受它。所述提交消息可以包含允许确定消息的有效性的视图号、序列号、签名、摘要、其他元数据等。如果节点已经获得至少Q个不同的、有效的一致性提交消息,则表示定额数量的节点已经提交(即,至少(Q-F)个诚实节点准备就绪)并且已达成共识。至少Q个有效的提交消息可以包括组播提交消息。因此,准备阶段至提交阶段确保至少(Q-F)个功能节点(Q个提交消息但考虑了最多F个无功能节点)同意,请求最终将在视图v中按照其序列号被执行。由于节点可以在不同视图(例如,当一些节点已经进入新视图并且一些其他节点依然在先前视图中时)中提交,所接收的提交消息可以对应于在不同视图中执行的提交。所述提交阶段确保跨视图的每个请求的容错一致性排序,因为功能节点对每个请求的序列号达成一致。
在一些实施例中,如果节点已经获得至少Q个不同的、有效的一致性提交消息,则所述节点可以执行相应请求。例如,一旦获得Q个提交消息,就意味着新区块被共识验证。因此,所述节点可以将新区块打包到本地维护的区块链副本中。否则,所述备份节点可以直接触发视图更改协议。
在回复阶段,在执行所述请求之后,所述节点直接向客户端发送回复。对于打包到区块链中的交易,所述回复可以包括所述交易在区块链中的地址。由于允许多达F个故障,所以客户端在接受结果之前等待来自不同节点的具有有效签名以及具有相同请求时间戳和相同执行结果的(Q-F)个回复。对于图2A和图2B中所示的PBFT网络系统,总共存在四个节点,因此可以容忍至多一个(N=4,Q=3和F=1)无功能节点。因此,即使副本3是无功能的,在图2B中仍然可以达成共识。
为了保持活跃性,如果主节点没有组播请求的情况经过了特定时间量,则可以在视图更改协议中替换主节点。例如,所述备份节点可以维护计时器。所述备份节点在接收请求并且计时器尚未运行时启动计时器。当所述备份节点不再等待执行请求时(即,所述请求被执行),所述备份节点停止计时器,但是如果在那时它正在等待执行一个或多个其他请求,则重新启动计时器。如果所述计时器到期,则备份节点可以确定主节点是无功能的。因此,所述备份节点可以将视图更改消息组播到其他节点。又例如,所述备份节点可以确定主节点是无功能的。因此,所述备份节点可以组播视图更改消息。再例如,客户端可以使用计时器来确定在客户端将所述请求发送到主节点之后是否已经过太多时间而没有接收到响应。当该计时器到期时,客户端将其请求发送到所有节点。如果节点已经获知该请求,则忽略该重新广播。如果节点未获知该请求,它将启动计时器。一旦所述节点的计时器超时,基于怀疑主节点是无功能的,所述节点通过将视图更改消息组播到其他备份节点来启动视图更改过程。所述视图更改消息包括系统状态(以存档消息的形式,包括在先前正常操作期间其自己的准备消息),以便其他节点将获知发送方节点未发生故障。
绝对多数诚实节点可以确定主节点是否是无功能的,并在用下一主节点作为替换的情况下删除该主节点。当足够的节点认为主节点发生故障时,发生视图更改。图2C的一部分示出了视图更改协议。参考图2C,在视图更改阶段,如果当前视图是v,则节点p=(v+1)mod N等待获得Q个有效视图更改消息以成为新主节点,其中p是副本/节点序列号,v是视图号,N是副本/节点的总数。Q个视图更改消息可以包括组播视图更改消息。由于先前视图是v,因此视图更改消息可以各自包括新视图v+1。一旦新主节点p已经获得Q个视图更改消息,它就组播新视图消息。该消息包含接收的所有有效视图更改消息以及由于主节点故障而可能尚未完成的所有请求的集合。新主节点可以决定最新的检查点,并且此外,确保功能节点赶上最新状态,这可能涉及在新视图中重新提交先前的请求(例如,准备就绪、提交、但未被执行的请求)。当视图更改发生时,不会接受任何新请求。在节点接收包含Q个视图更改消息的有效新视图消息后,它将进入视图v+1并处理未完成的请求的集合。此后,正常操作协议继续进行,并且节点重做在最新的稳定检查点的序列号和准备消息中的最高号之间的请求,但是避免重新执行请求。在图3A中示出了节点在正常操作协议和视图更改协议之间的相应状态切换。如图3A所示,例如,备份节点的超时可以触发从正常操作协议(例如,在正常操作协议的任何阶段期间)切换到视图更改协议(例如,开始视图更改阶段)。在执行视图更改协议之后,一旦获得有效的新视图消息,所述备份节点可以退出视图更改协议并恢复正常操作协议以执行未决请求。有效的新消息可以包括来自不同节点的Q个视图更改消息。
如图3B所示,根据各种实施例,可以为节点提供从视图更改协议切换到正常操作协议的替代路径。在一些实施例中,所述视图更改协议中的节点可以获得Q个回应消息以结束视图更改协议。所述回应消息可以包括当前视图、当前序列号和/或摘要。基于所述回应消息,所述视图更改协议中的节点可以确定大多数其他节点处于正常操作中并因此退出视图更改。下面参考图4至图6描述更多细节。
图4示出了根据本说明书的各种实施例的视图更改退出步骤410的流程图。步骤410可以由图1的系统112的一个或多个组件(例如,上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和一个或多个附加设备例如节点A的组合)实现。步骤410可以由一个或多个区块链节点(例如,主节点、备份节点)实现。主节点和备份节点可以是PBFT模型中定义的节点。步骤410可以由包括各种硬件机器和/或软件的视图更改系统或设备(例如,计算机、服务器)实现。例如,视图更改退出系统或设备可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦合到所述一个或多个处理器并配置有可由所述一个或多个处理器执行的指令,以促使所述系统或设备(例如,处理器)执行步骤410。下面的操作旨在说明。根据实施方式,操作可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。
在步骤411,第一节点(例如,备份节点)可以进入视图更改协议。在步骤412,第一节点可以组播视图更改消息。为了进入视图更改,第一节点结束正常操作协议并进入上述视图更改协议的视图更改阶段。在一个实施例中,第一节点可以通过组播视图更改消息来进入视图更改协议。例如,备份节点可以将视图更改消息组播到主节点和其他备份节点。第一节点可以确定主节点有故障或者是无功能的,并且根据视图更改协议开始组播视图更改消息。
主节点和(N-1)个备份节点可以形成PBFT共识系统。这里,主节点可能是或可能不是真正无功能的。如果主节点确实是无功能的,则大多数备份节点(例如,Q个备份节点)可以各自进入视图更改协议,并且各自组播视图更改消息。当第一节点获得Q个视图更改消息时,它可以确定大多数节点已达成主节点是无功能的并且需要选择新主节点的共识。所述视图更改协议的其余部分可以遵循。但是,如果主节点仍在运行,则第一节点可以根据以下步骤结束视图更改协议。对于这种情况,第一节点可能由于错误、不稳定的连接和/或其他原因而进入视图更改,这导致发送和/或接收预准备消息、准备消息或提交消息的延迟,如前所述。
在步骤413,一旦接收视图更改消息,第二节点可以确定它处于正常操作协议还是处于视图更改协议中。如果处于正常操作中,在步骤414,第二节点可以回复回应消息。回应消息可以被认为是对所接收的视图更改消息的响应。“回应”一词不对消息类型进行限制。如果处于视图更改中,则第二节点可以根据视图更改协议组播其视图更改消息,或者如果它已经组播其视图更改消息则不进行任何操作。
在一个实施例中,所述回应消息可以包括第二节点已知的当前视图和当前序列号。当前视图可以指示哪个节点是第二节点已知的主节点。当前序列号可以指示(1)第二节点在提交阶段提交的最新请求(例如,交易请求)的序列号,或者指示(2)第二节点在提交阶段提交的最新区块的区块长度。所述区块长度可以基于区块链中的区块数。例如,所述区块长度可以是链中在所述区块与创始区块(genesis block)之间的区块的数量。区块链中的最先区块的区块长度可以为0,下一个区块的区块长度可以为1,依此类推。该示例不旨在限制表示区块长度的方式,只要能够指示区块链中区块的序列号,区块长度可以具有其他类型的表示。可选地,所述回应消息还可以包括最新请求的摘要或最新区块的摘要。
在步骤415,第一节点可以从各第二节点获得回应消息。响应于获得Q个或更多个一致性回应消息,第一节点可以结束视图更改协议以进入正常操作协议。Q个或更多个回应消息意味着至少Q个节点同意一致性“视图”和“序列号”。所述一致性“视图”和“序列号”表示大多数节点在其正常操作协议中正常运行,因为它们已经成功地共识验证了针对请求或区块的一个或多个交易。如果第一节点没有获得具有一致的视图和序列号的Q个回应消息,则第一节点可以依然留在视图更改协议中。
在一些实施例中,Q个或更多个第二节点已知的当前序列号大于第一节点已知的第一序列号(例如,大1)。这表明大多数节点已经完成了针对请求或区块的一轮共识验证,而这被第一节点错过了。因此,接收至少Q个回应消息的第一节点可以通过一致性回应消息知道大多数节点仍处于正常操作中。
在一些实施例中,第一节点可以至少基于当前视图进入正常操作。例如,在退出视图更改时,第一节点可以使用当前视图作为其自己的视图进入正常操作协议。第一节点还可以通过合并最新区块的信息(例如,摘要)来使其区块链的副本与区块链的最新副本同步。因此,第一节点可以用正确的视图和更新的区块链副本恢复正常操作协议。此外,第一节点从进入视图更改至恢复正常操作所花费的时间是可以预测的。因为区块链的长度随着被添加的新区块的增加而增加,由于第一节点进入视图更改并错过新区块的共识验证,第一节点可以在将该新区块添加到区块链时发现其错误。因此,恢复正常操作所花的时间可以比完成一轮共识验证所花的时间少。
因此,进入视图更改的节点可以通过替代路径有效地结束视图更改协议并重新加入其他正常操作的节点。该路径对于例如,由于错误、不稳定的连接和/或其他原因而进入视图更改的节点是有用的。该路径绕过了要求Q个节点同意视图更改以便更改主节点并恢复正常操作的传统视图更改协议。因此,通过确保最大数量的节点处于正常操作中,可以更有效地利用整体网络资源。
图5A示出了根据本说明书的各种实施例的视图更改方法510的流程图。方法510可以由图1的系统112的一个或多个组件(例如,上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和一个或多个附加设备例如节点A的组合)实现。方法510可以由一个或多个区块链节点(例如,PBFT系统中的备份节点)实现。主节点和备份节点可以是PBFT模型中定义的节点。方法510可以由包括各种硬件机器和/或软件的视图更改系统或设备(例如,计算机、服务器)实现。例如,所述视图更改系统或设备可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦合到所述一个或多个处理器并配置有可由所述一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行方法510。以下呈现的方法510的操作旨在是说明性的。根据实施方式,方法510可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。方法510的进一步细节可以参考图1至图4以及上面的相关描述。方法510可以由第一节点执行。
在各种实施例中,方法510可以是计算机实现的待在由多个(N个)节点(例如,PBFT共识系统的节点)维护的区块链上实施的视图更改方法。在一个实施例中,N个节点形成实用拜占庭容错(PBFT)网络,其中N个节点之一充当主节点而其他(N-1)个节点充当备份节点。方法510可以由N个节点中处于视图更改协议的第一节点(例如,备份节点)执行。
在一些实施例中,在框511之前,第一节点可能已进入视图更改。当进入视图更改时,第一节点可以将视图更改消息组播到其他节点。
框511包括:将视图更改消息组播到N个节点中的至少一些节点。例如,第一节点可以是备份节点,并且可以将视图更改消息组播到主节点和其他备份节点。主节点和备份节点可以形成PBFT共识系统。所述视图更改消息指示第一节点已退出其正常操作协议并进入视图更改协议。如果第一节点没有从其他节点接收到(Q-1)个类似的视图更改消息(因此获得总共Q个一致性视图更改消息,包含其自己的视图更改消息),则将无法满足针对传统视图更改协议的阈值。无论如何,以下步骤可以允许第一节点结束视图更改协议并进入正常操作协议。
框512包括:分别从所述N个节点中的至少Q个第二节点获得至少Q个回应消息,至少Q个回应消息各自包括(1)所述第二节点已知的指示所述N个节点中指定的主节点的一致性当前视图以及(2)所述第二节点已知的一致性当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联,所述当前序列号大于所述第一节点已知的第一序列号,Q(定额)是(N+F+1)/2向上取最接近整数,F是(N-1)/3向下取最接近整数。N可以是不小于4的任何整数。在一些实施例中,当N至少为(3F+1)时,Q为(2F+1)。与最新交易相关联的当前序列号可以包括例如由对应的第二节点提交的一个或多个最新交易的序列号。与最新区块相关联的当前序列号可以包括例如由对应的第二节点维护的区块链副本的长度。如前所述,区块链的长度可以取决于区块链中的区块数量,并且随着最新区块的添加而增加。在一个实施例中,针对第一节点结束视图更改,所述至少Q个回应消息可以包括一致性当前视图和一致性当前序列号。在一些实施例中,至少Q个回应消息分别由至少Q个第二节点响应于至少Q个第二节点获得视图更改消息而发送到第一节点。
在一些实施例中,术语“交易”可以通过区块链系统被实现并被记录到区块链中。所述交易可以包括,例如,金融交易、用于部署或调用区块链合约的区块链合约交易、更新区块链状态(例如,世界状态)的交易等。所述交易不必涉及金融交易。
在各种实施例中,至少Q个第二节点的当前视图是v;并且当在视图更改协议中时,第一节点具有大于v的第一视图。例如,第一节点和第二节点可以在第一节点进入视图更改之前全都具有视图v,但是之后第一节点怀疑第一节点是无功能的,并且已经进入具有视图v+1的视图更改,而第二节点仍处于视图v。
在一些实施例中,当前序列号包括由第二节点维护的区块链的第二副本的长度(也称为区块长度);第一序列号包括由第一节点维护的区块链的第一副本的长度。在一个实施例中,至少Q个第二节点已知的当前序列号是(n+1);并且第一节点已知的第一序列号是n。例如,在第一节点进入视图更改之前,第一节点和第二节点都可以在视图v中以区块长度99的区块链(即区块链中的100个区块)开始。在第一节点进入视图更改协议并因此退出共识验证之后,第二节点已经对第101个区块达成共识,从而将区块长度增加至100。陷入视图更改协议中的第一节点未知第101个区块可以引起当前序列号(100)和第一序列号(99)之间的差。
在其他实施例中,当前序列号包括第二节点提交的最新交易的序列号;第一序列号包括第一节点提交的最新交易的序列号。在一个实施例中,至少Q个第二节点已知的当前序列号是(n+1);并且第一节点已知的第一序列号是n。例如,在第一节点进入视图更改之前,第一节点和第二节点都可以以用于共识验证的80个请求(例如,交易请求)开始。所述请求可以被分配递增的序列号。在视图v中,第一节点和第二节点可以具有经共识验证的50个请求。在第一节点进入视图更改协议并因此退出共识验证之后,第二节点已经对第51个请求达成共识,从而将下一个未决请求的序列号增加到52。被共识验证的第51个请求对于陷入视图更改协议中的第一节点是未知的,并且可能引起当前序列号(51)和第一序列号(50)之间的差。
在一些实施例中,回应消息还包括最新区块或最新交易的摘要。所述摘要(例如,哈希值)可以是将哈希算法应用于诸如交易的数据的数值结果。在一个实施例中,所述摘要包括最新区块或最新交易的哈希值。在一个示例中,所述摘要包括第二节点已提交但第一节点未提交的最新交易的交易哈希值。在另一示例中,所述摘要包括第二节点已提交但第一节点未提交的多个最新交易的多个交易哈希值。在另一示例中,所述摘要包括第二节点已知但第一节点未知的最新区块的默克尔(Merkle)根。在另一示例中,所述摘要包括第二节点已知但第一节点未知的多个最新区块的多个默克尔(Merkle)根。
在一些实施例中,“视图”、“序列号”和/或“摘要”可以作为一个或多个数字签名(或简称为签名)被包含在回应消息中。所述回应消息包括认证当前视图和当前序列号均为所述第二节点已知的数字签名。“签名”表示发送相应消息的实体的认可。术语“签名”可以是任何形式的批准指示。在一个实施例中,“视图”、“序列号”和/或“摘要”可以首先输入到单向哈希函数,用对应节点的私钥对该函数的输出哈希值进行加密以获得数字签名。加密可以通过各种方式实现,例如公钥-私钥加密(也称为非对称加密);数字签名算法(DSA),例如椭圆曲线数字签名算法(ECDSA)等。例如,使用公钥算法诸如RSA,可以生成两个数学链接的密钥:一个私钥和一个公钥。数字签名是奏效的,因为公钥加密依赖于两个相互认证的加密密钥。创建数字签名的节点可以使用其自己的私钥来对“视图”、“序列号”和/或“摘要”进行加密;对这些数据进行解密的唯一方法是使用签名者节点的公钥。因此,所述数字签名可以表示对应节点已知的“视图”、“序列号”和/或“摘要”。
框513包括:响应于获得至少Q个回应消息,结束视图更改协议。在一些实施例中,结束视图更改协议包括:将由第一节点维护的区块链的第一副本与由第二节点维护的区块链的第二副本同步;并且退出视图更改协议,以使用第一节点的一致性当前视图进入正常操作协议。因此,如果第二节点处于视图v中并且第一节点陷入视图(v+1)中,则第一节点可以结束视图更改协议并在视图v中进入正常操作协议。
图5B示出了根据本说明书的各种实施例的视图更改方法520的流程图。方法520可以由图1的系统112的一个或多个组件(例如,上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和一个或多个附加设备,例如节点A的组合)实现。方法520可以由一个或多个区块链节点(例如,PBFT系统中的主节点或备份节点)实现。主节点和备份节点可以是PBFT模型中定义的节点。方法520可以由包括各种硬件机器和/或软件的视图更改系统或设备(例如,计算机、服务器)实现。例如,视图更改系统或设备可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦合到所述一个或多个处理器并配置有可由所述一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行方法520。以下呈现的方法520的操作旨在是说明性的。根据实施方式,方法520可以包括以各种顺序执行或并行执行的附加、更少或替代步骤。方法520的进一步细节可以参考图1至图4以及上面的相关描述。方法520可以由第二节点执行。
在各种实施例中,方法520可以是计算机实现的待在由多个(N个)节点(例如,PBFT共识系统的节点)维护的区块链上实施的视图更改方法。在一个实施例中,N个节点形成实用拜占庭容错(PBFT)网络,其中N个节点之一充当主节点而其他(N-1)个节点充当备份节点。方法520可以由N个节点中处于正常操作协议的第二节点(例如,主节点或备份节点)执行。
框521包括:从处于视图更改协议的第一节点获得视图更改消息。在一些实施例中,在框521之前,第一节点可能已进入视图更改。当进入视图更改时,第一节点可以将视图更改消息组播到其他节点。因此,所述第二节点可以获得这种视图更改消息。
框522包括:确定第二节点的当前协议状态。第二节点可以处于正常操作协议或视图更改协议中。
框523包括:响应于确定当前协议状态是正常操作协议,向第一节点发送回应消息,所述回应消息包括(1)所述第二节点已知的指示N个节点中指定的主节点的当前视图以及(2)所述第二节点已知的当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联。
在各种实施例中,至少Q个第二节点的当前视图是v;并且,当处于视图更改协议时,第一节点具有大于v的第一视图。例如,第一节点和第二节点可以在第一节点进入视图更改之前全都具有视图v,但是之后第一节点怀疑第一节点是无功能的,并且已进入具有视图v+1的视图更改,而第二节点仍处于视图v中。在一些实施例中,当前序列号大于第一节点已知的第一序列号。以上描述了序列号的各种示例。同样如本文所述,所述回应消息还可以包括最新区块或最新交易的摘要。
图6A示出了根据各种实施例的视图更改系统610的框图。视图更改系统610(例如,计算机系统)可以是上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和附加设备(例如,节点A)的组合的实现的示例。方法510可以由视图更改系统610实现。视图更改系统610可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦合到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行方法510。视图更改系统610可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,视图更改系统610可以被称为视图更改装置(相对于第一节点)。视图更改装置可以用于维护区块链,其中多个(N个)节点维护区块链,N个节点之一充当主节点而其他(N-1)个节点充当备份节点,共识装置充当N个节点中处于视图更改协议的第一节点。所述共识装置可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储器,所述存储器耦合到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使装置执行操作。所述共识装置可以包括与指令(例如,软件指令)对应的各种单元/模块。所述共识装置可以包括组播模块611、获取模块612和结束模块613,所述组播模块用于将视图更改消息组播到N个节点中的至少一些节点;所述获取模块用于分别从N个节点中的至少Q个第二节点获得至少Q个回应消息,所述至少Q个回应消息各自包括(1)所述第二节点已知的指示N个节点中指定的主节点的一致性当前视图以及(2)所述第二节点已知的一致性当前序列号,所述当前序列号与由第二节点提交的最新区块或最新交易相关联,当前序列号大于第一节点已知的第一序列号,Q(定额)是(N+F+1)/2向上取最接近整数,F是(N-1)/3向下取最接近整数;所述结束模块用于响应于获得至少Q个回应消息,结束视图更改协议。
图6B示出了根据各种实施例的视图更改系统620的框图。视图更改系统620(例如,计算机系统)可以是上述节点0、节点1、节点2、......或节点i或者类似设备,或者任何节点和附加设备(例如,节点A)的组合的实现的示例。方法520可以由视图更改系统620实现。视图更改系统620可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储介质(例如,一个或多个存储器),所述存储介质耦合到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使系统或设备(例如,处理器)执行方法520。视图更改系统620可以包括与指令(例如,软件指令)相对应的各种单元/模块。
在一些实施例中,视图更改系统620可以被称为视图更改装置(相对于第二节点)。视图更改装置可以用于维护区块链,其中多个(N个)节点维护区块链,N个节点之一充当主节点而其他(N-1)个节点充当备份节点,共识装置充当N个节点中处于正常操作协议的第二节点。所述共识装置可以包括一个或多个处理器和一个或多个非瞬态计算机可读存储器,所述存储器耦合到一个或多个处理器并配置有可由一个或多个处理器执行的指令,以促使装置执行操作。所述共识装置可以包括与指令(例如,软件指令)对应的各种单元/模块。所述共识装置可以包括获取模块621,用于从处于视图更改协议的第一节点获得视图更改消息;确定模块622,用于确定第二节点的当前协议状态;发送模块623,用于响应于确定当前协议状态是正常操作协议,向第一节点发送回应消息,所述回应消息包括:(1)所述第二节点已知的指示N个节点中指定的主节点的当前视图以及(2)所述第二节点已知的当前序列号,所述当前序列号与第二节点提交的最新区块或最新交易相关联。
本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备或结合硬连线和/或程序逻辑以实现这些技术的任何其他设备或设备的组合。专用计算设备可以被实现为个人计算机、膝上型计算机、蜂窝电话、照相电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板电脑、可穿戴设备或其组合。计算设备通常由操作系统软件控制和协调。传统的操作系统控制和调度用于执行的计算机进程,执行存储器管理,提供文件系统、网络、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 (25)

1.一种计算机实现的待在由多个、即N个节点维护的区块链上实施的共识方法,所述方法由所述N个节点中处于视图更改协议的第一节点执行,所述方法包括:
将视图更改消息组播到所述N个节点中的至少一些节点;
分别从所述N个节点中的至少Q个第二节点获得至少Q个回应消息,所述至少Q个回应消息各自包括(1)所述第二节点已知的指示所述N个节点中指定的主节点的一致性当前视图以及(2)所述第二节点已知的一致性当前序列号,所述当前序列号与所述第二节点提交的最新区块或最新交易相关联,所述当前序列号大于所述第一节点已知的第一序列号,定额Q是(N+F+1)/2向上取最接近的整数,F是(N-1)/3向下取最接近的整数;并且
响应于获得所述至少Q个回应消息,结束所述视图更改协议。
2.如权利要求1所述的方法,其中:
所述至少Q个回应消息分别由所述至少Q个第二节点响应于所述至少Q个第二节点获得所述视图更改消息而发送到所述第一节点。
3.如权利要求1和2中任一项所述的方法,其中:
所述当前序列号包括由所述第二节点维护的所述区块链的第二副本的长度;并且
所述第一序列号包括由所述第一节点维护的所述区块链的第一副本的长度。
4.如权利要求1和2中任一项所述的方法,其中:
所述当前序列号包括所述第二节点提交的最新交易的序列号;并且
所述第一序列号包括所述第一节点提交的最新交易的序列号。
5.如前述任一权利要求所述的方法,其中:
所述回应消息包括认证所述当前视图和所述当前序列号均为所述第二节点已知的数字签名。
6.如前述任一权利要求所述的方法,其中:
所述回应消息还包括所述最新区块或所述最新交易的摘要。
7.如权利要求6所述的方法,其中:
所述摘要包括所述最新区块或所述最新交易的哈希值。
8.如权利要求6和7中任一项所述的方法,其中:
所述摘要包括所述第二节点已知但所述第一节点未知的所述最新区块的区块默克尔根。
9.如前述任一权利要求所述的方法,其中,结束所述视图更改协议包括:
将由所述第一节点维护的所述区块链的第一副本与由所述第二节点维护的所述区块链的第二副本进行同步;并且
退出所述视图更改协议,以使用所述第一节点的所述一致性当前视图进入正常操作协议。
10.如前述任一权利要求所述的方法,其中:
所述至少Q个第二节点已知的所述当前序列号是n+1;
所述第一节点已知的所述第一序列号是n;
所述至少Q个第二节点的当前视图是v;以及
当在所述视图更改协议中时,所述第一节点具有大于v的第一视图。
11.如前述任一权利要求所述的方法,其中:
所述N个节点形成实用拜占庭容错PBFT网络,其中,所述N个节点之一充当主节点而其他N-1个节点充当备份节点。
12.一种视图更改系统,包括:
一个或多个处理器;和
耦合到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求1至11中任一项所述的方法。
13.一种视图更改装置,包括用于执行权利要求1至11中任一项所述的方法的多个模块。
14.一种计算机实现的待在由多个、即N个节点维护的区块链上实施的共识方法,所述方法由所述N个节点中处于正常操作协议的第二节点执行,所述方法包括:
从处于视图更改协议的第一节点获取视图更改消息;
确定所述第二节点的当前协议状态;以及
响应于确定所述当前协议状态是正常操作协议,向所述第一节点发送回应消息,所述回应消息包括(1)所述第二节点已知的指示所述N个节点中指定的主节点的当前视图和(2)所述第二节点已知的当前序列号,所述当前序列号与所述第二节点提交的最新区块或最新交易相关联。
15.如权利要求14所述的方法,其中:
所述当前序列号大于所述第一节点已知的第一序列号。
16.如权利要求14和15中任一项所述的方法,其中:
所述当前序列号包括由所述第二节点维护的所述区块链的第二副本的长度;以及
所述第一序列号包括由所述第一节点维护的所述区块链的第一副本的长度。
17.如权利要求14和15中任一项所述的方法,其中:
所述当前序列号包括所述第二节点提交的最新交易的序列号;以及
所述第一序列号包括所述第一节点提交的最新交易的序列号。
18.如权利要求14-17中任一项所述的方法,其中:
所述回应消息包括认证所述当前视图和所述当前序列号均为所述第二节点已知的数字签名。
19.如权利要求14-17中任一项所述的方法,其中:
所述回应消息还包括所述最新区块或所述最新交易的摘要。
20.如权利要求19所述的方法,其中:
所述摘要包括所述最新区块或所述最新交易的哈希值。
21.如权利要求19和20中任一项所述的方法,其中:
所述摘要包括所述第二节点已知但所述第一节点未知的所述最新区块的默克尔根。
22.如权利要求14-21中任一项所述的方法,其中:
所述第二节点已知的所述当前序列号是n+1;
所述第一节点已知的所述第一序列号是n;
所述第二节点的所述当前视图是v;以及
当处于所述视图更改协议中时,所述第一节点具有大于v的第一视图。
23.如权利要求14-23中任一项所述的方法,其中:
所述N个节点形成实用拜占庭容错PBFT网络,其中,所述N个节点之一充当主节点而其他N-1个节点充当备份节点。
24.一种视图更改系统,包括:
一个或多个处理器;和
耦合到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求14至23中任一项所述的方法。
25.一种视图更改装置,包括用于执行权利要求14至23中任一项所述的方法的多个模块。
CN201980002995.6A 2019-03-18 2019-03-18 用于结束视图更改协议的系统和方法 Active CN110785966B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/078492 WO2019101242A2 (en) 2019-03-18 2019-03-18 System and method for ending view change protocol

Publications (2)

Publication Number Publication Date
CN110785966A true CN110785966A (zh) 2020-02-11
CN110785966B CN110785966B (zh) 2022-08-26

Family

ID=66631238

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980002995.6A Active CN110785966B (zh) 2019-03-18 2019-03-18 用于结束视图更改协议的系统和方法

Country Status (10)

Country Link
US (3) US11263067B2 (zh)
EP (1) EP3596888B1 (zh)
JP (1) JP6923674B2 (zh)
KR (1) KR102170347B1 (zh)
CN (1) CN110785966B (zh)
AU (1) AU2019203862B2 (zh)
CA (1) CA3057395A1 (zh)
SG (1) SG11201908887XA (zh)
TW (1) TWI717135B (zh)
WO (1) WO2019101242A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112381649A (zh) * 2020-11-17 2021-02-19 深圳前海微众银行股份有限公司 基于区块链的交易共识方法、装置及设备
KR20220001644A (ko) * 2020-06-30 2022-01-06 주식회사 트러스트디비 Rdbms 기반의 분산원장 관리 시스템 및 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11263067B2 (en) 2019-03-18 2022-03-01 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
WO2019101241A2 (en) * 2019-03-18 2019-05-31 Alibaba Group Holding Limited System and method for ending view change protocol
US10778452B2 (en) * 2019-06-03 2020-09-15 Alibaba Group Holding Limited Blockchain ledger authentication
US11513923B2 (en) * 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
CN111526216B (zh) * 2020-07-03 2020-09-22 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
CN111526165B (zh) * 2020-07-03 2020-10-09 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
CN111526218B (zh) * 2020-07-03 2020-09-22 支付宝(杭州)信息技术有限公司 联盟链中的共识方法和系统
KR102652737B1 (ko) * 2021-09-29 2024-04-01 한양대학교 산학협력단 블록체인 네트워크를 위한 효율적인 듀얼모드 합의 프로토콜
CN117202183B (zh) * 2023-09-13 2024-03-12 北京航空航天大学 一种基于同步拜占庭容错的轻量级5g设备群组认证方法
CN116915796B (zh) * 2023-09-14 2023-12-12 杭州趣链科技有限公司 集群视图分叉后的自主恢复方法、装置以及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671821B1 (en) * 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
CN106529951A (zh) * 2016-12-30 2017-03-22 杭州云象网络技术有限公司 一种联盟链网络下采用异步方式的节点共识验证方法
CN107528882A (zh) * 2017-07-14 2017-12-29 阿里巴巴集团控股有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备
CN108108967A (zh) * 2017-12-29 2018-06-01 山大地纬软件股份有限公司 面向复杂数字资产的多阶段pbft共识系统及方法
US20180307573A1 (en) * 2017-04-21 2018-10-25 Vmware, Inc. Byzantine agreement using communications having linear complexity
CN109039748A (zh) * 2018-08-10 2018-12-18 上交所技术有限责任公司 一种pbft协议动态增删节点的方法
CN109194493A (zh) * 2018-08-13 2019-01-11 北京邮电大学 一种信息管理系统、方法及装置

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549142B2 (en) * 2011-03-28 2013-10-01 Siemens Corporation Replicated state machine utilizing view change protocol resilient to performance attacks
EP3345360B1 (en) 2015-09-04 2021-03-03 Nec Corporation Method for storing an object on a plurality of storage nodes
US10803537B2 (en) 2016-04-18 2020-10-13 R3 Ltd. System and method for managing transactions in dynamic digital documents
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
US10713731B2 (en) 2016-07-22 2020-07-14 Nec Corporation Method for secure ledger distribution and computer system using secure distributed ledger technology
EP3281115B1 (en) 2016-10-04 2019-06-19 Nec Corporation Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
JP6825296B2 (ja) * 2016-10-11 2021-02-03 富士通株式会社 エッジサーバ,及びその暗号化通信制御方法
US10540652B2 (en) 2016-11-18 2020-01-21 Intel Corporation Technology for secure partitioning and updating of a distributed digital ledger
EP3394756B1 (en) * 2016-11-25 2024-01-03 NEC Corporation Method and system for byzantine fault - tolerance replicating of data
US10523421B2 (en) 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
US10586210B2 (en) 2016-11-30 2020-03-10 International Business Machines Corporation Blockchain checkpoints and certified checkpoints
US20180158034A1 (en) 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
US11954697B2 (en) 2017-02-27 2024-04-09 Ncr Corporation Blockchain consumer ledger
US20180267539A1 (en) 2017-03-17 2018-09-20 Jeanne Louise Shih Distributive networks of groups of moveable autonomous devices
CN107391320B (zh) * 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
WO2018170504A1 (en) 2017-03-17 2018-09-20 Labyrinth Research Llc Unified control of privacy-impacting devices
CN107360206B (zh) 2017-03-29 2020-03-27 创新先进技术有限公司 一种区块链共识方法、设备及系统
CN106789095B (zh) 2017-03-30 2020-12-08 腾讯科技(深圳)有限公司 分布式系统及消息处理方法
CN107040594B (zh) 2017-04-12 2020-04-10 山大地纬软件股份有限公司 基于pbft的许可区块链节点准入的方法及装置
US10896169B2 (en) 2017-05-12 2021-01-19 International Business Machines Corporation Distributed system, computer program product and method
EP3632037B1 (en) 2017-05-22 2024-10-16 Visa International Service Association Network for improved verification speed with tamper resistant data
JP2019012415A (ja) * 2017-06-30 2019-01-24 株式会社bitFlyer ネットワークにおける合意形成方法及び当該ネットワークを構成するノード
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
US10567359B2 (en) 2017-07-18 2020-02-18 International Business Machines Corporation Cluster of secure execution platforms
EP3439264B1 (en) 2017-08-01 2021-06-02 Panasonic Intellectual Property Corporation of America Management system, vehicle, and information processing method
US20190058709A1 (en) 2017-08-16 2019-02-21 Telefonaktiebolaget Lm Ericsson (Publ) Tenant management method and system in a cloud computing environment
CN107579848B (zh) * 2017-08-30 2020-08-25 上海保险交易所股份有限公司 实用拜占庭容错共识机制中动态更改共识节点的方法
US10672211B2 (en) * 2017-08-31 2020-06-02 BinBox, Inc. Secure storage systems and methods
CN107819749A (zh) 2017-10-26 2018-03-20 平安科技(深圳)有限公司 基于以太坊的区块链系统和交易数据处理方法
US20190251199A1 (en) 2018-02-14 2019-08-15 Ivan Klianev Transactions Across Blockchain Networks
RU2724181C1 (ru) 2018-11-07 2020-06-22 Алибаба Груп Холдинг Лимитед Упрощение консенсуса в цепочках блоков по принципу практичной отказоустойчивости на основе византийского соглашения и синхронизации узлов
US20200162266A1 (en) 2018-11-16 2020-05-21 Adobe Inc. Facilitating analytic services for provenance of digital documents
US10938750B2 (en) 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
SG11201908387SA (en) 2019-03-18 2019-10-30 Alibaba Group Holding Ltd Consensus system downtime recovery
US11263067B2 (en) 2019-03-18 2022-03-01 Advanced New Technologies Co., Ltd. System and method for ending view change protocol
WO2019101241A2 (en) 2019-03-18 2019-05-31 Alibaba Group Holding Limited System and method for ending view change protocol
SG11202004685RA (en) 2019-06-05 2020-06-29 Alibaba Group Holding Ltd Consensus system and method
US10944624B2 (en) 2019-06-28 2021-03-09 Advanced New Technologies Co., Ltd. Changing a master node in a blockchain system
CN114401150B (zh) 2019-09-05 2023-10-20 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统
CN110730204B (zh) 2019-09-05 2022-09-02 创新先进技术有限公司 区块链网络中删除节点的方法和区块链系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671821B1 (en) * 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
CN106529951A (zh) * 2016-12-30 2017-03-22 杭州云象网络技术有限公司 一种联盟链网络下采用异步方式的节点共识验证方法
US20180307573A1 (en) * 2017-04-21 2018-10-25 Vmware, Inc. Byzantine agreement using communications having linear complexity
CN107528882A (zh) * 2017-07-14 2017-12-29 阿里巴巴集团控股有限公司 区块链共识网络中处理共识请求的方法、装置和电子设备
CN108108967A (zh) * 2017-12-29 2018-06-01 山大地纬软件股份有限公司 面向复杂数字资产的多阶段pbft共识系统及方法
CN109039748A (zh) * 2018-08-10 2018-12-18 上交所技术有限责任公司 一种pbft协议动态增删节点的方法
CN109194493A (zh) * 2018-08-13 2019-01-11 北京邮电大学 一种信息管理系统、方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220001644A (ko) * 2020-06-30 2022-01-06 주식회사 트러스트디비 Rdbms 기반의 분산원장 관리 시스템 및 방법
KR102460432B1 (ko) 2020-06-30 2022-10-27 주식회사 트러스트디비 Rdbms 기반의 분산원장 관리 시스템 및 방법
CN112381649A (zh) * 2020-11-17 2021-02-19 深圳前海微众银行股份有限公司 基于区块链的交易共识方法、装置及设备
CN112381649B (zh) * 2020-11-17 2024-06-18 深圳前海微众银行股份有限公司 基于区块链的交易共识方法、装置及设备

Also Published As

Publication number Publication date
JP6923674B2 (ja) 2021-08-25
EP3596888A4 (en) 2020-05-13
WO2019101242A2 (en) 2019-05-31
WO2019101242A3 (en) 2019-12-26
US10877829B2 (en) 2020-12-29
EP3596888A2 (en) 2020-01-22
US11263067B2 (en) 2022-03-01
US10725843B2 (en) 2020-07-28
US20200142765A1 (en) 2020-05-07
TW202037116A (zh) 2020-10-01
JP2020519959A (ja) 2020-07-02
EP3596888B1 (en) 2022-08-03
KR102170347B1 (ko) 2020-10-28
TWI717135B (zh) 2021-01-21
US20200110648A1 (en) 2020-04-09
KR20200112636A (ko) 2020-10-05
CN110785966B (zh) 2022-08-26
AU2019203862B2 (en) 2020-07-09
US20200310901A1 (en) 2020-10-01
SG11201908887XA (en) 2019-10-30
CA3057395A1 (en) 2019-05-31

Similar Documents

Publication Publication Date Title
CN110800258B (zh) 用于结束视图更改协议的系统和方法
CN110785966B (zh) 用于结束视图更改协议的系统和方法
CN111630826B (zh) 共识系统和方法
CN110870288B (zh) 共识系统停机时间恢复
CN110915185B (zh) 共识系统停机时间恢复
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

Effective date of registration: 20200927

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: 20200927

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.

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

Ref country code: HK

Ref legal event code: DE

Ref document number: 40027496

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240919

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Ant Chain Technology Co.,Ltd.

Country or region after: Singapore

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

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: Cayman Islands