CN108667614B - 一种拜占庭容错方法及其实现系统 - Google Patents

一种拜占庭容错方法及其实现系统 Download PDF

Info

Publication number
CN108667614B
CN108667614B CN201810356617.5A CN201810356617A CN108667614B CN 108667614 B CN108667614 B CN 108667614B CN 201810356617 A CN201810356617 A CN 201810356617A CN 108667614 B CN108667614 B CN 108667614B
Authority
CN
China
Prior art keywords
node
block
nodes
endorsement
blocks
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.)
Active
Application number
CN201810356617.5A
Other languages
English (en)
Other versions
CN108667614A (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.)
Shanghai Distributed Technologies Co ltd
Original Assignee
Shanghai Distributed Technologies Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Distributed Technologies Co ltd filed Critical Shanghai Distributed Technologies Co ltd
Priority to CN201810356617.5A priority Critical patent/CN108667614B/zh
Publication of CN108667614A publication Critical patent/CN108667614A/zh
Application granted granted Critical
Publication of CN108667614B publication Critical patent/CN108667614B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • H04L2209/463Electronic voting

Abstract

本发明公开了一种拜占庭容错方法,包括:节点选择步骤:从区块链网络中选择至少提案节点、背书节点、确认节点。提案步骤:提案节点构建新的备选区块。背书步骤:背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书。确认步骤:如有备选区块在预定时间内得到预定数量的背书节点的背书,则由所述确认节点对其进行确认。区块保存步骤:如有备选区块在预定时间内的到预定数量的所述确认节点的确认,则所述备选区块完成共识;区块链网络中的所有节点保存所述完成共识的区块。本发明还公开了所述拜占庭容错方法的实现系统。本发明可确保在极端情况下持续运行,并有利于区块链网络扩大规模。

Description

一种拜占庭容错方法及其实现系统
技术领域
本发明涉及一种区块链(Blockchain)网络的共识算法(consensus mechanism),尤其涉及一种拜占庭容错(Byzantine FaultTolerance,BFT)方法。
背景技术
2016年10月18日工业和信息化部发布的《中国区块链技术和应用发展白皮书》中,将区块链定义为一种无须中介参与、亦能在互不信任或弱信任的参与者之间维系一套不可篡改的账本记录的技术。首先,区块链是一种以区块(block)为单位的链(chain)状数据结构,每一个区块都与前续区块通过密码学证明的方式链接在一起。其次,区块链是一种全网共享的分布式账本(distributed ledger)。许多场景中,区块链与分布式账本这两个技术术语具有相同含义。
典型地,区块链技术被P2P网络(peer-to-peer network)的全部或部分节点用来根据某种共识算法验证新的区块,通过验证的新区块被新增到区块链数据结构的末尾。采用区块链技术的P2P网络就被称为区块链网络。共识是指多方参与的节点在预设规则下,通过多个节点交互对某些数据、行为或流程达成一致的过程。共识机制是定义共识过程的算法、协议和规则。
共识算法,作为分布式算法的一种,其复杂度主要通过消息复杂度(MessageComplexity)表示。所谓消息复杂度就是共识算法完成共识的过程中需要在区块链网络中传播的消息的数量。
常见的共识算法包括实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法、授权拜占庭容错(Delegated Byzantine Fault Tolerance)算法等。这些传统的拜占庭容错算法完成一轮共识的消息复杂度为N2,其中N为网络规模,即区块链网络中全部节点的数量。因此,传统的拜占庭容错算法在区块链网络中使用时,随着网络规模扩大所要传播的消息数量成平方级增长,这容易发生消息堵塞网络的情况。
因此,有必要开发一种新型拜占庭容错方法以解决上述技术问题。
发明内容
本发明所要解决的技术问题是:提供一种拜占庭容错方法,用作区块链网络的共识算法时,随着网络规模扩大消息数量缓慢增长,因而不容易堵塞网络,有利于扩展网络规模。相应地,本发明还要提供一种拜占庭容错方法的实现系统。
为解决上述技术问题,本发明提供了一种拜占庭容错方法,包括如下步骤。
节点选择步骤:从区块链网络的全部节点中选择至少三种节点,分别作为提案节点、背书节点和确认节点。
提案步骤:所述提案节点构建新的备选区块,签名后在所述区块链网络中广播;所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级。
背书步骤:所述背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播。
确认步骤:如有备选区块在预定时间内得到预定数量的背书节点的背书,则由所述确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播。
区块保存步骤:如有备选区块在预定时间内的到预定数量的所述确认节点的确认,则所述备选区块完成共识;所述区块链网络中的所有节点保存所述完成共识的区块。
优选地,所述提案步骤、背书步骤、确认步骤中,提案节点、背书节点、确认节点的所述签名采用PKCS、DSA、x.509、PGP、Hash算法中的一种或多种。节点之间的通信例如采用非对称加密算法,各节点都有私钥和公钥。各节点发送的消息使用该节点的私钥签名并加密,各节点接收的消息使用该节点的私钥验证并解密。这里提供了可进行签名加密或是验证解密的一些算法,可用于具体实施。
优选地,所述节点选择步骤中,所述提案节点具有至少两个,各个提案节点之间具有各不相同的优先级。这样不同提案节点所构建的新的备选区块也具有不同的优先级,便于对备选区块按照优先级排序。
优选地,所述节点选择步骤中,所述背书节点具有至少两个,全部背书节点至少具有两个优先级。首先由最高优先级的一个或多个背书节点进行背书,如未成功再由所有背书节点对空区块进行背书。这样便实现了有层次的背书。
优选地,所述节点选择步骤中,所述确认节点具有至少两个,全部确认节点至少具有两个优先级。首先由最高优先级的一个或多个确认节点进行确认,如未成功再由所有确认节点对空区块进行确认。遮阳便实现了有层次的确认。
进一步地,所述节点选择步骤中包括如下步骤。步骤S11:对区块链网络中最新完成共识的区块计算随机值。步骤S12:基于所述随机值从区块链网络的节点中选定本轮共识的提案节点、背书节点、确认节点。
这提供了一种节点选择方法,是根据上一轮完成共识的区块来选择本轮共识的提案节点、背书节点、确认节点的方法,可使提案节点、背书节点、确认节点在每一轮共识中都有重新选择机会。
优选地,所述步骤S11中,采用可验证随机函数计算随机值。这给出了计算随机值的一种具体实现方式。
优选地,所述步骤S12中,制定一个节点信息表格,所述提案节点、背书节点和确认节点是由所述随机值的不同比特位在所述节点信息表格中选定的。这给出了根据随机值选择节点的一种具体实现方式。
进一步地,所述节点选择步骤中,采用随机算法在区块链网络的节点中选定提案节点、背书节点和确认节点。这提供了另一种节点选择方法。
进一步地,所述提案步骤包括如下步骤。步骤S21:本轮共识的最高优先级的提案节点构建本轮共识的新的备选区块,签名后在区块链网络中广播。步骤S22:所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存。步骤S23:如超过第一预定时间,本轮共识的最高优先级的提案节点没有构建备选区块、或构建的备选区块未通过检查,则由非最高优先级的提案节点构建新的备选区块,签名后向区块链网络中广播。步骤S24:所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存。步骤S25:如超过第二预定时间,所有提案节点都没有构建备选区块、或构建的备选区块均未通过检查,则由任意提案节点随机提交空区块,签名后向区块链网络中广播。这提供了一种提案方法,分为三个层次,可以确保在任何情况下都能向后续的背书步骤提交新的备选区块、或是空区块。
优选地,所述步骤S21、步骤S23中,提案节点构建新的备选区块后,先对自身构建的备选区块进行检查,检查通过后才将自身构建的备选区块签名,然后在所述区块链网络中广播。这可确保构建的新的备选区块是正确有效的。
优选地,所述步骤S22、步骤S24中,提案节点还对收到的备选区块进行检查;如果检查为有效,则对通过检查的备选区块进行缓存;如果检查结果为无效,忽略该备选区块。这可确保构建的新的备选区块是正确有效的。
优选地,所述步骤S21至步骤S24中,所述检查包括对构建备选区块的提案节点的签名的有效性检查、对构建的新的备选区块数据的有效性检查、对构建备选区块的提案节点的提案权限的有效性检查中的一种或多种。这里提供了对备选区块的检查内容的一种示例。
进一步地,所述背书步骤包括如下步骤。步骤S31:本轮共识的所有背书节点对提案节点广播的备选区块进行验证,并对验证后的备选区块按照优先级排序。步骤S32:本轮共识的最高优先级的一个或多个背书节点对最高优先级的备选区块进行背书,签名后在所述区块链网络中广播。步骤S33:本轮共识的所有背书节点监听区块链网络中的背书消息,在收到背书的备选区块后将其缓存。步骤S34:如有备选区块在第三预定时间内得到第一预定数量的背书节点的背书,则将该备选区块提交进入确认步骤;否则进入步骤S35。步骤S35:如全部备选区块在第三预定时间内均未得到第一预定数量的背书节点的背书,则由任意背书节点随机对空区块进行背书,附加自己的签名后向区块链网络中广播进入确认步骤。这提供了一种背书方法,分为两个层次,可以确保在任何情况下都能向后续的确认步骤提交经过背书的备选区块、或是空区块。
优选地,所述步骤S31中,所述验证包括对构建备选区块的提案节点的签名的有效性验证、对构建的新的备选区块数据的有效性验证、对构建备选区块的提案节点的提案权限的有效性验证中的一种或多种。这可确保新的备选区块是正确有效的。
进一步地,所述确认步骤包括如下步骤。步骤S41:本轮共识的最高优先级的一个或多个确认节点对背书节点提交的备选区块进行确认,签名后在区块链网络中广播。步骤S42:所有确认节点监听区块链网络中的确认消息,在收到确认的备选区块后将其缓存。步骤S43:如有备选区块在第四预定时间内得到第二预定数量的确认节点的确认,则将该备选区块作为完成本轮共识的区块,提交进入区块保存步骤;否则进入步骤S44。步骤S44:如全部备选区块在第四预定时间内均未得到第二预定数量的确认节点的确认,则由任意确认节点随机对空区块进行确认,附加自己的签名后向区块链网络中广播进入区块保存步骤。这提供了一种确认方法,分为两个层次,可以确保在任何情况下都能向后续的区块保存步骤提交经过确认的备选区块、或是空区块。
进一步地,所述区块保存步骤包括如下步骤。步骤S51:共识节点通知非共识节点本轮区块共识完成。步骤S52:区块链网络中所有节点保存完成本轮共识的区块。步骤S53:区块链网络开始下一轮的区块共识过程。这提供了一种区块保存方法。
为解决上述技术问题,本发明还提供了一种拜占庭容错方法的实现系统,包括节点选择模块、提案模块、背书模块、确认模块、区块保存模块。
所述节点选择模块用于从区块链网络的全部节点中选择至少三种节点,所述三种节点分别是提案节点、背书节点和确认节点。
所述提案模块用于由提案节点构建新的备选区块,签名后在所述区块链网络中广播;所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级。
所述背书模块用于由背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播。
所述确认模块用于由确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播。
所述区块保存模块用于对预定时间内的到预定数量的确认节点的确认的备选区块在区块链网络中的所有节点中保存。
进一步地,所述节点选择模块包括随机值计算单元、选定单元。所述随机值计算单元用于对区块链网络中最新完成共识的区块计算随机值。所述选定单元用于基于所述随机值从区块链网络的节点中选定本轮共识的提案节点、背书节点、确认节点。这提供了一种节点选择模块,是根据上一轮完成共识的区块来选择本轮共识的提案节点、背书节点、确认节点的方法,可使提案节点、背书节点、确认节点在每一轮共识中都有重新选择机会。
进一步地,所述节点选择模块包括随机选定单元。所述随机选定单元用于采用随机算法从区块链网络的节点中选定提案节点、背书节点、确认节点。这提供了另一种节点选择方法。
进一步地,所述提案模块包括构建单元、备选构建单元、监听单元、第二备选构建单元。所述构建单元用来由本轮共识的最高优先级的提案节点构建本轮共识的新的备选区块,签名后在区块链网络中广播。所述备选构建单元用来在超过第一预定时间、且本轮共识的最高优先级的提案节点没有构建备选区块、或构建的备选区块未通过检查时,由非最高优先级的提案节点构建新的备选区块,签名后向区块链网络中广播。所述监听单元用来由所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存。所述第二备选构建单元用来在超过第二预定时间、且所有提案节点都没有构建备选区块、或构建的备选区块均未通过检查时,由任意提案节点随机提交空区块,签名后向区块链网络中广播。这提供了一种提案模块,分为三个层次,可以确保在任何情况下都能向后续的背书模块提交新的备选区块、或是空区块。
进一步地,所述背书模块包括验证单元、背书单元、监听单元、提交单元、备选背书单元。所述验证单元用来由所有背书节点对提案节点广播的备选区块进行验证,并对验证后的备选区块按照优先级排序。所述背书单元用来由最高优先级的一个或多个背书节点对最高优先级的备选区块进行背书,签名后在所述区块链网络中广播。所述监听单元用来由所有背书节点监听区块链网络中的背书消息,在收到背书的备选区块后将其缓存。所述提交单元用来在有备选区块在第三预定时间内得到第一预定数量的背书节点的背书时,将该备选区块提交。所述备选背书单元用来在全部备选区块在第三预定时间内均未得到第一预定数量的背书节点的背书时,由任意背书节点随机对空区块进行背书,附加自己的签名后向区块链网络中广播。这提供了一种背书模块,分为两个层次,可以确保在任何情况下都能向后续的确认模块提交经过背书的备选区块、或是空区块。
进一步地,所述确认模块包括确认单元、监听单元、提交单元、备选确认单元。所述确认单元用来由本轮共识的最高优先级的一个或多个确认节点对前一步骤由背书节点提交的备选区块进行确认,签名后在区块链网络中广播。所述监听单元用来由所有确认节点监听区块链网络中的确认消息,在收到确认的备选区块后将其缓存。所述提交单元用来在有备选区块在第四预定时间内得到第二预定数量的确认节点的确认时,将该备选区块作为完成本轮共识的区块提交。所述备选确认单元用来在全部备选区块在第四预定时间内均未得到第二预定数量的确认节点的确认时,由任意确认节点随机对空区块进行确认,附加自己的签名后向区块链网络中广播。这提供了一种确认模块,分为两个层次,可以确保在任何情况下都能向后续的区块保存模块提交经过确认的备选区块、或是空区块。
进一步地,所述区块保存模块包括通知单元、保存单元、初始化单元。所述通知单元用来由共识节点通知非共识节点本轮区块共识完成;所述保存单元用来由区块链网络中所有节点保存完成本轮共识的区块;所述初始化单元用来使区块链网络开始下一轮的共识过程。这提供了一种区块保存模块。
本发明提供的拜占庭容错方法及其实现系统在各步骤、各模块提供了有层次的解决方案,用以确保在极端情况下也能持续运行。所述方法及其实现系统还极大地降低了消息复杂度,减少区块链网络中的消息数量,因此有利于区块链网络扩大规模。
附图说明
图1为本发明的拜占庭容错方法的一个实施例的流程示意图。
图2为本发明的拜占庭容错方法的网络规模与共识节点数量的关系示意图。
图3是图1中步骤S1的一种具体实现方式的流程示意图。
图4是图1中步骤S2的一种具体实现方式的流程示意图。
图5是图1中步骤S3的一种具体实现方式的流程示意图。
图6是图1中步骤S4的一种具体实现方式的流程示意图。
图7是图1中步骤S5的一种具体实现方式的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,针对现有技术存在的问题,本发明提供了一种拜占庭容错方法的一个实施例,其包括如下步骤。
节点选择步骤S1:从区块链网络的全部节点中选择至少三种节点,分别作为提案节点、背书节点和确认节点。
提案步骤S2:由所述提案节点构建新的备选区块,签名后在所述区块链网络中广播。所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级。
背书步骤S3:所述背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播。
确认步骤S4:如有备选区块在预定时间内得到预定数量的背书节点的背书,则由所述确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播。
区块保存步骤S5:如有备选区块在预定时间内的到预定数量的所述确认节点的确认,则所述备选区块完成共识。所述区块链网络中的所有节点保存所述完成共识的区块。
在提案步骤S2、背书步骤S3、确认步骤S4中,提案节点、背书节点、确认节点的所述签名例如采用PKCS(Public Key Cryptography Standards,公钥密码学标准)、DSA(Digital SignatureAlgorithm,数字签名算法)、x.509、PGP(Pretty Good Privacy,优良保密协议)或Hash(哈希,也称散列)算法中的一种或多种。
与图1相对应地,本发明还提供了一种拜占庭容错方法的实现系统,包括节点选择模块、提案模块、背书模块、确认模块、区块保存模块。
所述节点选择模块用于从区块链网络的全部节点中选择至少三种节点,所述三种节点分别是提案节点、背书节点和确认节点。
所述提案模块用于由提案节点构建新的备选区块,签名后在所述区块链网络中广播。所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级。
所述背书模块用于由背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播。
所述确认模块用于由确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播。
所述区块保存模块用于对预定时间内的到预定数量的确认节点的确认的备选区块(即完成完成共识的区块)在区块链网络中的所有节点中保存。
本发明提供的拜占庭容错方法主要用作区块链网络的共识算法,因此本发明提供的拜占庭容错方法的实现系统主要由区块链网络的各个节点基于各种方法实现。所述节点选择模块例如是由区块链网络的各个节点基于节点选择方法实现的。所述提案模块例如是由区块链网络中的提案节点基于提案方法实现的。所述背书模块例如是由区块链网络中的背书节点基于背书方法实现的。所述确认模块例如是由区块链网络中的确认节点基于确认方法实现的。所述区块保存模块例如是由区块链网络的各个节点基于对达成共识的区块进行保存的方法实现的。
所述提案节点是指有权限在区块链网络中构建对应高度的备选区块的节点。区块链网络中的区块高度是指某一个区块与区块链网络中的第一个区块之间所具有的区块数量。例如最新完成共识的区块的区块高度是r-1,那么本轮共识的区块的区块高度就是r。构建不同区块高度的备选区块的提案节点,可以是相同或不同的。
优选地,所述提案节点具有至少两个,各个提案节点之间具有各不相同的优先级。此时,由各提案节点构建的备选区块的优先级也各不相同,便于对备选区块进行优先级排序。
所述背书节点是指对区块链网络中广播出来的备选区块进行验证、背书的节点。
优选地,所述背书节点具有至少两个,全部背书节点至少具有两个优先级。具有最高优先级的背书节点称为备选背书节点,其余背书节点称为非备选背书节点。
所述确认节点是指对区块链网络中经过背书的备选区块进行确认的节点。
优选地,所述确认节点具有至少两个,全部确认节点至少具有两个优先级。具有最高优先级的确认节点称为备选确认节点,其余确认节点称为非备选确认节点。
通常,区块链网络中的全部节点根据是否参与共识可以分为两大类,参与共识的节点称为共识节点,不参与共识的节点称为非共识节点。优选地,所述提案节点、背书节点、确认节点都属于共识节点,但是分别属于三种不同身份的共识节点。此时,区块链网络中的任意一个共识节点可以不具有上述三种共识节点身份,也可以仅具有上述三种共识节点身份的一种身份,还可以同时具有上述三种共识节点身份的多种身份。
可替换地,不在区块链网络中区分共识节点和非共识节点,直接在区块链网络的全部节点中选择提案节点、背书节点、确认节点。此时,区块链网络中的任意一个节点可以不具有上述三种节点身份,也可以仅具有上述三种节点身份的一种身份,还可以同时具有上述三种节点身份的多种身份。
如果用P{}表示计算概率的函数,X表示变量,n表示每一轮共识的背书节点与确定节点的总数,k表示临时变量,β表示攻击者的攻击能力即区块链网络中的拜占庭节点占全部节点的比例,其中拜占庭节点是指出错或作恶的节点;N表示区块链网络中的全部节点数量,ρ表示采用本发明的拜占庭容错方法后区块链网络出现拜占庭错误(Byzantinefailure)的概率,其中拜占庭错误是指导致无法达成本轮共识的错误;并且假设所有攻击者相互之间为协同攻击方式,那么采用超几何分布(Hypergeometric distribution)计算可以得到下式。
Figure BDA0001634856400000111
上式中,由两个≥分为左侧、中间、右侧三部分。左侧部分表示在区块链网络的全部N个节点中,每个节点都有β的概率是拜占庭节点,从N个节点中随机选取n个节点,所选出的n个节点中拜占庭节点的数量小于一半的概率。右侧部分表示采用本发明的拜占庭容错方法后区块链网络未出现拜占庭错误(即能够成功达成本轮共识)的概率。
假设出现拜占庭错误的概率ρ为0.00000001,可由不同的N值计算相应的n值,计算结果如图2所示。图2表示采用本发明的拜占庭容错方法后,在不同的攻击者能力β时,每轮共识所需要的最少的背书节点与确认节点的总数n与区块链网络规模N之间的关系。由图2可以发现,随着区块链网络规模N的增大,每轮参与共识的背书节点与确认节点的总数n只是小幅上升。提案节点也参与共识并广播消息,但区块链网络中的提案节点数量较少,通常在100个以下,优选在10个以下,因此与背书节点与确认节点广播的消息相比,提案节点广播的消息可以忽略不计。采用本发明的拜占庭容错方法后,区块链网络的消息复杂度为lgN2,其中N为网络规模。这表明随着区块链网络中节点数量的增加,广播的消息只是小幅增加,不容易产生消息阻塞网络的情况。由此证明,本发明的拜占庭容错方法具有很好的网络规模扩展性。
请参阅图3,这是本发明的拜占庭容错方法中节点选择步骤S1(节点选择方法)的一种具体实现方式。所述节点选择方法可以进一步包括如下步骤。
步骤S11:对区块链网络中最新完成共识(即上一轮共识)的区块计算随机值。优选地,采用可验证随机函数(verifiable random function,VRF)计算随机值。例如,所述可验证随机函数是将本轮共识的区块高度、最新完成共识的区块的哈希值、最新完成共识的区块的提案节点的身份识别号、所述提案节点对最新完成共识的区块的签名经过序列化得到字节数组,然后对所述字节数组进行至少一次哈希运算得到随机值。进一步地,所述哈希运算为SHA-1、SHA-224、SHA-256、SHA-384或SHA-512。
步骤S12:基于所述随机值从区块链网络的全部节点、或全部共识节点中选定本轮共识的提案节点、背书节点、确认节点。例如,制定一个包含区块链网络中所有节点、或所有共识节点的信息的表格并实时维护。所述节点信息例如包括节点的身份识别号(ID)、节点的私钥、节点的公钥、节点的权重等。其中,节点的私钥用于对节点发送的信息进行签名和加密。节点的公钥用于对节点接收的信息进行验证和解密。所述提案节点、背书节点和确认节点是由最新完成共识的区块经过随机算法得到的随机值的不同比特位在所述节点信息表格中选定的。
与图3相对应地,本发明提供的拜占庭容错方法的实现系统中所述节点选择模块可以进一步包括随机值计算单元、选定单元。所述随机值计算单元用于对区块链网络中最新完成共识(即上一轮共识)的区块计算随机值。所述选定单元用于基于所述随机值从区块链网络的全部节点、或全部共识节点中选定本轮共识的提案节点、背书节点、确认节点。
上述节点选择方法、节点选择模块是依赖最新完成共识的区块高度为r-1的区块来选择本轮共识的区块高度为r的区块的提案节点、背书节点、确认节点。因此,每一轮共识的提案节点、背书节点、确认节点都是单独选择的。
可替换地,本发明的拜占庭容错方法中步骤S1也可有其他的具体实现方式。例如,参与本轮共识的提案节点、背书节点和确认节点是直接用随机算法在区块链网络的全部节点中、或者是在区块链网络的全部共识节点中选定的。
相应地,所述节点选择模块可以进一步包括随机选定单元。所述随机选定单元用于采用随机算法从区块链网络的全部节点、或全部共识节点中选定提案节点、背书节点、确认节点。
上述第二种节点选择方法、节点选择模块可以让多轮共识过程具有相同的提案节点、背书节点、确认节点。然而优选也是每一轮共识前随机选定提案节点、背书节点、确认节点;此时每一轮共识的提案节点、背书节点、确认节点都是单独选择的。
请参阅图4,这是本发明的拜占庭容错方法中提案步骤S2(提案方法)的一种具体实现方式。所述提案方法可以进一步包括如下步骤。
步骤S21:由本轮共识的最高优先级的提案节点构建本轮共识的区块高度r的新的备选区块,签名后在区块链网络中广播。提案权限是区块链网络中的重要权限,一般当选为本轮共识的最高优先级的提案节点都不会放弃提案权限。
步骤S22:所有提案节点监听区块链网络中广播的本轮共识的区块高度r的新的备选区块,并对收到的备选区块进行缓存。
步骤S23:如超过第一预定时间,本轮共识的最高优先级的提案节点没有构建备选区块、或构建的备选区块未通过检查,为保障共识算法的持续运行,则由非最高优先级的提案节点构建新的备选区块,签名后向区块链网络中广播。这一步中,可能有多个非最高优先级的提案节点构建多个新的备选区块。
步骤S24:所有提案节点监听区块链网络中广播的本轮共识的区块高度r的新的备选区块,并对收到的备选区块进行缓存。
步骤S25:如超过第二预定时间,所有提案节点都没有构建备选区块、或构建的备选区块均未通过检查,为保障共识算法的持续运行,则由任意提案节点随机提交空区块,签名后向区块链网络中广播。
优选地,在步骤S21、步骤S23中,提案节点构建新的备选区块后,先对自身构建的备选区块进行检查,检查通过后才将自身构建的备选区块签名,然后在所述区块链网络中广播。
可选地,在步骤S22、步骤S24中,提案节点还对收到的备选区块进行检查。这种检查并非强制性的,可以进行检查,也可不进行检查。如果检查为有效,则对通过检查的备选区块进行缓存。如果检查结果为无效,忽略该备选区块。
在步骤S21至步骤S24中的所述检查例如包括对构建备选区块的提案节点的签名的有效性检查、对构建的新的备选区块数据的有效性检查、对构建备选区块的提案节点的提案权限的有效性检查中的一种或多种。
与图4相对应地,本发明提供的拜占庭容错方法的实现系统中所述提案模块可以进一步包括构建单元、备选构建单元、监听单元、第二备选构建单元。
所述构建单元用来由本轮共识的最高优先级的提案节点构建本轮共识的区块高度r的新的备选区块,签名后在区块链网络中广播。优选地,构建单元还对自身构建的备选区块进行检查,检查通过后才签名并在区块链网络中广播。
所述备选构建单元用来在超过第一预定时间、且本轮共识的最高优先级的提案节点没有构建备选区块、或构建的备选区块未通过检查时,由非最高优先级的提案节点构建新的备选区块,签名后向区块链网络中广播。优选地,备选构建单元还对自身构建的备选区块进行检查,检查通过后才签名并在区块链网络中广播。
所述监听单元用来由所有提案节点监听区块链网络中广播的本轮共识的区块高度r的新的备选区块,并对收到的备选区块进行缓存。可选地,监听单元还对收到的备选区块进行检查。如果检查为有效,则对通过检查的备选区块进行缓存。如果检查结果为无效,忽略该备选区块。
所述第二备选构建单元用来在超过第二预定时间、且所有提案节点都没有构建备选区块、或构建的备选区块均未通过检查时,由任意提案节点随机提交空区块,签名后向区块链网络中广播。
上述提案方法、提案模块提供了构建本轮共识的备选区块的三个层次。第一层次是由本轮共识的最高优先级的提案节点构建。如果第一层次未能构建,第二层次是由本轮共识的非最高优先级的提案节点构建。如果第二层次也未能构建,第三层次是由任意提案节点构建空区块。这可以确保在任何情况下都能构建出备选区块进入后续步骤,确保整个拜占庭容错方法的持续运行。
请参阅图5,这是本发明的拜占庭容错方法中背书步骤S3(背书方法)的一种具体实现方式。所述背书方法可以进一步包括如下步骤。
步骤S31:本轮共识的所有背书节点对前一步骤由提案节点广播的备选区块进行验证,并对验证后的备选区块按照优先级排序。例如,所述验证包括对构建备选区块的提案节点的签名的有效性验证、对构建的新的备选区块数据的有效性验证、对构建备选区块的提案节点的提案权限的有效性验证中的一种或多种。
步骤S32:由本轮共识的最高优先级的一个或多个背书节点对最高优先级的备选区块进行背书,签名后在所述区块链网络中广播。
步骤S33:本轮共识的所有背书节点监听区块链网络中的背书消息,在收到背书的备选区块后将其缓存。可选地,每个背书节点对缓存的由其他背书节点背书的备选区块也按照优先级进行排序。
步骤S34:如有备选区块在第三预定时间内得到第一预定数量的背书节点的背书,则将该备选区块提交进入确认步骤S4,否则进入步骤S35。第一预定数量例如为F+1,F是区块链网络中拜占庭节点即允许出错或作恶的节点的数量。
步骤S35:如全部备选区块在第三预定时间内均未得到第一预定数量的背书节点的背书,为保障共识算法的持续运行,则由任意背书节点随机对空区块进行背书,附加自己的签名后向区块链网络中广播进入确认步骤S4。
与图5相对应地,本发明提供的拜占庭容错方法的实现系统中所述背书模块可以进一步包括验证单元、背书单元、监听单元、提交单元、备选背书单元。
所述验证单元用来由所有背书节点对前一步骤由提案节点广播的备选区块进行验证,并对验证后的备选区块按照优先级排序。
所述背书单元用来由最高优先级的一个或多个背书节点对最高优先级的备选区块进行背书,签名后在所述区块链网络中广播。
所述监听单元用来由所有背书节点监听区块链网络中的背书消息,在收到背书的备选区块后将其缓存。可选地,监听单元还由每个背书节点对缓存的由其他背书节点背书的备选区块也按照优先级进行排序。
所述提交单元用来在有备选区块在第三预定时间内得到第一预定数量的背书节点的背书时,将该备选区块提交进入确认步骤S4。第一预定数量例如为F+1,F是区块链网络中拜占庭节点即允许出错或作恶的节点的数量。
所述备选背书单元用来在全部备选区块在第三预定时间内均未得到第一预定数量的背书节点的背书时,由任意背书节点随机对空区块进行背书,附加自己的签名后向区块链网络中广播进入确认步骤S4。
上述背书方法、背书模块提供了对备选区块进行背书的两个层次。第一层次是由本轮共识的最高优先级的一个或多个背书节点对备选区块进行背书。如果第一层次未能选举出符合条件的备选区块,第二层次是由任意背书节点对空区块进行背书。这可以确保在任何情况下都能得到备选区块或空区块的背书结果以进入后续步骤,确保整个拜占庭容错方法的持续运行。
请参阅图6,这是本发明的拜占庭容错方法中确认步骤S4(确认方法)的一种具体实现方式。所述确认方法可以进一步包括如下步骤。
步骤S41:由本轮共识的最高优先级的一个或多个确认节点对前一步骤由背书节点提交的备选区块进行确认,签名后在区块链网络中广播。
步骤S42:所有确认节点监听区块链网络中的确认消息,在收到确认的备选区块后将其缓存。
步骤S43:如有备选区块在第四预定时间内得到第二预定数量的确认节点的确认,则将该备选区块作为完成本轮共识的区块高度r的区块,提交进入区块保存步骤S5。否则进入步骤S44。第二预定数量例如为F+1,F是区块链网络中拜占庭节点即允许出错或作恶的节点的数量。
步骤S44:如全部备选区块在第四预定时间内均未得到第二预定数量的确认节点的确认,为保障共识算法的持续运行,则由任意确认节点随机对空区块进行确认,附加自己的签名后向区块链网络中广播进入区块保存步骤S5。
与图6相对应地,本发明提供的拜占庭容错方法的实现系统中所述确认模块可以进一步包括确认单元、监听单元、提交单元、备选确认单元。
所述确认单元用来由本轮共识的最高优先级的一个或多个确认节点对前一步骤由背书节点提交的备选区块进行确认,签名后在区块链网络中广播。
所述监听单元用来由所有确认节点监听区块链网络中的确认消息,在收到确认的备选区块后将其缓存。
所述提交单元用来在有备选区块在第四预定时间内得到第二预定数量的确认节点的确认时,将该备选区块作为完成本轮共识的区块高度r的区块提交进入区块保存步骤S5。第二预定数量例如为F+1,F是区块链网络中拜占庭节点即允许出错或作恶的节点的数量。
所述备选确认单元用来在全部备选区块在第四预定时间内均未得到第二预定数量的确认节点的确认时,由任意确认节点随机对空区块进行确认,附加自己的签名后向区块链网络中广播进入区块保存步骤S5。
上述确认方法、确认模块提供了对备选区块进行确认的两个层次。第一层次是由本轮共识的最高优先级的一个或多个确认节点对备选区块进行确认。如果第一层次未能选举出符合条件的备选区块,第二层次是由任意确认节点对空区块进行确认。这可以确保在任何情况下都能得到备选区块或空区块的确认结果以进入后续步骤,确保整个拜占庭容错方法的持续运行。
请参阅图7,这是本发明的拜占庭容错方法中区块保存步骤S5(区块保存方法)的一种具体实现方式。所述区块保存方法可以进一步包括如下步骤。
步骤S51:如果区块链网络中的节点分为共识节点、非共识节点,那么由共识节点通知非共识节点本轮区块共识完成。如果区块链网络中的所有节点都是共识节点,那么省略这一步。
步骤S52:区块链网络中所有节点保存完成本轮共识的区块高度为r的区块。
步骤S53:区块链网络中的所有节点、或所有共识节点开始下一轮的区块高度r+1的区块的共识过程。例如选择下一轮共识的提案节点、背书节点、确认节点。
与图7相对应地,本发明提供的拜占庭容错方法的实现系统中所述区块保存模块可以进一步包括通知单元、保存单元、初始化单元。
所述通知单元用来在区块链网络中的节点分为共识节点、非共识节点时,由共识节点通知非共识节点本轮区块共识完成。
所述保存单元用来由区块链网络中所有节点保存完成本轮共识的区块高度为r的区块。
所述初始化单元用来使区块链网络的所有节点、或所有共识节点开始下一轮的区块高度r+1的区块的共识过程。例如选择下一轮共识的提案节点、背书节点、确认节点。
上述区块保存方法、区块保存模块提供了向整个区块链网络通知本轮共识已完成、保存本轮共识结果、开始下一轮共识的方案。
除非另作定义,权利要求书和说明书中使用的技术术语或者科学术语应当为本发明所属技术领域内具有一般技能的人士所理解的通常意义。
虽然本发明已以较佳实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (23)

1.一种拜占庭容错方法,其特征是,包括如下步骤:
节点选择步骤:从区块链网络的全部节点中选择至少三种节点,分别作为提案节点、背书节点和确认节点;
提案步骤:所述提案节点构建新的备选区块,签名后在所述区块链网络中广播;所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级;
背书步骤:所述背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播;
所述背书步骤进一步包括如下步骤:
步骤S31:本轮共识的所有背书节点对提案节点广播的备选区块进行验证,并对验证后的备选区块按照优先级排序;
步骤S32:本轮共识的最高优先级的一个或多个背书节点对最高优先级的备选区块进行背书,签名后在所述区块链网络中广播;
步骤S33:本轮共识的所有背书节点监听区块链网络中的背书消息,在收到背书的备选区块后将其缓存;
步骤S34:如有备选区块在第三预定时间内得到第一预定数量的背书节点的背书,则将该备选区块提交进入确认步骤;否则进入步骤S35;
步骤S35:如全部备选区块在第三预定时间内均未得到第一预定数量的背书节点的背书,则由任意背书节点随机对空区块进行背书,附加自己的签名后向区块链网络中广播进入确认步骤;
确认步骤:如有备选区块在预定时间内得到预定数量的背书节点的背书,则由所述确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播;
区块保存步骤:如有备选区块在预定时间内的到预定数量的所述确认节点的确认,则所述备选区块完成共识;所述区块链网络中的所有节点保存所述完成共识的区块。
2.根据权利要求1所述的拜占庭容错方法,其特征是,所述提案步骤、背书步骤、确认步骤中,提案节点、背书节点、确认节点的所述签名采用PKCS、DSA、x.509、PGP、Hash算法中的一种或多种。
3.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中,所述提案节点具有至少两个,各个提案节点之间具有各不相同的优先级。
4.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中,所述背书节点具有至少两个,全部背书节点至少具有两个优先级。
5.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中,所述确认节点具有至少两个,全部确认节点至少具有两个优先级。
6.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中进一步包括如下步骤:步骤S11:对区块链网络中最新完成共识的区块计算随机值;步骤S12:基于所述随机值从区块链网络的节点中选定本轮共识的提案节点、背书节点、确认节点。
7.根据权利要求6所述的拜占庭容错方法,其特征是,所述步骤S11中,采用可验证随机函数计算随机值。
8.根据权利要求6所述的拜占庭容错方法,其特征是,所述步骤S12中,制定一个节点信息表格,所述提案节点、背书节点和确认节点是由所述随机值的不同比特位在所述节点信息表格中选定的。
9.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中,采用随机算法在区块链网络的节点中选定提案节点、背书节点和确认节点。
10.根据权利要求1所述的拜占庭容错方法,其特征是,所述提案步骤进一步包括如下步骤:
步骤S21:本轮共识的最高优先级的提案节点构建本轮共识的新的备选区块,签名后在区块链网络中广播;
步骤S22:所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存;
步骤S23:如超过第一预定时间,本轮共识的最高优先级的提案节点没有构建备选区块、或构建的备选区块未通过检查,则由非最高优先级的提案节点构建新的备选区块,签名后向区块链网络中广播;
步骤S24:所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存;
步骤S25:如超过第二预定时间,所有提案节点都没有构建备选区块、或构建的备选区块均未通过检查,则由任意提案节点随机提交空区块,签名后向区块链网络中广播。
11.根据权利要求10所述的拜占庭容错方法,其特征是,所述步骤S21、步骤S23中,提案节点构建新的备选区块后,先对自身构建的备选区块进行检查,检查通过后才将自身构建的备选区块签名,然后在所述区块链网络中广播。
12.根据权利要求10所述的拜占庭容错方法,其特征是,所述步骤S22、步骤S24中,提案节点还对收到的备选区块进行检查;如果检查为有效,则对通过检查的备选区块进行缓存;如果检查结果为无效,忽略该备选区块。
13.根据权利要求11或12所述的拜占庭容错方法,其特征是,所述步骤S21至步骤S24中,所述检查包括对构建备选区块的提案节点的签名的有效性检查、对构建的新的备选区块数据的有效性检查、对构建备选区块的提案节点的提案权限的有效性检查中的一种或多种。
14.根据权利要求1所述的拜占庭容错方法,其特征是,所述步骤S31中,所述验证包括对构建备选区块的提案节点的签名的有效性验证、对构建的新的备选区块数据的有效性验证、对构建备选区块的提案节点的提案权限的有效性验证中的一种或多种。
15.根据权利要求1所述的拜占庭容错方法,其特征是,所述确认步骤进一步包括如下步骤:
步骤S41:本轮共识的最高优先级的一个或多个确认节点对背书节点提交的备选区块进行确认,签名后在区块链网络中广播;
步骤S42:所有确认节点监听区块链网络中的确认消息,在收到确认的备选区块后将其缓存;
步骤S43:如有备选区块在第四预定时间内得到第二预定数量的确认节点的确认,则将该备选区块作为完成本轮共识的区块,提交进入区块保存步骤;否则进入步骤S44;
步骤S44:如全部备选区块在第四预定时间内均未得到第二预定数量的确认节点的确认,则由任意确认节点随机对空区块进行确认,附加自己的签名后向区块链网络中广播进入区块保存步骤。
16.根据权利要求1所述的拜占庭容错方法,其特征是,所述区块保存步骤进一步包括如下步骤:
步骤S51:共识节点通知非共识节点本轮区块共识完成;
步骤S52:区块链网络中所有节点保存完成本轮共识的区块;
步骤S53:区块链网络开始下一轮的区块共识过程。
17.一种拜占庭容错方法的实现系统,其特征是,包括节点选择模块、提案模块、背书模块、确认模块、区块保存模块;
所述节点选择模块用于从区块链网络的全部节点中选择至少三种节点,所述三种节点分别是提案节点、背书节点和确认节点;
所述提案模块用于由提案节点构建新的备选区块,签名后在所述区块链网络中广播;所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级;
所述背书模块用于由背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播;
所述确认模块用于由确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播;
所述区块保存模块用于对预定时间内的到预定数量的确认节点的确认的备选区块在区块链网络中的所有节点中保存。
18.根据权利要求17所述的拜占庭容错方法的实现系统,其特征是,所述节点选择模块进一步包括随机值计算单元、选定单元;所述随机值计算单元用于对区块链网络中最新完成共识的区块计算随机值;所述选定单元用于基于所述随机值从区块链网络的节点中选定本轮共识的提案节点、背书节点、确认节点。
19.根据权利要求17所述的拜占庭容错方法的实现系统,其特征是,所述节点选择模块进一步包括随机选定单元;所述随机选定单元用于采用随机算法从区块链网络的节点中选定提案节点、背书节点、确认节点。
20.根据权利要求17所述的拜占庭容错方法的实现系统,其特征是,所述提案模块进一步包括构建单元、备选构建单元、监听单元、第二备选构建单元;
所述构建单元用来由本轮共识的最高优先级的提案节点构建本轮共识的新的备选区块,签名后在区块链网络中广播;
所述备选构建单元用来在超过第一预定时间、且本轮共识的最高优先级的提案节点没有构建备选区块、或构建的备选区块未通过检查时,由非最高优先级的提案节点构建新的备选区块,签名后向区块链网络中广播;
所述监听单元用来由所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存;
所述第二备选构建单元用来在超过第二预定时间、且所有提案节点都没有构建备选区块、或构建的备选区块均未通过检查时,由任意提案节点随机提交空区块,签名后向区块链网络中广播。
21.根据权利要求17所述的拜占庭容错方法的实现系统,其特征是,所述背书模块进一步包括验证单元、背书单元、监听单元、提交单元、备选背书单元;
所述验证单元用来由所有背书节点对提案节点广播的备选区块进行验证,并对验证后的备选区块按照优先级排序;
所述背书单元用来由最高优先级的一个或多个背书节点对最高优先级的备选区块进行背书,签名后在所述区块链网络中广播;
所述监听单元用来由所有背书节点监听区块链网络中的背书消息,在收到背书的备选区块后将其缓存;
所述提交单元用来在有备选区块在第三预定时间内得到第一预定数量的背书节点的背书时,将该备选区块提交;
所述备选背书单元用来在全部备选区块在第三预定时间内均未得到第一预定数量的背书节点的背书时,由任意背书节点随机对空区块进行背书,附加自己的签名后向区块链网络中广播。
22.根据权利要求17所述的拜占庭容错方法的实现系统,其特征是,所述确认模块进一步包括确认单元、监听单元、提交单元、备选确认单元;
所述确认单元用来由本轮共识的最高优先级的一个或多个确认节点对前一步骤由背书节点提交的备选区块进行确认,签名后在区块链网络中广播;
所述监听单元用来由所有确认节点监听区块链网络中的确认消息,在收到确认的备选区块后将其缓存;
所述提交单元用来在有备选区块在第四预定时间内得到第二预定数量的确认节点的确认时,将该备选区块作为完成本轮共识的区块提交;
所述备选确认单元用来在全部备选区块在第四预定时间内均未得到第二预定数量的确认节点的确认时,由任意确认节点随机对空区块进行确认,附加自己的签名后向区块链网络中广播。
23.根据权利要求17所述的拜占庭容错方法的实现系统,其特征是,所述区块保存模块进一步包括通知单元、保存单元、初始化单元;
所述通知单元用来由共识节点通知非共识节点本轮区块共识完成;
所述保存单元用来由区块链网络中所有节点保存完成本轮共识的区块;
所述初始化单元用来使区块链网络开始下一轮的共识过程。
CN201810356617.5A 2018-04-19 2018-04-19 一种拜占庭容错方法及其实现系统 Active CN108667614B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810356617.5A CN108667614B (zh) 2018-04-19 2018-04-19 一种拜占庭容错方法及其实现系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810356617.5A CN108667614B (zh) 2018-04-19 2018-04-19 一种拜占庭容错方法及其实现系统

Publications (2)

Publication Number Publication Date
CN108667614A CN108667614A (zh) 2018-10-16
CN108667614B true CN108667614B (zh) 2021-02-02

Family

ID=63780762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810356617.5A Active CN108667614B (zh) 2018-04-19 2018-04-19 一种拜占庭容错方法及其实现系统

Country Status (1)

Country Link
CN (1) CN108667614B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109544332B (zh) * 2018-10-17 2023-04-07 贵阳信息技术研究院(中科院软件所贵阳分部) 一种基于用户等级的区块链交易出块的方法
CN109164780B (zh) * 2018-11-22 2020-06-16 北京八分量信息科技有限公司 一种基于边缘计算的工业现场设备控制方法、装置及系统
CN109815098A (zh) * 2018-12-14 2019-05-28 深圳壹账通智能科技有限公司 区块链系统的性能测试方法、相应的装置及电子设备
CN109688012B (zh) * 2018-12-29 2020-07-17 杭州趣链科技有限公司 一种联盟链节点热备切换的方法
US11283673B2 (en) * 2019-01-07 2022-03-22 International Business Machines Corporation Blockchain endorsement verification
CN109919760B (zh) * 2019-01-11 2022-08-30 南京邮电大学 基于投票机制的拜占庭容错共识算法的优化方法
CN111787034B (zh) * 2019-04-03 2024-01-16 北京邦天信息技术有限公司 区块生成方法、同步方法、装置、区块链系统和存储介质
CN110011814B (zh) * 2019-04-16 2019-10-15 北京艾摩瑞策科技有限公司 一种可验证的DPoS共识方法及其系统
CN110246038A (zh) * 2019-04-26 2019-09-17 众安信息技术服务有限公司 一种区块链交易快速确认方法及系统
CN110213038A (zh) * 2019-06-03 2019-09-06 中城智慧科技有限公司 一种基于vrf的权益随机共识方法及系统
CN110351751B (zh) * 2019-06-24 2020-08-14 山东大学 一种基于抽样的动态分布式系统的共识方法
CN110995439A (zh) * 2019-11-20 2020-04-10 上海链颉科技有限公司 区块链共识方法、电子装置及存储介质
CN111147261B (zh) * 2019-12-31 2022-07-12 南京可信区块链与算法经济研究院有限公司 在区块链中使用HotStuff共识算法的方法及系统
CN111327414A (zh) * 2020-01-20 2020-06-23 布比(北京)网络技术有限公司 一种区块链共识方法、系统及计算机存储介质、电子设备
CN111327427B (zh) * 2020-02-02 2021-06-11 腾讯科技(深圳)有限公司 提交备选区块的方法、装置、节点设备、系统及存储介质
CN111368344B (zh) * 2020-03-31 2023-03-21 西安理工大学 一种基于动态选举的提高背书节点容错性方法
CN111522683B (zh) * 2020-07-03 2020-10-02 支付宝(杭州)信息技术有限公司 蜜獾拜占庭容错共识机制的共识节点变更方法及相关装置
CN112068978B (zh) * 2020-08-27 2022-06-10 恒宝股份有限公司 View-change二次启动定时器的定时期限延长方法及装置
CN112073483B (zh) * 2020-08-28 2022-01-04 武汉大学 基于信誉与委员会背书机制的权威证明共识方法及系统
CN112052250A (zh) * 2020-09-02 2020-12-08 杭州复杂美科技有限公司 性能度量方法、广播性能调节方法、设备和存储介质
CN112511312B (zh) * 2020-11-23 2023-10-17 北京微芯区块链与边缘计算研究院 一种可组装的共识方法及系统
CN112766986B (zh) * 2021-01-27 2024-02-09 浙江天演维真网络科技股份有限公司 基于改进的拜占庭容错算法的农产品溯源区块链共识方法
CN112765137B (zh) * 2021-04-07 2021-06-22 暗链科技(深圳)有限公司 基于区块分布式区块链的区块同步方法及电子设备
CN113259179B (zh) * 2021-06-18 2021-10-19 杭州云智声智能科技有限公司 一种基于节点评分的拜占庭容错共识方法与系统
CN114389815A (zh) * 2021-12-06 2022-04-22 北京众享比特科技有限公司 用于选举区块链网络中节点的方法及其相关产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106878000A (zh) * 2017-03-06 2017-06-20 中钞信用卡产业发展有限公司北京智能卡技术研究院 一种联盟链共识方法及系统
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
CN107657438A (zh) * 2017-09-18 2018-02-02 联动优势科技有限公司 一种区块链生成方法、数据验证方法、节点及系统
CN107733855A (zh) * 2017-08-31 2018-02-23 中国科学院信息工程研究所 一种可同时支持公有链、联盟链及私有链的区块链系统及应用方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN106878000A (zh) * 2017-03-06 2017-06-20 中钞信用卡产业发展有限公司北京智能卡技术研究院 一种联盟链共识方法及系统
CN107733855A (zh) * 2017-08-31 2018-02-23 中国科学院信息工程研究所 一种可同时支持公有链、联盟链及私有链的区块链系统及应用方法
CN107657438A (zh) * 2017-09-18 2018-02-02 联动优势科技有限公司 一种区块链生成方法、数据验证方法、节点及系统

Also Published As

Publication number Publication date
CN108667614A (zh) 2018-10-16

Similar Documents

Publication Publication Date Title
CN108667614B (zh) 一种拜占庭容错方法及其实现系统
JP6726367B2 (ja) 分散システムにおける1次ノードの変更を行うこと
CN108848056B (zh) 基于验证的区块链共识方法
CN108632362B (zh) 一种私有区块链建块节点选举的方法
US20200313884A1 (en) Smart contract execution using distributed coordination
CN112311735B (zh) 可信认证方法,网络设备、系统及存储介质
CN110169015A (zh) 在分布式系统中的网络节点之间达成共识
JP2020516105A (ja) 分散システムにおけるネットワークノードに対する回復処理の実行
WO2019076020A1 (zh) 身份认证方法和系统以及计算设备和存储介质
CN109949034A (zh) 基于可信性评估的区块链共识方法
US11362836B2 (en) Consensus protocol for permissioned ledgers
CN109685505B (zh) 基于关联环签名的拜占庭容错共识优化方法
KR20200081533A (ko) 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법
CN111582843A (zh) 一种基于聚合签名的区块链隐私交易方法
CN108494558B (zh) 用于实现公平交换的方法和系统
CN114745140B (zh) 基于聚合加密的城市规划领域区块链共识验证方法及系统
CN115174570A (zh) 一种基于动态委员会的跨链共识方法及系统
CN112039837B (zh) 一种基于区块链和秘密共享的电子证据保全方法
US20220278854A1 (en) Unity Protocol Consensus
WO2017198118A1 (zh) 一种在网络环境中生成、维护可信数据的方法
CN110780848B (zh) 基于区块链分布式随机过程的双随机生成方法和监管系统
CN114826699B (zh) 基于区块链的去中心化联邦学习中拜占庭攻击抵御方法
CN116260826A (zh) 一种供应链溯源中拜占庭容错共识方法及系统
Tennenhouse et al. Transaction confirmation in coded blockchain
Bonnaire et al. A scalable architecture for highly reliable certification

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant