CN111342971A - 一种拜占庭共识方法和系统 - Google Patents
一种拜占庭共识方法和系统 Download PDFInfo
- Publication number
- CN111342971A CN111342971A CN202010082631.8A CN202010082631A CN111342971A CN 111342971 A CN111342971 A CN 111342971A CN 202010082631 A CN202010082631 A CN 202010082631A CN 111342971 A CN111342971 A CN 111342971A
- Authority
- CN
- China
- Prior art keywords
- message
- phase
- view
- consensus
- round
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012790 confirmation Methods 0.000 claims abstract description 49
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 13
- 230000007704 transition Effects 0.000 claims description 8
- 238000010200 validation analysis Methods 0.000 claims description 8
- 238000012795 verification Methods 0.000 claims description 6
- 239000013589 supplement Substances 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000009412 basement excavation Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012419 revalidation Methods 0.000 description 2
- 241000084490 Esenbeckia delta Species 0.000 description 1
- 239000002253 acid Substances 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/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/3271—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 using challenge-response
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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/126—Applying verification of the received information the source of the received data
-
- 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/321—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 a third party or a trusted authority
-
- 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/3236—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 using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
-
- 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
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
本发明涉及一种拜占庭共识方法和系统,属于区块链技术领域,解决了现有技术中三阶段共识的性能明显逊于非拜占庭共识,以及很难平衡拜占庭共识一致性和鲜活性,所以很难在性能、容错率和网络环境中达到一个折衷的问题。拜占庭共识方法,包括提议阶段和接下来的准备阶段,其中,准备阶段包括:对消息进行第一次投票和广播;接收消息并验证其合法性;以及统计合法的第一次投票数量N1,当N1大于等于3.5f+1时,直接在准备阶段确认消息而不需要接下来的确认阶段,其中,参加拜占庭共识的节点个数为4f+1,f为拜占庭节点的个数。实现了三阶段共识进化为两阶段共识,且能够满足一致性和鲜活性,因此在性能、容错率和网络环境中达到一个很好的折衷。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种拜占庭共识方法和系统。
背景技术
在区块链系统中,为了防止系统中的恶意行为、诚实节点的不响应以及网络延迟等因素,区块链系统必须采用共识算法来保证链上数据的一致性。可以说,共识是区块链系统的核心,没有共识,区块链系统将无法正常运行。在分布式系统中,共识一般分为非拜占庭共识和拜占庭共识,非拜占庭共识是指只允许节点无响应的共识,而拜占庭共识是指允许存在任意恶意行为的共识。如果不考虑节点的恶意行为,在实际应用中,非拜占庭共识足以应对;然而在跨公司、跨境甚至是跨国的分布式系统中,这种无恶意行为的假设往往是不成立的,故对拜占庭共识的研究非常重要。
目前PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)共识在联盟链中广泛使用,其共识过程需要三个阶段。PBFT虽然有非常好的容错率,但性能明显逊于Raft等非拜占庭共识。拜占庭共识满足的安全性质是一致性和鲜活性。一致性(consistency):只要存在诚实节点确认某个区块,则该区块肯定会被其他所有诚实节点确认。鲜活性(liveness):当诚实节点收到某个消息后,该消息能很快被系统所有诚实节点确认。一致性和鲜活性在分布式系统中是对立的概念。如果分布式系统只对空消息进行共识,那么一致性肯定满足,但此时有意义的消息得不到确认进而鲜活性不满足;如果分布式系统对所有消息达成共识,则鲜活性肯定满足,但消息的不一致性以及系统中节点对消息的排序不一致将导致一致性不满足。
因而现有技术中存在三阶段拜占庭共识的性能明显逊于非拜占庭共识,以及很难平衡拜占庭共识一致性和鲜活性,所以根据FLP不可能原理,在性能、容错率和网络环境中达到一个折衷是具有挑战性的技术问题。
发明内容
鉴于上述的分析,本发明实施例旨在提供一种拜占庭共识方法和系统,用以解决现有三阶段拜占庭共识的性能明显逊于非拜占庭共识,以及很难平衡拜占庭共识一致性和鲜活性,所以根据FLP不可能原理,在性能、容错率和网络环境中达到一个折衷具有挑战性的技术问题。
一方面,本发明实施例提供了一种拜占庭共识方法,包括提议阶段和接下来的准备阶段,其中,准备阶段包括:对消息进行第一次投票和广播;接收消息并验证其合法性;以及统计合法的第一次投票数量N1,当N1大于等于3.5f+1时,直接在准备阶段确认消息而不需要接下来的确认阶段,其中,参加拜占庭共识的节点个数为4f+1,f为拜占庭节点的个数。
上述技术方案的有益效果如下:在半同步网络环境下,当节点收到足够多的对某个消息的准备阶段投票时,该节点直接对此消息达成确认,加速达成共识,从而将拜占庭环境下的三阶段共识进化为两阶段共识,而且该拜占庭共识能够满足一致性和鲜活性,因此在性能、容错率和网络环境中达到一个折衷。
上述进一步改进方案的有益效果是:与现有技术相比较,当第一次投票数量N1大于等于3.5f+1时,就直接确认该消息而不需要接下来的确认阶段,能够提高共识速度。
基于上述方法的进一步改进,接收消息并验证其合法性包括:接收消息<prepare,s,v,h>M,其中,<prepare,s,v,h>M为准备阶段的消息;检查轮次s是否小于本地轮次;检查保存的消息和准备阶段的消息中的s、v和h是否一致,其中,为提议阶段的消息;以及检查准备阶段的消息中的签名的合法性,其中,当合法性通过时,存储准备阶段的消息,其中,v为视图以及h为消息集{m}的哈希值,L为出块节点,M为生成准备消息的节点。
基于上述方法的进一步改进,拜占庭共识方法还包括:当N1大于等于2.5f+1且小于3.5f+1时,将N1个第一次投票更新为消息<prepare,s,v,h>M的接受凭证然后进入确认阶段,其中,<prepare,s,v,h>M为准备阶段的消息,其中,确认阶段还包括:生成消息<commit,s,v,h>M并对其进行第二次投票和广播,其中,<commit,s,v,h>M为确认阶段的消息;接收确认阶段的消息并验证合法性;统计合法的第二次投票数量N2,当N2大于等于2.5f+1时,将N2个第二次投票作为消息的确认凭证并将接受凭证设置为空集;以及将轮次s加1并重置触发器T,其中,v为视图,h为消息集的哈希值,以及M为生成确认阶段的消息的节点。
上述进一步改进方案的有益效果是:在N1大于等于2.5f+1且小于3.5f+1时,需要进入确认阶段,以保障该拜占庭共识方法的安全性。
基于上述方法的进一步改进,提议阶段包括:与轮次s和视图v相对应的出块者L生成消息并将消息和消息集{m}广播给其他节点,其中,为提议阶段的消息;以及接收提议阶段的消息并验证合法性,验证合法性包括:验证提议阶段的消息的合法性;验证接受凭证的合法性,其中,当接受凭证合法时,保存提议阶段的消息;以及接收消息集{m}并判断消息集{m}的哈希值是否等于h,其中,当消息集{m}的哈希值等于h时,一起存储消息和消息集{m},其中,h为消息集{m}的哈希值h。
基于上述方法的进一步改进,当合法的所述接受凭证为非空集合时,检验轮次s与本地轮次的大小关系并进行相应的处理包括:当轮次s小于本地轮次时,不处理;当轮次s等于本地轮次时,将收到的接受凭证的视图与本地接受凭证的视图进行比较,当收到的接受凭证的视图更小时,不处理;当收到的接受凭证的视图等于本地接受凭证的视图时,判断h是否匹配;以及当收到的接受凭证的视图更大时,用收到的接受凭证更新本地接受凭证;以及当轮次s大于本地轮次时,用收到的接受凭证更新本地接受凭证。
基于上述方法的进一步改进,当节点M的触发器T超过3Δ且轮次s的消息没有得到确认时,进入视图转换阶段,视图转换阶段包括:生成消息并发送给与轮次s和视图v+1相对应的出块者L′,其中,为视图转换阶段的消息;重置触发器T;以及当出块者L′收到视图转换阶段的消息的数量大于2.5f+1以后,用轮次号最大的接受凭证来更新本地接受凭证并且用确认凭证来补充本地轮次至轮次s之间没有确认的消息,其中,为轮次s-1的确认凭证,Δ为最大网络延迟。
上述进一步改进方案的有益效果是:当节点M的触发器T超过3Δ且轮次s的消息没有得到确认时,进入视图转换阶段,加速共识以避免共识过程长时间无响应。
拜占庭共识方法还包括在视图转换阶段之后的再提议阶段,再提议阶段包括:将至少2.5f+1个视图转换阶段的消息打包并生成消息其中,为再提议阶段的消息;验证再提议阶段的消息的合法性并更新本地的确认凭证和接受凭证以及当触发器T的计时大于2Δ并且轮次s的消息没有得到确认时,则重新开始视图转换阶段。
上述进一步改进方案的有益效果是:当节点M的触发器T超过3Δ且轮次s的消息没有得到确认时,进入视图转换阶段和再提议阶段,加速共识以避免系统长时间无响应。
另一方面,本发明实施例提供了一种拜占庭共识系统,包括:发送模块,用于对消息进行第一次投票和广播;接收模块,用于接收消息;验证模块,用于验证消息的合法性;计数模块,用于统计合法的第一次投票数量N1,以及确认模块,用于当N1大于等于3.5f+1时,直接在准备阶段确认消息而不需要接下来的确认阶段,其中,参加拜占庭共识的节点个数为4f+1,f为拜占庭节点的个数。
与现有技术相比,本发明至少可实现如下有益效果之一:
1、在半同步网络环境下,当节点收到足够多的对某个消息的准备阶段投票时,该节点直接对此消息达成确认,加速达成共识;
2、首次将拜占庭环境下的三阶段共识进化为两阶段共识;
3、该拜占庭共识能够满足一致性和鲜活性,因此在性能、容错率和网络环境中达到一个折衷;
4、拜占庭节点较多的情况下,通过设置触发器T等条件,加速共识以避免系统长时间无响应。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为根据本发明的实施例的拜占庭共识方法的流程图;
图2为根据本发明的实施例的拜占庭共识方法的阶段结构图。
图3为根据本发明的实施例的拜占庭共识方法的提议阶段的具体流程图;
图4为根据本发明的实施例的拜占庭共识系统的结构图。
附图标记:
202-提议阶段;204-准备阶段;206-确认阶段;402-发送模块;404-接收模块;406-验证模块;408-计数模块;410-确认模块;
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
本发明的一个具体实施例,公开了一种拜占庭共识方法,包括提议(propose)阶段和接下来的准备阶段(prepare)。如图1所示,准备阶段包括:步骤S102,对消息进行第一次投票和广播,具体地,区块链上的节点M在收到合法的提议阶段的消息后,产生准备阶段的消息<prepare,s,v,h>M并对该准备阶段的消息进行第一次投票并将该准备阶段的消息广播给全网所有节点;步骤S104,接收消息并验证其合法性,具体地,区块链上的节点接收该准备阶段的消息并验证其合法性;以及步骤S106,区块链上的节点统计合法的第一次投票数量N1,当N1大于等于3.5f+1时,直接在准备阶段确认消息而不需要接下来的确认阶段,其中,参加拜占庭共识的节点个数为4f+1,f(f为大于零的整数)为拜占庭节点(区块链网络的记账共识和拜占庭将军问题是相似的。参与共识记账的每一个记账节点相当于将军,节点之间的消息传递相当于信使,某些节点可能由于各种原因而产生错误的信息并传达给其他节点。通常,这些发生故障节点被称为拜占庭节点)的个数。
与现有技术相比,本实施例提供的拜占庭共识方法,在半同步网络环境下,当节点收到足够多(大于等于3.5f+1个)的对某个消息的准备阶段第一次投票时,该节点直接对此消息进行确认,加速达成共识,从而将拜占庭环境下的三阶段共识进化为两阶段共识,而且该拜占庭共识能够满足一致性和鲜活性,因此在性能、容错率和网络环境中达到一个折衷。
下面介绍本文共识的环境假设,即参与共识节点所处的环境假设。首先介绍两个概念,最大网络延迟Δ和实际网络延迟δ。
最大网络延迟Δ:某个节点将消息广播给其他节点,则经过Δ时间之后,其他节点必定收到该消息。
实际网络延迟δ:网络的实际延迟,当节点广播消息后,在经过δ时间之后,不保证其他节点全都能收到该消息。
一般来说δ<<Δ。根据网络延迟,拜占庭共识通常分为同步共识和异步共识。同步共识容忍少于1/2的恶意节点,此时要求共识的每个阶段的消息广播能确保被所有节点接收到;而异步共识容忍少于1/3的恶意节点,此时共识的每个阶段是根据事件触发的,即当满足一定条件后从当前阶段进入下一阶段。为了减少异步共识的复杂性,简化异步共识的流程,许多学者在设计共识时假设半同步环境,即Δ是确定的,但实际运行是在异步环境中(即消息的传输延时由δ刻画),Δ的确定可以避免异步环境的拜占庭共识停滞不前。本文的共识假设是半同步的网络环境。
如图2所示,拜占庭共识方法包括:提议阶段202、准备阶段204以及可选的确认阶段206。根据节点收到的第一次投票数量来确定是否进行可选的确认阶段206,具体地,当节点收到的第一次投票数量小于4f+1并且大于等于3.5f+1时,拜占庭共识方法仅包括提议阶段202和准备阶段204而不包括可选的确认阶段206,即,在准备阶段204直接确认;当节点收到的第一次投票数量大于等于2.5f+1并且小于3.5f+1时,拜占庭共识方法包括提议阶段202、准备阶段204以及可选的确认阶段206。例如,当f为40时,当节点收到的第一次投票数量小于161并且大于等于141时,拜占庭共识方法仅包括提议阶段202和准备阶段204,也就是说,第一次投票数量在该区间内时不需要可选的确认阶段206而是在准备阶段204直接确认;当节点收到的第一次投票数量大于等于101并且小于141时,拜占庭共识方法包括提议阶段202、准备阶段204以及可选的确认阶段206。类似地,在f为44、45、46、47…的情况下,根据第一次投票数量也具有两个共识阶段或三个共识阶段。
下文中,参考图1至图3,分别对拜占庭共识方法的提议阶段、准备阶段和确认阶段进行详细描述。首先,将对拜占庭共识方法的提议阶段进行详细描述。
如图3所示,提议阶段包括:步骤S302,与轮次s(其中,s大于等于1)和视图v(其中,v大于等于1)相对应的出块者L(挖矿是一种周期性的竞争行为,根据共识算法不同,对于每个挖矿周期,从矿工中选择“优胜者”的方式也有所不同,通常我们称这些“优胜者”为当前周期“出块者”)生成消息并将消息和消息集{m}广播给其他节点,其中,为提议阶段的消息;步骤S304,接收提议阶段的消息并验证合法性,验证合法性包括:验证提议阶段的消息的合法性;验证接受凭证的合法性,其中,当接受凭证合法时,保存提议阶段的消息;以及步骤S306,接收消息集{m}并判断消息集{m}的哈希值是否等于h,其中,当消息集{m}的哈希值等于h时,一起存储消息和消息集{m},其中,h为消息集{m}的哈希值h。
在拜占庭共识方法中,当合法的接受凭证为非空集合时,检验轮次s与本地轮次的大小关系并进行相应的处理包括:当轮次s小于本地轮次时,不处理;当轮次s等于本地轮次时,将收到的接受凭证的视图与本地接受凭证的视图进行比较,当收到的接受凭证的视图更小时,不处理;当收到的接受凭证的视图等于本地接受凭证的视图时,判断h是否匹配;以及当收到的接受凭证的视图更大时,用收到的接受凭证更新本地接受凭证;以及当轮次s大于本地轮次时,用收到的接受凭证更新本地接受凭证。
首先,下面以具体实例的方式对拜占庭共识方法的提议阶段进行详细描述。
设参与共识的节点个数n=4f+1,令轮次s的接受凭证和确认凭证初始都为空集。每个节点维护一个触发器T,当进入新视图时,T重置为零。触发器T超过某个时间后,节点进入视图转换阶段。具体的共识达成过程如下:
提议阶段:每轮开始时,由当前轮次和当前视图所唯一确定的出块者L收集消息并广播给其余节点,其余节点验证消息合法性之后,进入下一个阶段。具体过程为:
(1)令轮次s的接受凭证为视图为v。当为空集时,当前轮次当前视图的出块者L选择合法的消息集{m}并计算该消息集的哈希(例如用国密算法sm3对这些消息的字节流做哈希运算);否则出块者L选择中蕴含的哈希值h以及该哈希值对应的消息集{m};
(2)出块者L(即,开始节点)根据当前的轮次s、视图v、接受凭证以及消息集{m}对应的哈希值h构造消息并对该消息签名,得到<propose,s,v,As,h>L,然后将{m}和<propose,s,v,As,h>L广播给全网所有共识节点;
(3)节点M(区块链上除了出块者L之外的任意非拜占庭节点)在收到<propose,s,v,As,h>L后,根据轮次s和视图v确定出块者L并验证消息签名的合法性;
(a)如果轮次s小于本地轮次,则不予处理;
(b)如果等于,则比较收到接受凭证蕴含的视图与本地接受凭证蕴含的视图v大小:如果收到接受凭证蕴含的视图更小,则不予处理;如果相等,则判断蕴含的h是否匹配—如果不匹配,则共识终止;如果收到接受凭证蕴含的视图更大,则用其接受凭证更新本地消息接受凭证;
(c)如果大于,则用接受凭证更新本地消息接受凭证:如果在轮次s之前有消息没有得到确认(即轮次s之前存在消息没有达成共识,则此时该节点滞后于其他节点),则该节点向其他节点询问那些未被确认的消息(即那些轮次没有确认的消息需要通过询问其他节点来补充)(即广播该询问消息)。
以上是对拜占庭共识方法的提议阶段的详细描述,接下来将对拜占庭共识方法的准备阶段进行详细描述。
如图1所示,准备阶段包括:步骤S102,对消息进行第一次投票和广播,具体地,区块链上的节点M在收到合法的提议阶段的消息后,产生装备阶段的消息<prepare,s,v,h>M并对该准备阶段的消息进行第一次投票并将该准备阶段的消息广播给全网所有节点;步骤S104,接收消息并验证其合法性,具体地,区块链上的节点接收该准备阶段的消息并验证其合法性;以及步骤S106,区块链上的节点统计合法的第一次投票数量N1(其中,N1为大于等于0的整数),当N1大于等于3.5f+1时,直接在准备阶段确认消息而不需要接下来的确认阶段,其中,参加拜占庭共识的节点个数为4f+1,f为拜占庭节点的个数。
具体地,接收消息并验证其合法性包括:接收消息<prepare,s,v,h>M,其中,<prepare,s,v,h>M为准备阶段的消息;检查轮次s是否小于本地轮次;检查保存的消息和准备阶段的消息中的s、v和h是否一致,其中,为准备阶段之前的提议阶段的消息;以及检查准备阶段的消息中的签名的合法性,其中,当合法性通过时,存储准备阶段的消息,其中,v为视图以及h为消息集{m}的哈希值,L和M为生成准备阶段的消息的节点。拜占庭共识方法还包括:当N1大于等于2.5f+1且小于3.5f+1时,将N1个第一次投票更新为消息<prepare,s,v,h>M的接受凭证然后进入确认阶段,其中,<prepare,s,v,h>M为准备阶段的消息。
下文中,以具体实例的方式对拜占庭共识的准备阶段进行详细描述。
当所有检查通过后,对消息进行第一次投票并广播。当节点(即,区块链上收到消息的所有节点,下文中,统称为节点)收到至少2.5f+1个对该消息的第一次投票后,该节点修改状态并接受该消息,这至少2.5f+1个第一次投票为该消息的接受凭证当节点收到至少3.5f+1个对该消息的第一次投票后,该节点直接确认该消息,这至少3.5f+1个第一次投票为该消息的确认凭证此时共识只需两个阶段即可达成。
具体过程为:
(2)节点收到<prepare,s,v,h>M后,验证该消息的合法性,即检查轮次s是否小于本地轮次(如果小于则忽略该消息),检查保存的和<prepare,s,v,h>M中的s,v和h是否一致,以及检查投票的合法性。当合法性通过后,将<prepare,s,v,h>M保存;
(3)当节点收到至少2.5f+1个匹配并合法的<prepare,s,v,h>M后,更新接受凭证<prepare,s,v,h>M;
(5)将s增加1并重置触发器T。
以上是对拜占庭共识方法的准备阶段的详细描述。下文中,将对拜占庭共识方法的确认阶段进行详细描述。
确认阶段还包括:生成消息<commit,s,v,h>M并对其进行第二次投票和广播,其中,<commit,s,v,h>M为确认阶段的消息;接收确认阶段的消息并验证合法性;统计合法的第二次投票数量N2(其中,N2为大于等于0的整数),当N2大于等于2.5f+1时,将N2个第二次投票作为消息的确认凭证并将接受凭证设置为空集;以及将轮次s加1并重置触发器T,其中,v为视图,h为消息集的哈希值,以及M为生成确认阶段的消息的节点。
下文中,将以具体实例的方式对确认阶段进行详细描述。
确认阶段:当所有检查通过后,对消息<prepare,s,v,h>M进行第二次投票并广播。当节点收到超过2.5f+1个合法的第二次投票后,该节点确认该消息,这至少2.5f+1个第二次投票为该消息的确认凭证。具体过程为:
(1)节点M收到至少2.5f+1个匹配并合法的<prepare,s,v,h>M后,产生<commit,s,v,h>M并将其广播给全网所有节点;
(2)节点收到<commit,s,v,h>M后,验证该消息的合法性,即检查s是否小于本节点的轮次号(如果小于则忽略该消息),检查和<commit,s,v,h>M中的s,v和h是否一致,以及检查投票的合法性。当合法性通过后,将<commit,s,v,h>M保存;
(4)将s增加1并重置触发器T。
以上是对拜占庭共识方法的确认阶段进行的详细描述。拜占庭共识方法还包括视图转换阶段和再提议阶段。具体地,如果当前轮次当前视图一直没有消息得到确认,则需要进入视图转换阶段和再提议阶段这两个阶段。下文中,将对这两个阶段进行详细描述。
当节点M的触发器T超过3Δ且轮次s的消息没有得到确认时,进入视图转换阶段,所述视图转换阶段包括:生成消息并发送给与所述轮次s和视图v+1相对应的出块者L′,其中,为视图转换阶段的消息;重置触发器T;以及当所述出块者L′收到所述视图转换阶段的消息的数量大于2.5f+1以后,用轮次号最大的接受凭证来更新本地接受凭证并且用确认凭证来补充本地轮次至所述轮次s之间没有确认的消息,其中,为轮次s-1的确认凭证,Δ为最大网络延迟。
拜占庭共识方法还包括在视图转换阶段之后的再提议阶段,再提议阶段包括:将至少2.5f+1个视图转换阶段的消息打包并生成消息其中,为再提议阶段的消息;验证再提议阶段的消息的合法性并更新本地的确认凭证和接受凭证以及当触发器T的计时大于2Δ并且轮次s的消息没有得到确认时,则重新开始视图转换阶段。
下文中,以具体实例的方式对视图转换阶段和再提议阶段进行详细描述。
视图转换阶段:节点发出视图转换的请求并发送给当前轮次新视图对应的出块者。当新出块者收到至少2.5f+1个合法的视图转换请求后,更新本地状态。具体过程为:
(2)将触发器T重置;
(3)新出块者L′收到超过2.5f+1个合法的(即签名合法,和合法,s和v对应的出块者确实是L′)后,用轮次号最大的来更新本地接受消息凭证(如果有多个,选择视图最大的),并且用这些确认凭证来补充本地轮次至轮次s之间没有确认的消息。
再提议阶段:新出块者将这至少2.5f+1个视图转换请求消息打包并生成再提议消息,然后广播给所有节点。收到再提议消息的所有节点更新自己的状态,然后在新的视图里继续共识。具体过程为:
(2)当节点收到
下文中,将参照图4,对拜占庭共识系统进行描述。
拜占庭共识系统包括:发送模块402,用于对消息进行第一次投票和广播;接收模块404,用于接收消息;验证模块406,用于验证消息的合法性;计数模块408,用于统计合法的第一次投票数量N1,以及确认模块410,用于当N1大于等于3.5f+1时,直接在准备阶段确认消息而不需要接下来的确认阶段,其中,参加拜占庭共识的节点个数为4f+1,f为拜占庭节点的个数。
拜占庭共识系统的其他模块还包括接受凭证模块、确认凭证模块、触发器模块、轮次设置模块、生成模块、比较模块等。拜占庭共识系统的其他模块与拜占庭共识方法相对应,因此,为了避免赘述,这里未对其进行详细描述。
本发明的实施例所提供的拜占庭共识方法和系统,具有以下技术效果:(1)在半同步网络环境下,当节点收到足够多的对某个消息的准备投票时,该节点直接在准备阶段对此消息达成确认而不需要接下来的确认阶段,加速达成共识;(2)该共识首次做到将拜占庭环境下的三阶段共识进化为两阶段共识;(3)该共识满足一致性和鲜活性。因此,能够通过将节点收到的第一次投票数量设置3.5f+1,实现性能、容错率和网络环境中达到一个折衷。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种拜占庭共识方法,包括提议阶段和接下来的准备阶段,其特征在于,所述准备阶段包括:
对消息进行第一次投票和广播;
接收所述消息并验证其合法性;以及
统计合法的第一次投票数量N1,当所述N1大于等于3.5f+1时,直接在所述准备阶段确认所述消息而不需要接下来的确认阶段,其中,参加所述拜占庭共识的节点个数为4f+1,f为拜占庭节点的个数。
4.根据权利要求1所述的拜占庭共识方法,其特征在于,还包括:当所述N1大于等于2.5f+1且小于3.5f+1时,将N1个第一次投票更新为消息<prepare,s,v,h>M的接受凭证然后进入所述确认阶段,其中,<prepare,s,v,h>M为准备阶段的消息,其中,
所述确认阶段还包括:
生成消息<commit,s,v,h>M并对其进行第二次投票和广播,其中,<commit,s,v,h>M为确认阶段的消息;
接收所述确认阶段的消息并验证合法性;
将轮次s加1并重置触发器T,其中,v为视图,h为消息集的哈希值,以及M为生成确认阶段的消息的节点。
10.一种拜占庭共识系统,其特征在于,包括:
发送模块,用于对消息进行第一次投票和广播;
接收模块,用于接收所述消息;
验证模块,用于验证所述消息的合法性;
计数模块,用于统计合法的所述第一次投票数量N1;以及
所述确认模块,用于当所述N1大于等于3.5f+1时,直接在所述准备阶段确认所述消息而不需要接下来的确认阶段,其中,参加所述拜占庭共识的节点个数为4f+1,f为拜占庭节点的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010082631.8A CN111342971B (zh) | 2020-02-07 | 2020-02-07 | 一种拜占庭共识方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010082631.8A CN111342971B (zh) | 2020-02-07 | 2020-02-07 | 一种拜占庭共识方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111342971A true CN111342971A (zh) | 2020-06-26 |
CN111342971B CN111342971B (zh) | 2023-08-08 |
Family
ID=71186818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010082631.8A Active CN111342971B (zh) | 2020-02-07 | 2020-02-07 | 一种拜占庭共识方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111342971B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522800A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
CN113114613A (zh) * | 2020-12-29 | 2021-07-13 | 上海能链众合科技有限公司 | 一种区块链容错共识的流水线处理方法 |
CN113542285A (zh) * | 2021-07-19 | 2021-10-22 | 东南大学 | 一种针对Tendermint共识协议的多阶段自动化的形式化验证方法 |
CN113660272A (zh) * | 2021-08-18 | 2021-11-16 | 北京航空航天大学 | 抗拜占庭排序的异步共识方法及装置 |
EP3934166A1 (en) * | 2020-07-03 | 2022-01-05 | Alipay (Hangzhou) Information Technology Co., Ltd. | Byzantine fault tolerance algorithm-based blockchain consensus method, apparatus, and system |
CN114565388A (zh) * | 2022-04-29 | 2022-05-31 | 腾讯科技(深圳)有限公司 | 共识轮次的更新方法、装置、电子设备及存储介质 |
CN114861233A (zh) * | 2022-04-19 | 2022-08-05 | 湖南天河国云科技有限公司 | 一种无需可信第三方的分片异步拜占庭容错共识方法和装置 |
WO2023078072A1 (zh) * | 2021-11-04 | 2023-05-11 | 京东科技信息技术有限公司 | 基于拜占庭容错的异步共识方法、装置、服务器和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
WO2019004480A1 (ja) * | 2017-06-30 | 2019-01-03 | 株式会社bitFlyer | ネットワークにおける合意形成方法及び当該ネットワークを構成するノード |
CN109194493A (zh) * | 2018-08-13 | 2019-01-11 | 北京邮电大学 | 一种信息管理系统、方法及装置 |
CN109600323A (zh) * | 2018-11-12 | 2019-04-09 | 中山大学 | 一种拜占庭共识机制 |
CN109766673A (zh) * | 2019-01-18 | 2019-05-17 | 四川大学 | 一种联盟式音视频版权区块链系统及音视频版权上链方法 |
CN109960512A (zh) * | 2017-12-25 | 2019-07-02 | 中移信息技术有限公司 | 一种软件部署方法及系统 |
-
2020
- 2020-02-07 CN CN202010082631.8A patent/CN111342971B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
WO2019004480A1 (ja) * | 2017-06-30 | 2019-01-03 | 株式会社bitFlyer | ネットワークにおける合意形成方法及び当該ネットワークを構成するノード |
CN109960512A (zh) * | 2017-12-25 | 2019-07-02 | 中移信息技术有限公司 | 一种软件部署方法及系统 |
CN109194493A (zh) * | 2018-08-13 | 2019-01-11 | 北京邮电大学 | 一种信息管理系统、方法及装置 |
CN109600323A (zh) * | 2018-11-12 | 2019-04-09 | 中山大学 | 一种拜占庭共识机制 |
CN109766673A (zh) * | 2019-01-18 | 2019-05-17 | 四川大学 | 一种联盟式音视频版权区块链系统及音视频版权上链方法 |
Non-Patent Citations (1)
Title |
---|
张维忠;徐步尘;高飞;: "对用电信息保护的拜占庭容错联盟链共识算法" * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11303430B2 (en) | 2020-07-03 | 2022-04-12 | Alipay (Hangzhou) Information Technology Co., Ltd. | Byzantine fault tolerance algorithm-based blockchain consensus method, apparatus, and system |
CN111522800B (zh) * | 2020-07-03 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
CN111522800A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
EP3934166A1 (en) * | 2020-07-03 | 2022-01-05 | Alipay (Hangzhou) Information Technology Co., Ltd. | Byzantine fault tolerance algorithm-based blockchain consensus method, apparatus, and system |
US11271799B2 (en) | 2020-07-03 | 2022-03-08 | Alipay (Hangzhou) Information Technology Co., Ltd. | Blockchain consensus method, node, and system based on honey badger byzantine fault tolerance consensus mechanism |
CN113114613A (zh) * | 2020-12-29 | 2021-07-13 | 上海能链众合科技有限公司 | 一种区块链容错共识的流水线处理方法 |
CN113114613B (zh) * | 2020-12-29 | 2023-05-02 | 上海零数众合信息科技有限公司 | 一种区块链容错共识的流水线处理方法 |
CN113542285A (zh) * | 2021-07-19 | 2021-10-22 | 东南大学 | 一种针对Tendermint共识协议的多阶段自动化的形式化验证方法 |
CN113542285B (zh) * | 2021-07-19 | 2022-06-28 | 东南大学 | 一种针对Tendermint共识协议的多阶段自动化的形式化验证方法 |
CN113660272B (zh) * | 2021-08-18 | 2022-06-21 | 北京航空航天大学 | 抗拜占庭排序的异步共识方法及装置 |
CN113660272A (zh) * | 2021-08-18 | 2021-11-16 | 北京航空航天大学 | 抗拜占庭排序的异步共识方法及装置 |
WO2023078072A1 (zh) * | 2021-11-04 | 2023-05-11 | 京东科技信息技术有限公司 | 基于拜占庭容错的异步共识方法、装置、服务器和介质 |
CN114861233A (zh) * | 2022-04-19 | 2022-08-05 | 湖南天河国云科技有限公司 | 一种无需可信第三方的分片异步拜占庭容错共识方法和装置 |
CN114861233B (zh) * | 2022-04-19 | 2023-12-19 | 湖南天河国云科技有限公司 | 一种无需可信第三方的分片异步拜占庭容错共识方法和装置 |
CN114565388A (zh) * | 2022-04-29 | 2022-05-31 | 腾讯科技(深圳)有限公司 | 共识轮次的更新方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111342971B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111342971A (zh) | 一种拜占庭共识方法和系统 | |
CN110784346B (zh) | 一种基于信誉值的pbft共识系统及方法 | |
US10833919B2 (en) | Node device operation method, work status switching apparatus, node device, and medium | |
US20230092484A1 (en) | Block chain-based block consensus method and related device | |
EP3848844A1 (en) | Method and apparatus for data synchronization of multiple nodes, and computer device | |
CN111131209B (zh) | 一种改进的高效共识方法、系统、计算机设备及存储介质 | |
JP2020512708A (ja) | 分散システム、メッセージ処理方法、ノード、クライアント及び記憶媒体 | |
CN112600678B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
Li et al. | An extensible consensus algorithm based on PBFT | |
Abraham et al. | Efficient synchronous byzantine consensus | |
CN111683118B (zh) | 基于区块链的共识方法、装置、主节点设备及从节点设备 | |
CN111582843A (zh) | 一种基于聚合签名的区块链隐私交易方法 | |
CN113783699B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN112597241A (zh) | 一种基于区块链的分布式数据库存储方法及系统 | |
Wang et al. | Byzantine fault tolerant algorithm based on vote | |
CN109919760A (zh) | 基于投票机制的拜占庭容错共识算法 | |
He et al. | An improvement of consensus fault tolerant algorithm applied to alliance chain | |
CN114936253A (zh) | 区块链的共识方法及装置、电子设备、存储介质 | |
CN113157450B (zh) | 在区块链系统中执行区块的方法及装置 | |
CN114140233A (zh) | 分片区块链安全跨片视图转换方法及装置 | |
CN111970370B (zh) | 基于面向通信设备体系的多层区块链协议拓展系统及方法 | |
CN112994891A (zh) | 一种基于门限签名的交易请求共识方法和系统 | |
CN116232893A (zh) | 分布式系统的共识方法、装置、电子设备及存储介质 | |
CN110555764A (zh) | 一种去中心化环境下区块链达成一致性的方法及系统 | |
CN114499874A (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 |