CN111555858B - 一种基于块链式存储的实用拜占庭容错共识方法 - Google Patents
一种基于块链式存储的实用拜占庭容错共识方法 Download PDFInfo
- Publication number
- CN111555858B CN111555858B CN202010205187.4A CN202010205187A CN111555858B CN 111555858 B CN111555858 B CN 111555858B CN 202010205187 A CN202010205187 A CN 202010205187A CN 111555858 B CN111555858 B CN 111555858B
- Authority
- CN
- China
- Prior art keywords
- message
- block
- node
- nodes
- preparation
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
Abstract
本发明公开了一种基于块链式存储的实用拜占庭容错共识方法。客户端发送包含处理请求、视图编号的请求消息给所有节点;由所有节点选出的主节点对收到的请求消息验证后,将收到的请求消息、主节点存储的最新区块高度信息打包进区块,并将包含该区块的预准备消息向所有节点发送;节点对收到的预准备消息验证后,将预准备消息中的区块的哈希值放入准备消息,并向所有节点发送;节点对收到的准备消息进行验证,当同一区块的准备消息通过验证的数量超过预设的阈值数量时,将该区块中的数据和验证节点的数字签名加入到块链式存储的区块中,并执行区块中的客户端处理请求后,向客户端发送该区块。能够减少实用拜占庭容错共识步骤,提高共识效率。
Description
(一)技术领域
本发明涉及计算机网络技术领域,具体涉及一种基于块链式存储的实用拜占庭容错共识方法。
(二)背景技术
实用拜占庭容错共识方法可以在分布式网络中存在恶意节点的情况下,保障非恶意节点之间的数据一致。该方案选取了一个节点作为网络中的主节点,该节点将客户端的请求按照接收到的顺序进行排序后发送给所有节点,节点之间进行消息通信来达成一致,从而确保系统的安全性。并且通过客户端来监控请求是否被正确执行,从而保证系统的活性,防止主节点出现问题。
假定网络中存在f个恶意节点,实用拜占庭容错共识方法为了保证非恶意节点的大多数节点能够形成共识,并且形成共识的节点数量大于恶意节点数量,则需要至少有2f+1个节点是非恶意的,节点的总数至少为3f+1。在实用拜占庭容错共识方法中节点分为节点可以分为客户端、主节点、副本节点,完成共识过程需要5个阶段步骤,包括:
1)请求阶段:客户端发送请求到主节点。由主节点负责将客户端请求转发到全网。
2)预准备阶段:主节点收到客户端请求消息后,对其进行安全性校验。之后将请求通过预准备消息广播发送给其它的副本节点。
3)准备阶段:在该阶段节点对收到的请求进行校验。如果消息检查无误之后节点会发送准备消息到其它副本节点。同一时刻系统中可能存在若干个不同节点同时执行该过程,节点之间需要互相交换准备消息。在规定的时间范围内,如果节点收到了来自2f+1个不同节点的准备消息,就表示该阶段完成。
4)确认阶段:准备阶段完成后,节点发送确认消息到所有节点。同样的,该节点也会等待接收来自其它节点的确认消息。当节点收到来自2f+1个不同节点的确认消息之后就意味着该请求达成共识,接着节点就会在本地执行该请求并将数据持久化。
5)响应阶段:请求执行完毕之后,节点会向客户端发送响应消息,告诉客户端节点该请求在本节点执行成功。客户端收到f+1条来自不同节点的响应消息之后就可以确认该请求至少在一个正常节点上被成功执行。
由于实用拜占庭容错共识方法需要执行5个阶段步骤来完成共识过程,存在共识效率不高的问题,因此通过减少实用拜占庭容错共识步骤可有效提高共识效率。
(三)发明内容
本发明的目的在于提供一种基于块链式存储的实用拜占庭容错共识方法,旨在解决上述的技术问题或者至少部分地解决上述问题。
根据本发明,提供了一种基于块链式存储的实用拜占庭容错共识方法,该方法包括如下步骤:
客户端发送包含处理请求、视图编号的请求消息给所有节点;
由所有节点选出的主节点对收到的请求消息验证后,将收到的请求消息、主节点存储的最新区块高度信息打包进区块,并将包含该区块的预准备消息向所有节点发送;
节点对收到的预准备消息验证后,将预准备消息中的区块的哈希值放入准备消息,并向所有节点发送;
节点对收到的准备消息进行验证,当同一区块的准备消息通过验证的数量超过预设的阈值数量时,将该区块中的数据和验证节点的数字签名加入到块链式存储的区块中,并执行区块中的客户端处理请求后,向客户端发送执行完毕消息;
每个节点会按照预设的时间周期发送包含节点存储的最新区块的哈希值和高度信息的检查点消息给其它所有节点,收到检查点消息的节点验证通过发送节点的数字签名后,如果发现发送节点的最新区块的高度高于本节点存储的最新区块高度则向发送节点请求缺失的区块,收到缺失区块并经过验证后,加入本地存储的区块链中。
可选地,该方法进一步包括:
客户端对收到的执行完毕消息进行验证,如果在预设超时时间内验证通过的消息数量达不到根据节点数量预设的执行完毕阈值数量时,客户端节点就会广播视图变更消息,申请更换主节点;
当下一个视图对应的主节点收到的视图变更消息数量超过根据节点数量预设的视图变更阈值数量时,成为新的主节点,并广播包含有本地存储的最新区块高度的新视图消息;
收到新视图消息的节点验证后,更新主节点标识,并同步缺失的区块,使本地存储的区块高度和主节点区块高度相同。
可选地,所述对消息进行验证包括:
如果消息是请求消息,收到请求消息的节点判断消息中的时间是否不大于当前时间、视图编号是否和本地存储的视图编号一致,如果不满足则验证不通过;
如果消息是预准备消息,收到预准备消息的节点判断其中的区块的请求消息是否和之前收到的客户端发送的请求消息一致、消息中的区块高度是否和本地存储的最新区块高度一致,如果不满足则验证不通过;
如果消息是准备消息,收到准备消息的节点判断其中的区块的哈希值是否与之前收到的预准备消息中的区块的哈希值相同,如果不满足则验证不通过。
可选地,所述对消息进行验证还包括如下中的一种或多种:
验证消息的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;
验证消息的数字签名是否符合预设的签名条件,如果不符合则验证不通过。
(四)附图说明
图1示出了根据本发明一个实施例的基于块链式存储的实用拜占庭容错共识方法的流程示意图。
(五)具体实施方式
图1示出了根据本发明一个实施例的基于块链式存储的实用拜占庭容错共识方法的流程示意图,如图1所示,所述基于块链式存储的实用拜占庭容错共识方法执行如下步骤:
步骤S110,客户端发送包含处理请求、视图编号的请求消息给所有节点;
步骤S120,由所有节点选出的主节点对收到的请求消息验证后,将收到的请求消息、主节点存储的最新区块高度信息打包进区块,并将包含该区块的预准备消息向所有节点发送;
步骤S130,节点对收到的预准备消息验证后,将预准备消息中的区块的哈希值放入准备消息,并向所有节点发送;
步骤S140,节点对收到的准备消息进行验证,当同一区块的准备消息通过验证的数量超过预设的阈值数量时,将该区块中的数据和验证节点的数字签名加入到块链式存储的区块中,并执行区块中的客户端处理请求后,向客户端发送该区块;
步骤S150,每个节点会按照预设的时间周期发送包含节点存储的最新区块的哈希值和高度信息的检查点消息给其它所有节点,收到检查点消息的节点验证通过发送节点的数字签名后,如果发现发送节点的最新区块的高度高于本节点存储的最新区块高度则向发送节点请求缺失的区块,收到缺失区块并经过验证后,加入本地存储的区块链中。
本发明的实施例中,客户端节点会发送请求消息给所有节点,收到的节点会缓存所有收到的请求消息,主节点除了缓存外,还将按照收到的时间顺序对请求消息进行排序,并将其依序打包进区块。
本发明的实施例中,节点之间不存在信任关系,每个节点独立进行操作和验证消息,同时消息中都存在数字签名,无法影响其它节点的处理。在实用拜占庭容错共识中,在存在实施恶意行为的节点数量不高于等于节点总数1/3的情况下,能够保证非恶意节点之间的数据安全性和一致性,从而保证节点处理请求的安全性;例如,如果存在f个恶意节点,为了保证非恶意节点的大多数节点能够形成共识并且形成共识的节点数量大于恶意节点数量,则至少有2f+1个节点是非恶意的,节点的总数至少为3f+1。由于经典的实用拜占庭容错共识算法需要5个阶段步骤才能保证节点的内容一致,其中:在准备阶段步骤,节点需要收到至少2f+1个不同节点确认收到请求消息;在确认阶段步骤,至少有2f+1个节点需要确认其已收到至少2f+1个不同节点的请求消息。而基于块链式存储的实用拜占庭容错共识方法只用一个步骤就实现在每一个区块中存储了2f+1个验证通过的不同节点数字签名,能够证明该区块中存储的客户端处理请求消息已被确认的有效性及用于后续区块的同步。该步骤即可替代实用拜占庭容错共识算法中的准备阶段步骤和确认阶段步骤,因此减少了实用拜占庭容错共识步骤,提高共识效率。
在本发明的一个实施例中,图1所示的方法进一步包括:每个节点会按照预设的时间周期发送包含节点存储的最新区块高度信息的检查点消息给其它所有节点,收到检查点消息的节点验证通过发送节点的数字签名后,如果发现发送节点的最新区块的高度高于本节点存储的最新区块高度则向发送节点请求缺失的区块,收到缺失区块并经过验证后,加入本地存储的区块链中。
本发明的实施例中,通过周期性的广播节点的最新区块高度信息,能够使节点发现缺失的区块信息以及其中包含的处理请求消息。由于每一个区块中存储了2f+1个验证通过的不同节点数字签名,能够证明该区块中存储的客户端处理请求消息的有效性。通过同步机制获得缺失的区块后,并执行区块中的客户端处理请求,实现结点间的同步。
在本发明的一个实施例中,图1所示的方法进一步包括:客户端对收到的区块信息进行验证,如果在预设超时时间内验证获得不了通过验证的区块,客户端节点就会广播视图变更消息,申请更换主节点,在该视图变更消息中包含未被执行的处理请求;当下一个视图对应的主节点收到的视图变更消息数量超过根据节点数量预设的视图变更阈值数量时,成为新的主节点,并广播包含有本地存储的最新区块高度的新视图消息;使本地存储的区块高度和主节点区块高度相同。
本发明的实施例中,当客户端能够获取至少一个通过验证的区块时,能够表明至少有一个非恶意节点执行了客户端的处理请求。而没有收到验证能够通过验证的区块时,则客户端认为主节点出现问题,就申请视图变更,即更换主节点。新的主节点将重新执行客户端未被执行的处理请求。为了保证处理请求执行的一致性,节点需要同步缺失的区块。
在本发明的一个实施例中,图1所示的方法中所述对消息进行验证包括:如果消息是请求消息,收到请求消息的节点判断消息中的时间是否不大于当前时间、视图编号是否和本地存储的视图编号一致,如果不满足则验证不通过;如果消息是预准备消息,收到预准备消息的节点判断其中的区块的请求消息是否和之前收到的客户端发送的请求消息一致、消息中的区块高度是否和本地存储的最新区块高度一致,如果不满足则验证不通过;如果消息是准备消息,收到准备消息的节点判断其中的区块的哈希值是否与之前收到的预准备消息中的区块的哈希值相同,如果不满足则验证不通过。
在本发明的实施例中,由于节点之间不存在信任关系,以及恶意节点会发送请求消息、预准备消息和准备消息。因此需要消息中信息是否正确。每个节点需要对收到的请求消息判断消息中的时间是否不大于当前时间、视图编号是否和本地存储的视图编号一致,如果不满足则验证不通过;对收到的预准备消息判断其中的区块的请求消息是否和之前收到的客户端发送的请求消息一致、消息中的区块高度是否和本地存储的最新区块高度一致,如果不满足则验证不通过;对收到准备消息判断其中的区块的哈希值是否与之前收到的预准备消息中的区块的哈希值相同,如果不满足则验证不通过。
进一步地,图1所示的方法中所述对消息进行验证还包括:验证消息的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;验证消息的数字签名是否符合预设的签名条件,如果不符合则验证不通过。
在本发明的实施例中,还需要对消息的数据格式和数字签名进行正确性验证。通过对数字签名的验证,能够验证消息发送节点的身份,防止被节点身份被恶意节点仿冒,同时验证消息的内容完整性,防止消息被篡改。
Claims (4)
1.一种基于块链式存储的实用拜占庭容错共识方法,该方法包括以下步骤:
客户端发送包含处理请求、视图编号的请求消息给所有节点;
由所有节点选出的主节点对收到的请求消息验证后,将收到的请求消息、主节点存储的最新区块高度信息打包进区块,并将包含该区块的预准备消息向所有节点发送;
节点对收到的预准备消息验证后,将预准备消息中的区块的哈希值放入准备消息,并向所有节点发送;
节点对收到的准备消息进行验证,当同一区块的准备消息通过验证的数量超过预设的阈值数量时,将该区块中的数据和验证节点的数字签名加入到块链式存储的区块中,并执行区块中的客户端处理请求后,向客户端发送执行完毕消息;
每个节点会按照预设的时间周期发送包含节点存储的最新区块的哈希值和高度信息的检查点消息给其它所有节点,收到检查点消息的节点验证通过发送节点的数字签名后,如果发现发送节点的最新区块的高度高于本节点存储的最新区块高度则向发送节点请求缺失的区块,收到缺失区块并经过验证后,加入本地存储的区块链中。
2.如权利 要求1所述方法,其中,该方法进一步包括:
客户端对收到的执行完毕消息进行验证,如果在预设超时时间内验证通过的消息数量达不到根据节点数量预设的执行完毕阈值数量时,客户端节点就会广播视图变更消息,申请更换主节点;
当下一个视图对应的主节点收到的视图变更消息数量超过根据节点数量预设的视图变更阈值数量时,成为新的主节点,并广播包含有本地存储的最新区块高度的新视图消息;
收到新视图消息的节点验证后,更新主节点标识,并同步缺失的区块,使本地存储的区块高度和主节点区块高度相同。
3.如权利要求1所述的方法,其中,所述对消息进行验证包括:
如果消息是请求消息,收到请求消息的节点判断消息中的时间是否不大于当前时间、视图编号是否和本地存储的视图编号一致,如果不满足则验证不通过;
如果消息是预准备消息,收到预准备消息的节点判断其中的区块的请求消息是否和之前收到的客户端发送的请求消息一致、消息中的区块高度是否和本地存储的最新区块高度一致,如果不满足则验证不通过;
如果消息是准备消息,收到准备消息的节点判断其中的区块的哈希值是否与之前收到的预准备消息中的区块的哈希值相同,如果不满足则验证不通过。
4.如权利要求3所述的方法,其中,所述对消息进行验证还包括如下中的一种或多种:
验证消息的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过;
验证消息的数字签名是否符合预设的签名条件,如果不符合则验证不通过。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010205187.4A CN111555858B (zh) | 2020-03-20 | 2020-03-20 | 一种基于块链式存储的实用拜占庭容错共识方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010205187.4A CN111555858B (zh) | 2020-03-20 | 2020-03-20 | 一种基于块链式存储的实用拜占庭容错共识方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111555858A CN111555858A (zh) | 2020-08-18 |
CN111555858B true CN111555858B (zh) | 2021-11-26 |
Family
ID=72001913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010205187.4A Active CN111555858B (zh) | 2020-03-20 | 2020-03-20 | 一种基于块链式存储的实用拜占庭容错共识方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111555858B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112417046B (zh) * | 2020-11-23 | 2024-04-02 | 宙通科技(南京)有限公司 | 一种应用于区块链共识机制的并行化拜占庭容错方法 |
CN113541968B (zh) * | 2021-09-16 | 2021-11-26 | 中国信息通信研究院 | 共识方法、装置及区块链系统 |
CN113836232A (zh) * | 2021-09-24 | 2021-12-24 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9455992B2 (en) * | 2009-06-12 | 2016-09-27 | Microsoft Technology Licensing, Llc | Trusted hardware component for distributed systems |
CN108848056A (zh) * | 2018-05-03 | 2018-11-20 | 南京理工大学 | 基于验证的区块链共识方法 |
-
2020
- 2020-03-20 CN CN202010205187.4A patent/CN111555858B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9455992B2 (en) * | 2009-06-12 | 2016-09-27 | Microsoft Technology Licensing, Llc | Trusted hardware component for distributed systems |
CN108848056A (zh) * | 2018-05-03 | 2018-11-20 | 南京理工大学 | 基于验证的区块链共识方法 |
Non-Patent Citations (1)
Title |
---|
区块链实用拜占庭容错共识算法的改进;甘俊;《计算机应用》;20190710;2148-2155页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111555858A (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111555858B (zh) | 一种基于块链式存储的实用拜占庭容错共识方法 | |
US8073897B2 (en) | Selecting values in a distributed computing system | |
US20210209131A1 (en) | Method for Data Synchronization of Multiple Nodes and Computer Device | |
CN111614468B (zh) | 一种区块链共识方法及系统 | |
CN111342971B (zh) | 一种拜占庭共识方法和系统 | |
US11200123B2 (en) | Consensus process recovery method and related node | |
CN108989052B (zh) | 交易请求处理方法及系统 | |
CN112395113B (zh) | 实用拜占庭容错共识方法及装置、可读存储介质 | |
CN111258986A (zh) | 一种区块链的回滚方法 | |
CN112286945A (zh) | 基于pbft算法的配置变更方法、系统、设备及介质 | |
CN116633942A (zh) | 一种高速响应客户端的拜占庭容错共识方法 | |
CN111526165B (zh) | 联盟链中的共识方法和系统 | |
Roth et al. | Do not overpay for fault tolerance! | |
CN111064813B (zh) | 在区块链共识处理时进行处理消息同步的方法及装置 | |
CN116232893A (zh) | 分布式系统的共识方法、装置、电子设备及存储介质 | |
CN116455685A (zh) | 一种在广播网络下的pbft改进共识方法 | |
Martin et al. | Fast byzantine paxos | |
CN116846888A (zh) | 区块链网络的共识处理方法、装置、设备及存储介质 | |
CN111478878B (zh) | 一种防攻击方法及装置 | |
CN113890744A (zh) | 聚合签名共识方法、计算机设备和存储介质 | |
CN113630445A (zh) | 一种基于区块链网络的数据存储方法及装置 | |
Kang et al. | Blockchain-based High-reliability Recovery and Verification Mechanism for Power Data Storage Nodes | |
CN111190754A (zh) | 一种区块链事件通知方法及区块链系统 | |
CN116633699B (zh) | 基于区块链的产品防伪溯源信息可信处理方法及系统 | |
CN112953733B (zh) | 一种数据治理的区块链通信资源整合共识方法 |
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 |