CN112532396A - 一种基于聚合签名的优化拜占庭容错方法及存储介质 - Google Patents
一种基于聚合签名的优化拜占庭容错方法及存储介质 Download PDFInfo
- Publication number
- CN112532396A CN112532396A CN202011410221.8A CN202011410221A CN112532396A CN 112532396 A CN112532396 A CN 112532396A CN 202011410221 A CN202011410221 A CN 202011410221A CN 112532396 A CN112532396 A CN 112532396A
- Authority
- CN
- China
- Prior art keywords
- node
- signature
- view
- message
- prepare
- 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.)
- Pending
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/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
- H04L9/3239—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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明涉及区块链技术领域,公开了一种基于聚合签名的优化拜占庭容错方法及存储介质,其方法包括:S1、Pre‑Prepare阶段:主节点收集交易内存池中的交易,将交易打包成区块并广播给各个副本节点共识;S2、Prepare阶段:所有的副本节点收到主节点发送过来的Pre‑Prepare消息后,将给主节点回发一条Prepare消息;S3、Commit阶段:主节点会对每个Prepare信息进行验证,验证副本节点签名并将验证通过的签名通过BLS签名聚合成一个签名,将该聚合签名以及其他必要信息广播给其他所有副本节点验证;副本节点根据接收到的Commit消息,验证无误后则将该区块链接到区块链的链尾完成同步。解决目前拜占庭容错协议不适用于大规模的节点共识的问题。
Description
技术领域
本发明涉及区块链技术领域,具体而言,涉及一种基于聚合签名的优化拜占庭容错方法及存储介质。
背景技术
区块链技术近年来由于区块链底层技术的创新及一些业务场景的落地得到了全世界范围的关注。按照区块链开放程度和应用场景来进行划分,主要分为三大类:私有链(Private Blockchain),公有链(Public Blockchain),联盟链(Consortium Blockchain)。私有链是指权限仅在一个组织或机构范围内的区块链,一般用于某个中心化机构,私链的共识算法运用的是传统分布式系统里的共识算法,主要代表的共识算法有Paxos、Raft等,这类公式算法不会考虑拜占庭容错问题,一般只考虑因为节点自身以及网络原因导致的故障(例如节点宕机、网络故障等因素),而不考虑集群中会有恶意节点的情况。而公有链在这三种类别的链中属于去中心化程度最高的链,耳熟能详的公有链包括比特币、以太坊等,公有链允许每个参与者查看链上的信息,公有链最著名的共识算法为PoW(工作量证明,Proofof Work),而PoW这种共识算法有浪费能源、性能低下的缺点。而联盟链指的是由一定数量的组织和机构通过联盟的方式而构建的一条链,仅对特定的组织和机构开放,最著名的项目有由多家国际银行和金融机构组成的区块链联盟R3和IBM的超级账本(HyperLeger),联盟链最常用的共识算法为PBFT(Practical Byzantine Fault Tolerance)共识算法,不同于Paxos、Raft算法,PBFT算法会考虑分布式系统中有恶意节点的情况,即使某条联盟链由多个信用极高、名气极高的组织、机构组成,也不能排除节点作恶的情况。
现有的PBFT算法主要为了解决拜占庭容错问题,假设网络中作恶节点数量最多为f,通过数学理论证明了网络中节点数量n大于3f的情况下,共识能在分布式网络中达成,即n≥3f+1的情况下达成共识,PBFT算法能容忍不超过1/3的拜占庭节点。PBFT算法为了达成数据的一致性采用了多阶段交互的方式,而在一轮共识的过程整个网络达到O(n2)的通信复杂度,此处n为参与共识的节点数量。因此实用拜占庭容错协议的缺点在于不适用于大规模的节点共识,因为随着节点规模的增大,达成共识需要的时间大大增加,不符合效率需求,整个网络的通信复杂度会随着节点的增加而呈平方级增大,可扩展性较差。
发明内容
本发明的主要目的在于提供一种基于聚合签名的优化拜占庭容错方法及存储介质,以解决目前实用拜占庭容错协议不适用于大规模的节点共识的问题。
为了实现上述目的,本发明提供了如下技术:
一种基于聚合签名的优化拜占庭容错方法,包括步骤:
S1、Pre-Prepare阶段:主节点收集交易内存池中的交易,将交易打包成区块并广播给各个副本节点共识;
S2、Prepare阶段:所有的副本节点收到主节点发送过来的Pre-Prepare消息后,将给主节点回发一条Prepare消息;
S3、Commit阶段:主节点会对每个Prepare信息进行验证,验证通过则收集起来,验证副本节点签名并将验证通过的签名通过BLS签名聚合成一个签名,广播一条Commit消息;副本节点根据接收到的Commit消息,利用参与签名的节点的公钥进行验证该签名是否正确,验证无误后则将该区块链接到区块链的链尾完成同步。
进一步地,在步骤S1中,主节点广播的一条消息为Pre-Prepare消息,Pre-Prepare消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,即区块哈希值,block则为整个区块的内容,包括了所收集的交易及所有交易的签名。
进一步地,步骤S2中,所有的副本节点会对接收到主节点发送的Pre-Prepare消息进行验证,检查区块高度、视图和摘要以及签名的合法性,验证完毕后会对其中的所有交易进行验证。
进一步地,在步骤2中,副本节点给主节点回发的一条Prepare消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,i代表副本节点id。
进一步地,在步骤S3中,主节点在此阶段一直会监听各个副本节点发送过来的Prepare信息。
进一步地,在步骤S3中,广播的一条Commit消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,aggrsignature代表聚合之后合成的签名,node代表的是参与该聚合签名的所有副本节点的id列表。
进一步地,还包括步骤S4、Finish阶段:在此阶段会有一个超时时间t,如果在超时时间t之前下一轮主节点已经收到多于一半的Finish信息,证明大多数节点已经就绪,则提前进入下一个区块的共识过程。
进一步地,还包括视图切换协议的改变,视图切换协议用于两种情况:1、主节点故意不应答;2、主节点由于宕机或作恶,没有在规定时间内发起本轮共识操作或者在Commit阶段超时没有回应,使本轮无法完成共识。
进一步地,主节点异常时视图切换流程包括步骤:
S10、View-Change阶段:在视图v下,各个副本节点在指定时间t之内没有收到主节点的响应,认为主节点发生故障,则发起视图变换请求,将旧视图的编号自增v=v+1,根据视图编号选择下一轮共识新的主节点,封装View-Change消息以及当前进行的区块高度、节点编号、消息签名发送给下一轮共识的主节点;
S20、New-View阶段:此时下一轮共识的主节点会不断监听各个副本节点发来的View-Change消息,对View-change消息进行验证,验证各个副本节点发来的消息中的视图以及高度是否一致;验证这批消息的签名和信息的正确性,统一高度和视图,通过BLS聚合签名将验证通过后的签名聚合成一个聚合签名,封装New-View消息,广播给各个副本节点;
S30、New-View-Ack阶段:各个副本节点收到主节点发来的New-View消息后,对聚合签名进行验证,验证完毕后对下一轮的主节点发送一个New-View-Ack消息,表示验证通过,而下一轮的主节点开始打包区块,开始新一轮的区块共识。
一种基于聚合签名的优化拜占庭容错存储介质,存储有可执行指令,用于引起处理器执行时,实现上述任意所述的区块链聚合签名的拜占庭容错方法。
与现有技术相比较,本发明能够带来如下技术效果:
1、Pre-Prepare阶段、Prepare阶段和Commit阶段,以及Finish阶段,在这四阶段,通信的消息总量为n-1+n-1+n-1+n-2=4n-5个,而原先PBFT算法共识流程中的三阶段消息总量为n-1+(n-1)2+n*(n-1)=2n2-2n个,使网络的通信量从节点数的平方级O(n2)降低到线性O(n),大大减少了网络的通信量,使得拜占庭容错算法在实际系统应用中变得可行。以解决目前实用拜占庭容错协议不适用于大规模的节点共识的问题。
2、本发明的ABFT算法采用主节点收集各个副本节点发送的签名,再对验证通过的签名进行聚合,聚合后的签名大小与单个签名大小一致,仅需33字节,非常节约空间,也不会给网络的通信带来负担。
3、由于ABFT算法比较依赖主节点,为了防止主节点权力太大导致作恶、故意不应答的情况,所以我们也必须做出一些改进,本发明改进了视图切换协议。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,使得本发明的其它特征、目的和优点变得更明显。本发明的示意性实施例附图及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明一种基于聚合签名的优化拜占庭容错方法的流程图;
图2是本发明一种基于聚合签名的优化拜占庭容错方法共识过程的示意图;
图3是本发明一种基于聚合签名的优化拜占庭容错方法主节点异常时视图切换流程示意图;
图4是PBFT算法共识过程的示意图;
图5是本发明一种基于聚合签名的优化拜占庭容错方法聚合n个签名所花费的时间示意图;
图6是本发明一种基于聚合签名的优化拜占庭容错方法验证由n个签名聚合而成的聚合签名所花费的时间示意图
图7是本发明一种基于聚合签名的优化拜占庭容错方法和PBFT算法共识时延对比示意图;
图8是本发明一种基于聚合签名的优化拜占庭容错方法和PBFT算法交易吞吐量对比示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本发明中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本发明及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本发明中的具体含义。
另外,术语“多个”的含义应为两个以及两个以上。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
实施例1
如图1、2和3所示,一种基于聚合签名的优化拜占庭容错方法(Aggregate-Signature Byzantine Fault Tolerance,ABFT),包括步骤:
S1、Pre-Prepare阶段:主节点收集交易内存池中的交易,将交易打包成区块并广播给各个副本节点共识;在步骤S1中,主节点广播的一条消息为Pre-Prepare消息,Pre-Prepare消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,即区块哈希值,block则为整个区块的内容,包括了所收集的交易及所有交易的签名。
S2、Prepare阶段:所有的副本节点收到主节点发送过来的Pre-Prepare消息后,将给主节点回发一条Prepare消息;步骤S2中,所有的副本节点会对接收到主节点发送的Pre-Prepare消息进行验证,检查区块高度、视图和摘要以及签名的合法性,验证完毕后会对其中的所有交易进行验证。
在步骤2中,副本节点给主节点回发的一条Prepare消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,i代表副本节点id。
S3、Commit阶段:主节点会对每个Prepare信息进行验证,验证通过则收集起来,验证副本节点签名并将验证通过的签名通过BLS签名聚合成一个签名,广播一条Commit消息;副本节点根据接收到的Commit消息,利用参与签名的节点的公钥进行验证该签名是否正确,验证无误后则将该区块链接到区块链的链尾完成同步。
在步骤S3中,主节点在此阶段一直会监听各个副本节点发送过来的Prepare信息。
在步骤S3中,广播的一条Commit消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,aggrsignature代表聚合之后合成的签名,node代表的是参与该聚合签名的所有副本节点的id列表。
还包括步骤S4、Finish阶段:在此阶段会有一个超时时间t,如果在超时时间t之前下一轮主节点已经收到多于一半的Finish信息,证明大多数节点已经就绪,则提前进入下一个区块的共识过程。
还包括视图切换协议的改变,视图切换协议用于两种情况:1、主节点故意不应答;2、主节点由于宕机或作恶,没有在规定时间内发起本轮共识操作或者在Commit阶段超时没有回应,使本轮无法完成共识。
主节点异常时视图切换流程包括步骤:
S10、View-Change阶段:在视图v下,各个副本节点在指定时间t之内没有收到主节点的响应,认为主节点发生故障,则发起视图变换请求,将旧视图的编号自增v=v+1,根据视图编号选择下一轮共识新的主节点,封装View-Change消息以及当前进行的区块高度、节点编号、消息签名发送给下一轮共识的主节点;
S20、New-View阶段:此时下一轮共识的主节点会不断监听各个副本节点发来的View-Change消息,对View-change消息进行验证,验证各个副本节点发来的消息中的视图以及高度是否一致;验证这批消息的签名和信息的正确性,统一高度和视图,通过BLS聚合签名将验证通过后的签名聚合成一个聚合签名,封装New-View消息,广播给各个副本节点;
S30、New-View-Ack阶段:各个副本节点收到主节点发来的New-View消息后,对聚合签名进行验证,验证完毕后对下一轮的主节点发送一个New-View-Ack消息,表示验证通过,而下一轮的主节点开始打包区块,开始新一轮的区块共识。
一种基于聚合签名的优化拜占庭容错存储介质,存储有可执行指令,用于引起处理器执行时,实现上述任意所述的区块链聚合签名的拜占庭容错方法。
实施例2
如图1、2、3和4所示,BLS签名算法是一种可以实现集合多个签名的算法,可以将区块中的所有签名聚合成一个,容易实现m-n多重签名,也可以避免签名者之间的多余通信。通过聚合签名,主节点可以聚合其他节点的签名,而副本节点收到主节点包含聚合签名的信息后,可以一次性地对合并后的签名进行再次验证。运用BLS签名算法,可以很好地解决PBFT算法通信复杂度太高的问题。
BLS签名算法主要依赖于也称双线性映射(Bilinear maps)函数,需要对配对函数有一定的理解。在这里做简单的介绍,定义配对函数e(P,Q),P和Q为一条曲线(或两条不同的曲线)的两个点,配对函数对曲线上的运算满足分配律、交换律、结合律。
假设要签署的消息为m,G为曲线上的一个生成点,私钥为pk,则公钥为P=pk*G。在BLS签名算法中,需要用到新型散列函数,新型散列函数的结果是椭圆曲线上的一个点,而不同于一般散列函数得到的结果是数值。为了得到签名,首先将消息m映射为曲线上的一个点H,签名S=pk*H。验证签名可以通过验证e(P,H)是否等于e(G,S),由于配对函数满足分配律、交换律、结合律,故证明如下:
e(G,S)=e(G,pk*H)=e(pk*G,H)=e(P,H)
本文的ABFT算法采用主节点收集各个副本节点发送的签名,再对验证通过的签名进行聚合,聚合后的签名大小与单个签名大小一致,仅需33字节,非常节约空间。对于签名的聚合操作,假设要聚合100个节点的签名,以Pi代表第i个节点的公钥,以Si代表第i个节点的签名,每个签名都是不同节点的密钥对对同一个消息的签名。根据运算,聚合签名只是所有签名的总和,以S代表聚合签名S=S1+S2+…+S100,根据上面的证明,要对聚合签名进行验证,可以通过验证e(G,S)是否等于e(P1,H)*e(P2,H)*…*e(P100,H),根据配对函数的特征,则对聚合签名的验证如下:
e(G,S)=e(G,S1+S2+…+S100)=e(G,S1)*e(G,S2)*…*e(G,S100)
=e(G,pk1*H)*e(G,pk2*H)*…*e(pk100*H)
=e(P1,H)*e(P2,H)*…*e(P100,H)
S1、Pre-Prepare阶段:主节点的主要职责是收集交易内存池中的交易,将交易打包成区块并广播给各个副本节点共识。主节点广播一条<Pre-Prepare,h,v,d,block,s>消息给其他节点,其中Pre-Prepare代表这是一条Pre-Prepare消息,h代表区块高度,v代表视图编号,d代表block的摘要,即区块哈希值,block则为整个区块的内容,包括了所收集的交易及所有交易的签名。
S2、Prepare阶段:所有的副本节点收到主节点发送过来的Pre-Prepare消息后,首先会对该消息进行验证,检查摘要、区块高度、视图以及签名的合法性,验证完毕后会对其中的所有交易进行验证,验证无误后在准备阶段发送一条<PREPARE,h,v,d,i>给主节点,与原PBFT算法略有不同的是,这里节点的发送方式不再是广播,而是只将签名后的信息发送给主节点,通过这种方式缩少通信的消息量。
S3、Commit阶段:主节点在此阶段一直会监听各个副本节点发送过来的Prepare信息,主节点会对每个Prepare信息进行验证,验证通过则收集起来。一旦主节点收集到2f+1个签名,验证这批签名并将验证通过的签名通过BLS签名聚合成一个签名,广播一条<COMMIT,h,v,d,aggrsignature,node>消息,这里的aggrsignature就是聚合之后合成的签名,node指的是参与该聚合签名的所有节点的id列表,方便后面收到该消息的节点能利用参与签名的节点的公钥进行验证该签名是否正确,此时各节点收到主节点的聚合签名后,验证无误则将该区块链接到区块链的链尾完成同步。
S4、Finish阶段:在三阶段的基础上加入了第四个阶段-Finish阶段,这阶段的主要目的是进行最终确认,也是为了将信息发送给下一轮的主节点,防止下一轮的主节点预先进入下一轮的Pre-Prepare阶段,而其他的副本节点却未就绪的情况。在此阶段会有一个超时时间t,如果在超时时间t之前下一轮主节点已经收到多于一半的Finish信息,证明大多数节点已经就绪,可以提前进入下一个区块的共识过程。在这四阶段,通信的消息总量n-1+n-1+n-1+n-2=4n-5个,而原先三阶段的消息总量为n-1+(n-1)2+n*(n-1)=2n2-2n个,使网络的通信量从节点数的平方级O(n2)降低到线性O(n),大大减少了网络的通信量,使得拜占庭容错算法在实际系统应用中变得可行。
由于基于聚合签名的优化拜占庭容错方法比较依赖主节点,为了防止主节点权力太大导致作恶、故意不应答的情况,所以我们也必须做出一些改进。本文改进了视图切换协议,视图切换协议主要用于两种情况:
(1)主节点发来的区块信息有误(包括伪造交易或者签名),诚实的节点会根据帐号的公钥去验证消息的正确性,根据本文所改进的四阶段共识协议,若要对恶意消息达成一致性,至少需要超过n/3的恶意节点。所以归根到底其实更重要的是考虑主节点故意不应答的情况。
(2)主节点由于宕机或作恶,没有在规定时间内发起本轮共识操作或者在Commit阶段超时没有回应,使本轮无法完成共识。
针对情况2,如若主节点在规定时间内没有作出指定的操作和回应,则需要更换主节点使整个网络对区块的共识流程正常进行,此时主节点有可能使恶意的节点,故意破坏整个共识网络,也有可能仅仅是节点宕机了。
S10、View-Change阶段:在视图v下,各个副本节点在指定时间t之内没有收到主节点的响应,认为主节点发生故障,则发起视图变换请求,将旧视图的编号自增v=v+1,根据视图编号选择下一轮共识新的主节点,封装View-Change消息以及节点编号、消息签名<<View-Change,v,h>,i,s>发送给下一轮共识的主节点,h为当前进行的区块高度,i为节点编号,s为该副本节点对View-Change消息的签名。
S20、New-View阶段:此时下一轮共识的主节点会不断监听各个副本节点发来的View-Change消息,对View-change消息进行验证,验证各个副本节点发来的消息中的视图以及高度是否一致。收集到2f+1个消息后,验证这批消息的签名和信息的正确性,统一高度和视图,通过BLS聚合签名将验证通过后的签名聚合成一个聚合签名,封装New-View消息<New-view,v,h,aggrsignature,node>广播给各个副本节点,这里的aggrsignature同样就是聚合之后合成的签名,node指的是参与该聚合签名的所有节点的id列表,方便各个副本节点验证。
S30、New-View-Ack阶段:各个副本节点收到主节点发来的New-View消息后,对聚合签名进行验证,验证完毕后对下一轮的主节点发送一个New-View-Ack消息,表示验证通过,而下一轮的主节点开始打包区块,开始新一轮的区块共识。
实施例3
基于聚合签名的优化拜占庭容错方法ABFT算法实施方案:
为了验证本文改进后的ABFT算法的效率,基于Golang语言实现了ABFT算法,采用多机器多节点模拟共识进行,本次实验在1台Intel Xeon(Cascade Lake)Platinum8269CY@2.5GHz/3.2GHz、32v CPU、32G内存、操作系统为CentOS 7.6 64位的云服务器上进行。帐号体系用与比特币一致的secp256k1签名方案,而区块链节点间的公私钥和签名采用的是BLS签名方案。实验中每个区块设置1000笔交易,在该系统中对PBFT算法和本文提出的ABFT算法进行了验证,从共识时延、吞吐量等方面对PBFT算法和ABFT算法进行分析,另外还从聚合签名时延和验证聚合签名时延方面进行实验,证实结合BLS签名并不会带来额外的开销,且有利于维持较高的吞吐量以及从一定程度上减少共识时延。
聚合签名时延和验证聚合签名时延:
由于基于聚合签名的优化拜占庭容错方法ABFT算法利用到了BLS聚合签名,需要详细分析聚合签名所花费的时间以及验证聚合签名所花费的时间,了解其是否会影响整个共识过程的性能,这里的聚合签名时延和验证聚合签名时延分别指的是从聚合开始到聚合成一个聚合签名所花费的时间、从验证聚合签名开始到验证完毕所花费的时间。我们使用Golang的Benchmark对聚合签名函数和验证聚合签名函数进行性能基准测试和压力测试,发现聚合签名和验证聚合签名花费的时间并不多,且耗时随着节点的增多而线性增加,并不会指数级增加,非常适用于联盟链多节点的共识中。
如图5所示,对于聚合签名,模拟了n个签名进行聚合,对于每一个签名,我们使用的是不同的公私钥进行签署。分别模拟了50、100、150、200、250、300、350、400、450、500个签名的聚合,对聚合签名函数进行了性能测试。聚合签名的时延非常短,仅随着节点的增大而线形缓慢增加,聚合500个签名仅需花费0.0001秒,故这一部分基本不会耗费太多的时间和性能。
对于验证聚合签名,本文同样通过Golang的Benchmark进行压力测试,通过先聚合50、100、150、200、250、300、350、400、450、500个签名,再用这50、100、150、200、250、300、350、400、450、500个签名所对应的公钥组对聚合过后的签名进行验证,从而得知验证聚合签名的开销。
如图6所示,可以发现验证聚合签名的正确性所花的时间比聚合n个签名所花的时间要多,但仍不足以影响到整个网络的性能,验证一个由500个签名聚合而成的聚合签名仅需要0.012秒,故聚合签名非常适用于多节点的共识中。通过实验可以了解到结合聚合签名去改进PBFT共识算法不仅不会造成整个网络耗时的大幅增加,而且有效地改进了原PBFT算法全广播所造成的通信开销,有效地解决PBFT算法在节点增加的情况下性能快速下降的问题,有利于提升整个网络的可扩展性。
共识时延:
共识时延是指主节点打包完区块并发起网络共识到确认区块完成共识的时间间隔。实验的设计是每个区块打包1000笔交易,分别测试在5、10、15、20、25、30、35、40个节点参与共识的情况下每个区块完成的时间,通过多次测试求平均值,得出实验结果。
如图7所示,可以发现,随着参与网络共识节点的增多,ABFT算法明显优于PBFT算法,完成一个区块的共识所需的时间并不会随着节点的增多而急剧增大,相对来说ABFT算法共识时延比较稳定,而PBFT算法共识时延随着节点的增多而快速增加,因此ABFT算法的可扩展性明显优于PBFT算法,基于聚合签名的优化拜占庭容错方法很适用于多节点的联盟链中。
吞吐量:
交易吞吐量是指一个单位时间内系统处理交易的数量,用于衡量系统处理交易的能力。区块链常用每秒交易数(TPS)来表示,这个指标也经常用于检测系统的性能。
如图8所示,可以发现,ABFT算法和PBFT算法的吞吐量都是随着参与网络共识节点的增多而下降,而ABFT算法下降趋势变缓,曲线会逐渐走平,而且交易吞吐量依旧维持在较高的水平,参与网络共识节点数量的增加对其的影响不会很大。而PBFT算法的吞吐量随着参与网络共识节点数量的增加,吞吐量快速下滑,从图中可以看出ABFT算法的性能是明显优于PBFT算法的,。
与现有技术相比较,本发明能够带来如下技术效果:
1、Pre-Prepare阶段、Prepare阶段和Commit阶段,以及Finish阶段,在这四阶段,通信的消息总量为n-1+n-1+n-1+n-2=4n-5个,而原先PBFT算法共识流程中的三阶段消息总量为n-1+(n-1)2+n*(n-1)=2n2-2n个,使网络的通信量从节点数的平方级O(n2)降低到线性O(n),大大减少了网络的通信量,使得拜占庭容错算法在实际系统应用中变得可行。以解决目前实用拜占庭容错协议不适用于大规模的节点共识的问题。
2、本发明的ABFT算法采用主节点收集各个副本节点发送的签名,再对验证通过的签名进行聚合,聚合后的签名大小与单个签名大小一致,仅需33字节,非常节约空间,也不会给网络的通信带来负担。
3、由于ABFT算法比较依赖主节点,为了防止主节点权力太大导致作恶、故意不应答的情况,所以我们也必须做出一些改进,本发明改进了视图切换协议。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.基于聚合签名的优化拜占庭容错方法,其特征在于,包括步骤:
S1、Pre-Prepare阶段:主节点收集交易内存池中的交易,将交易打包成区块并广播给各个副本节点共识;
S2、Prepare阶段:所有的副本节点收到主节点发送过来的Pre-Prepare消息后,将给主节点回发一条Prepare消息;
S3、Commit阶段:主节点会对每个Prepare信息进行验证,验证通过则收集起来,验证副本节点签名并将验证通过的签名通过BLS签名聚合成一个签名,广播一条Commit消息;副本节点根据接收到的Commit消息,利用参与签名的节点的公钥进行验证该签名是否正确,验证无误后则将该区块链接到区块链的链尾完成同步。
2.如权利要求1所述的一种基于聚合签名的优化拜占庭容错方法,其特征在于,在步骤S1中,主节点广播的一条消息为Pre-Prepare消息,Pre-Prepare消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,即区块哈希值,block则为整个区块的内容,包括了所收集的交易及所有交易的签名。
3.如权利要求1或2所述的一种基于聚合签名的优化拜占庭容错方法,其特征在于,步骤S2中,所有的副本节点会对接收到主节点发送的Pre-Prepare消息进行验证,检查区块高度、视图和摘要以及签名的合法性,验证完毕后会对其中的所有交易进行验证。
4.如权利要求3所述的一种基于聚合签名的优化拜占庭容错方法,其特征在于,在步骤2中,副本节点给主节点回发的一条Prepare消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,i代表副本节点id。
5.如权利要求1或4所述的一种基于聚合签名的优化拜占庭容错方法,其特征在于,在步骤S3中,主节点在此阶段一直会监听各个副本节点发送过来的Prepare信息。
6.如权利要求5所述的一种基于聚合签名的优化拜占庭容错方法,其特征在于,在步骤S3中,广播的一条Commit消息包括:h代表区块高度,v代表视图编号,d代表block的摘要,aggrsignature代表聚合之后合成的签名,node代表的是参与该聚合签名的所有副本节点的id列表。
7.如权利要求1或6所述的一种基于聚合签名的优化拜占庭容错方法,其特征在于,还包括步骤S4、Finish阶段:在此阶段会有一个超时时间t,如果在超时时间t之前下一轮主节点已经收到多于一半的Finish信息,证明大多数节点已经就绪,则提前进入下一个区块的共识过程。
8.如权利要求7所述的一种基于聚合签名的优化拜占庭容错方法,其特征在于,还包括视图切换协议的改变,视图切换协议用于两种情况:1、主节点故意不应答;2、主节点由于宕机或作恶,没有在规定时间内发起本轮共识操作或者在Commit阶段超时没有回应,使本轮无法完成共识。
9.如权利要求8所述的一种基于聚合签名的优化拜占庭容错方法,其特征在于,主节点异常时视图切换流程包括步骤:
S10、View-Change阶段:在视图v下,各个副本节点在指定时间t之内没有收到主节点的响应,认为主节点发生故障,则发起视图变换请求,将旧视图的编号自增v=v+1,根据视图编号选择下一轮共识新的主节点,封装View-Change消息以及当前进行的区块高度、节点编号、消息签名发送给下一轮共识的主节点;
S20、New-View阶段:此时下一轮共识的主节点会不断监听各个副本节点发来的View-Change消息,对View-change消息进行验证,验证各个副本节点发来的消息中的视图以及高度是否一致;验证这批消息的签名和信息的正确性,统一高度和视图,通过BLS聚合签名将验证通过后的签名聚合成一个聚合签名,封装New-View消息,广播给各个副本节点;
S30、New-View-Ack阶段:各个副本节点收到主节点发来的New-View消息后,对聚合签名进行验证,验证完毕后对下一轮的主节点发送一个New-View-Ack消息,表示验证通过,而下一轮的主节点开始打包区块,开始新一轮的区块共识。
10.一种基于聚合签名的优化拜占庭容错存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1-9任意所述的区块链聚合签名的拜占庭容错方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011410221.8A CN112532396A (zh) | 2020-12-04 | 2020-12-04 | 一种基于聚合签名的优化拜占庭容错方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011410221.8A CN112532396A (zh) | 2020-12-04 | 2020-12-04 | 一种基于聚合签名的优化拜占庭容错方法及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112532396A true CN112532396A (zh) | 2021-03-19 |
Family
ID=74998511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011410221.8A Pending CN112532396A (zh) | 2020-12-04 | 2020-12-04 | 一种基于聚合签名的优化拜占庭容错方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112532396A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113596115A (zh) * | 2021-07-12 | 2021-11-02 | 中债金科信息技术有限公司 | 一种应用基于pbft优化实现多节点高性能协议的网络 |
CN113630258A (zh) * | 2021-10-09 | 2021-11-09 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN113890744A (zh) * | 2021-10-04 | 2022-01-04 | 杭州复杂美科技有限公司 | 聚合签名共识方法、计算机设备和存储介质 |
CN113922864A (zh) * | 2021-10-09 | 2022-01-11 | 郑州大学 | 一种基于拜占庭共识的多层卫星网络安全保障方法 |
CN113949518A (zh) * | 2021-10-18 | 2022-01-18 | 甘肃同兴智能科技发展有限责任公司 | 一种提高区块链吞吐量的共识方法及系统 |
CN114553434A (zh) * | 2021-10-09 | 2022-05-27 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN114726881A (zh) * | 2022-04-12 | 2022-07-08 | 北京理工大学 | 区块处理方法、装置及存储介质 |
CN115567228A (zh) * | 2022-12-07 | 2023-01-03 | 北京邮电大学 | 数据传输方法、装置、电子设备和存储介质 |
CN117202183A (zh) * | 2023-09-13 | 2023-12-08 | 北京航空航天大学 | 一种基于同步拜占庭容错的轻量级5g设备群组认证方法 |
CN117408718A (zh) * | 2023-12-14 | 2024-01-16 | 南京邮电大学 | 一种面向大规模医药溯源的pbft优化方法 |
CN117978547A (zh) * | 2024-03-29 | 2024-05-03 | 华东交通大学 | Trp-pbft共识方法、系统、存储介质及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109360100A (zh) * | 2018-11-13 | 2019-02-19 | 北京航空航天大学 | 基于区块链技术的交易快速确认方法及装置 |
US20190075022A1 (en) * | 2016-10-28 | 2019-03-07 | International Business Machines Corporation | Changing an existing blockchain trust configuration |
CN110300172A (zh) * | 2019-06-28 | 2019-10-01 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN110941859A (zh) * | 2018-09-21 | 2020-03-31 | 上海派链信息科技有限公司 | 用于区块链形成共识的方法、设备、计算机可读存储介质和计算机程序产品 |
CN110943838A (zh) * | 2018-09-21 | 2020-03-31 | 上海派链信息科技有限公司 | 区块链网络中确定区块的共识的方法、设备和存储介质 |
CN111612455A (zh) * | 2020-04-21 | 2020-09-01 | 国网江苏省电力有限公司电力科学研究院 | 一种面向用电信息保护的拜占庭容错联盟链共识方法及其系统、存储介质 |
-
2020
- 2020-12-04 CN CN202011410221.8A patent/CN112532396A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190075022A1 (en) * | 2016-10-28 | 2019-03-07 | International Business Machines Corporation | Changing an existing blockchain trust configuration |
CN110941859A (zh) * | 2018-09-21 | 2020-03-31 | 上海派链信息科技有限公司 | 用于区块链形成共识的方法、设备、计算机可读存储介质和计算机程序产品 |
CN110943838A (zh) * | 2018-09-21 | 2020-03-31 | 上海派链信息科技有限公司 | 区块链网络中确定区块的共识的方法、设备和存储介质 |
CN109360100A (zh) * | 2018-11-13 | 2019-02-19 | 北京航空航天大学 | 基于区块链技术的交易快速确认方法及装置 |
CN110300172A (zh) * | 2019-06-28 | 2019-10-01 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN111612455A (zh) * | 2020-04-21 | 2020-09-01 | 国网江苏省电力有限公司电力科学研究院 | 一种面向用电信息保护的拜占庭容错联盟链共识方法及其系统、存储介质 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113596115B (zh) * | 2021-07-12 | 2023-05-26 | 中债金科信息技术有限公司 | 一种应用基于pbft优化实现多节点高性能协议的网络系统 |
CN113596115A (zh) * | 2021-07-12 | 2021-11-02 | 中债金科信息技术有限公司 | 一种应用基于pbft优化实现多节点高性能协议的网络 |
CN113890744A (zh) * | 2021-10-04 | 2022-01-04 | 杭州复杂美科技有限公司 | 聚合签名共识方法、计算机设备和存储介质 |
CN113630258A (zh) * | 2021-10-09 | 2021-11-09 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN113630258B (zh) * | 2021-10-09 | 2022-01-11 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN113922864A (zh) * | 2021-10-09 | 2022-01-11 | 郑州大学 | 一种基于拜占庭共识的多层卫星网络安全保障方法 |
CN114553434A (zh) * | 2021-10-09 | 2022-05-27 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN114553434B (zh) * | 2021-10-09 | 2024-03-12 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN113922864B (zh) * | 2021-10-09 | 2023-07-28 | 郑州大学 | 一种基于拜占庭共识的多层卫星网络安全保障方法 |
CN113949518A (zh) * | 2021-10-18 | 2022-01-18 | 甘肃同兴智能科技发展有限责任公司 | 一种提高区块链吞吐量的共识方法及系统 |
CN113949518B (zh) * | 2021-10-18 | 2024-05-28 | 甘肃同兴智能科技发展有限责任公司 | 一种提高区块链吞吐量的共识方法及系统 |
CN114726881A (zh) * | 2022-04-12 | 2022-07-08 | 北京理工大学 | 区块处理方法、装置及存储介质 |
CN115567228B (zh) * | 2022-12-07 | 2023-03-24 | 北京邮电大学 | 数据传输方法、装置、电子设备和存储介质 |
CN115567228A (zh) * | 2022-12-07 | 2023-01-03 | 北京邮电大学 | 数据传输方法、装置、电子设备和存储介质 |
CN117202183A (zh) * | 2023-09-13 | 2023-12-08 | 北京航空航天大学 | 一种基于同步拜占庭容错的轻量级5g设备群组认证方法 |
CN117202183B (zh) * | 2023-09-13 | 2024-03-12 | 北京航空航天大学 | 一种基于同步拜占庭容错的轻量级5g设备群组认证方法 |
CN117408718A (zh) * | 2023-12-14 | 2024-01-16 | 南京邮电大学 | 一种面向大规模医药溯源的pbft优化方法 |
CN117408718B (zh) * | 2023-12-14 | 2024-03-08 | 南京邮电大学 | 一种面向大规模医药溯源的pbft优化方法 |
CN117978547A (zh) * | 2024-03-29 | 2024-05-03 | 华东交通大学 | Trp-pbft共识方法、系统、存储介质及设备 |
CN117978547B (zh) * | 2024-03-29 | 2024-06-07 | 华东交通大学 | Trp-pbft共识方法、系统、存储介质及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112532396A (zh) | 一种基于聚合签名的优化拜占庭容错方法及存储介质 | |
Hong et al. | Pyramid: A layered sharding blockchain system | |
CN109151013B (zh) | 基于联盟区块链的物流业信息平台 | |
CN109447795B (zh) | 一种支持快速达成最终确认性的拜占庭共识方法 | |
US20180308091A1 (en) | Fairness preserving byzantine agreements | |
Amir et al. | Steward: Scaling byzantine fault-tolerant replication to wide area networks | |
CN109189751A (zh) | 基于区块链的数据同步方法及终端设备 | |
Chen et al. | An improved algorithm for practical byzantine fault tolerance to large-scale consortium chain | |
Tang et al. | Improved PBFT algorithm for high-frequency trading scenarios of alliance blockchain | |
CN109981565B (zh) | 基于Meta-BFT共识机制的区块链平台及实现方法 | |
CN112907082B (zh) | 一种区块链共识算法评估优化方法 | |
Yu et al. | Improved blockchain consensus mechanism based on PBFT algorithm | |
CN114050904B (zh) | 一种基于两层级领导节点分片结构的共识系统及方法 | |
Wang et al. | Byzantine fault tolerant algorithm based on vote | |
He et al. | An improvement of consensus fault tolerant algorithm applied to alliance chain | |
CN109919760A (zh) | 基于投票机制的拜占庭容错共识算法 | |
CN114499890A (zh) | 联盟链中基于节点分组的Raft PBFT两阶段共识机制 | |
CN114328133A (zh) | 单机构分布式冲突检测方法、系统和存算分离架构 | |
CN113259179A (zh) | 一种基于节点评分的拜占庭容错共识方法与系统 | |
CN114513510A (zh) | 一种面向许可链的分布式跨链事务中继系统及其通信方法 | |
Liu et al. | CHERUBIM: A secure and highly parallel cross-shard consensus using quadruple pipelined two-phase commit for sharding blockchains | |
US20230409450A1 (en) | Consensus processing method and apparatus for blockchain network | |
Wu et al. | Reinforced practical Byzantine fault tolerance consensus protocol for cyber physical systems | |
CN117370460A (zh) | 基于双链存储的区块链存储优化方法及装置 | |
CN111277636A (zh) | 一种对传统pbft进行改进的共识算法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210319 |
|
RJ01 | Rejection of invention patent application after publication |