CN109685505A - 基于关联环签名的拜占庭容错共识优化方法 - Google Patents
基于关联环签名的拜占庭容错共识优化方法 Download PDFInfo
- Publication number
- CN109685505A CN109685505A CN201811581216.6A CN201811581216A CN109685505A CN 109685505 A CN109685505 A CN 109685505A CN 201811581216 A CN201811581216 A CN 201811581216A CN 109685505 A CN109685505 A CN 109685505A
- Authority
- CN
- China
- Prior art keywords
- message
- node
- view
- prepare
- ring signatures
- 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
Classifications
-
- 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]
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- General Business, Economics & Management (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于关联环签名的拜占庭容错共识优化方法,其包括接收Pre‑Prepare消息并对其进行关联环签名;接收PREPARE消息,并确定发送PREPARE消息的节点为PREPARE消息内公钥环中的成员后,对PREPARE消息进行关联性验证;统计PREPARE消息通过关联性验证的票数加权和M1,若M1大于2F+1,则生成并对COMMIT消息进行关联环签名;接收COMMIT消息,并在确定发送COMMIT消息的节点为主域节点时,对COMMIT消息进行关联性验证;统计COMMIT消息通过关联性验证的票数加权和M2,若M2大于2fp+1时,则将COMMIT消息写入其数据库中。
Description
技术领域
本方案涉及区块链技术,具体涉及一种基于关联环签名的拜占庭容错共识优化方法。
背景技术
共识算法是区块链技术的核心要素,也是近年来分布式系统研究的热点。目前,最广为人知的共识算法当属比特币中使用的工作量证明(PoW)。PoW首次提出时用来解决垃圾邮件问题,后来被中本聪用于比特币当中。PoW从经济学角度实现共识,矿工通过解决数学难题生成区块来记账,生成的区块经过全网广播验证来写入区块链,区块之间通过hash值连接。之后的矿工在最新区块上继续挖矿工作,挖矿产生的比特币奖励让大多数矿工表现良好,而要破环PoW系统,则需要控制全网50%以上的算力,这保证了共识系统的安全性。
PoW的缺点在于挖矿需要消耗大量的电力,比特币网络的电力消耗甚至已经超过了159个国家的消耗量。而当前挖一个区块的时间大约在十分钟,需要六个区块的确认才能保证交易生效,交易的确认时间过长使得该共识算法的应用场景受限。同时,全网算力的集中也将导致安全风险,面临分叉时可能将引起算力竞赛。
在联盟链中,使用最广泛的共识算法是实用拜占庭容错算法(PracticalByzantine Fault Tolerance,PBFT),该算法通过三阶段协议来进行共识过程,当主节点出问题时引发视图切换协议,在新视图中通过重新执行那些账本不一致事务来保证一致性。PBFT算法解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。但由于PBFT算法的三阶段协议需要进行大量通信,这极大限制了PBFT算法的共识性能,导致了PBFT算法无法应用于大规模共识环境。
发明内容
针对现有技术中的上述不足,本发明提供的基于关联环签名的拜占庭容错共识优化方法解决了大规模共识环境下PBFT算法存在的共识性能差的问题,同时保证参与共识用户的投票匿名性。
为了达到上述发明目的,本发明采用的技术方案为:
提供一种基于关联环签名的拜占庭容错共识优化方法,其包括:
S1、主域节点和子域节点接收来自于共识域中的主节点广播的Pre-Prepare消息;
S2、当Pre-Prepare消息中的序号和视图通过验证后,生成PREPARE消息并进行关联环签名,广播至主域中所有主域节点;
S3、主域节点接收PREPARE消息,根据环签名验证确定发送PREPARE消息的节点为PREPARE消息内公钥环中的成员后,对PREPARE消息进行关联性验证;
S4、统计PREPARE消息通过关联性验证的票数加权和M1,若票数加权和M1大于2F+1,则生成COMMIT消息并进行关联环签名,广播至所有节点;
S5、主域节点和子域节点接收COMMIT消息,根据环签名验证确定发送COMMIT消息的节点为主域节点时,对COMMIT消息进行关联性验证;
S6、统计COMMIT消息通过关联性验证的票数加权和M2,若票数加权和M2大于2fp+1时,则将COMMIT消息写入其数据库中;
其中,F为全网能容忍的恶意节点票数和,fp为主域能容忍的恶意节点票数和。
进一步地,所述Pre-Prepare消息为:
<<PRE-PREPARE,v,n,d>Sp,m>
其中,n为序号;m为消息;d为消息m的摘要;Sp为主节点对消息的签名;v为视图编号。
进一步地,对PREPARE消息/COMMIT消息进行关联环签名的方法包括:
A1、构建加密hash函数和映射到椭圆曲线的hash函数:
H1:{0,1}*→Zq,H2:{0,1}*→G
其中,H1为加密hash函数;H2为映射到椭圆曲线的hash函数;Zq为一个0~q的循环群;G为椭圆曲线上的G点;
A2、根据映射到椭圆曲线的hash函数及节点的私钥、公钥环,计算节点的公钥镜像:
y'=xiH2(RT)
其中,y'为公钥镜像;
A3、在Zq中选取一个随机数α,计算第i+1个环签名中间参数ci+1:
ci+1=H1(RT,y',m,αG,αy')
A4、在Zq中选取一个随机数sj,j=i+1,…,n,1,…,i-1,顺次选取j的值计算环签名中间参数cj+1:
cj+1=H1(RT,y',m,sjG+cjpkj,sjH2(RT)+cjy')
A5、重复步骤S4,直至j=i-1时,采用环签名中间参数ci计算验证参数:
si=α-xicimodq
其中,si为验证参数;q为Zq中最大的整数;mod为取模;
A6、采用验证参数si及执行步骤S4时选取的所有随机数sj生成环签名:
σRT(m)=(c1,s1,...,sn,y')
其中,σRT(m)为T组中节点对Pre-Prepare消息/PREPARE消息的环签名。
进一步地,所述PREPARE消息为:
<<PREPARE,v,n,d,T>,σRT(m),RT>
所述COMMIT消息:
<<COMMIT,v,n,d>,σRD(m),RD>
其中,RD为主域D组成员的公钥组成的公钥环,σRD(m)为主域D组中主域节点对PREPARE消息的环签名。
进一步地,当共识域中的主节点出错时还包括视图切换:
G1、当节点在设定时间内没有收到来自于主节点广播的Pre-Prepare消息时,节点向主域中的主域节点广播view-change消息:
其中,v+1为新视图编号;h为水位线;P为通过prepared阶段后的消息;Q为通过commited阶段后的消息;Y为环签名中间参数的集合;U为环签名验证参数的集合;RT=(pk1,pk2,...,pkn)为T组成员的公钥组成的公钥环;pki=xiG为RT中第i个公钥;xi为与第i个公钥对应的私钥;
G2、主域节点接收到view-change消息后,根据环签名验证确定发送view-change消息的节点为view-change消息内公钥环中的成员后,对view-change消息进行关联性验证;
G3、统计view-change消息通过关联性验证的票数加权和M3,若票数加权和M3大于2fp+1时,则该节点具有一个view-change证书;
G4、采用原主节点编号加一对应的主域节点作为新的主节点,并采用具有view-change证书的主域节点向新的主节点发送new-primary消息;
G5、新的主节点接收到至少2fp+1个new-primary消息后,确定自己为新的主节点,并向全网发起new-view事务请求,fp为主域能接受的恶意节点票数和上限;
G6、新的主节点从具有view-change证书的主域节点中选取一个view-change证书,将view-change证书中位于水位线后的消息发送给共识域中的所有节点,并执行步骤S1至步骤S6。
进一步地,对PREPARE消息/COMMIT消息/view-change消息进行环签名验证的方法包括:
E1、对于i=1,2,…,n时,顺次选取i的值计算椭圆化参数zi'和镜像处理参数zi”:
zi'=siG+eipki,zi”=siH2(RT)+eiy'
其中,当i=1时,e1=c1,e为验证中间参数;
E2、根据椭圆化参数zi'和镜像处理参数zi”,计算验证中间参数:
ei+1=H1(RT,y',m,zi',zi”)
其中,i≠n,ei+1为第i+1个验证中间参数;
E3、重复步骤E1和E2,直至得到椭圆化参数zn'和镜像处理参数zn”;
E4、根据椭圆化参数zn'和镜像处理参数zn”,判断若不相同,则PREPARE消息/COMMIT消息/view-change消息环签名验证失败,否则环签名验证成功。
进一步地,对PREPARE消息/COMMIT消息/view-change消息进行关联性验证进一步为:
PREPARE消息/COMMIT消息/view-change消息环签名验证后,判断此次收到的PREPARE消息/COMMIT消息/view-change消息中的消息m及公钥镜像y'是否与过往收到的相同;
若相同,则PREPARE消息/COMMIT消息/view-change消息关联性验证失败,否则通过环签名关联性验证。
进一步地,所述投票加权和的计算公式为:
其中,qa=1为A组权重;qb=2为B组权重;qc=3为C组权重;qd=4为D组权重;当A~D组中的节点通过关联性验证时,与其对应的时效参数ai、bi、ci或di为有效,未通过验证或未参与验证时为无效,时效参数ai、bi、ci和di有效时取值为1,无效时取值为0。
本方案的有益效果为:在共识过程中,本方案通过引入环签名技术来提供共识投票过程的用户匿名性,投票时用户通过选择同组内的若干个成员来进行环签名,统计票数的节点收到过环签名的消息,只能够确认该消息是由环内的成员所签,但无法知道签名者的具体身份,从而保证了参与共识用户的隐私性。
本方案的优化算法不同于大部分PBFT优化算法采用选举等方法降低共识的规模,本方案相当于从协议内部根据安全等级来降低了共识规模,但不剥夺节点的共识投票权力。
本方案在构建的共识环境中通过主域/子域的节点进行环签名及关联性验证,减少了共识过程中的信息交互次数,降低了共识带宽的损耗,同时还能保证高效共识,与PBFT算法相比有更快的收敛速度,可用于大规模的共识环境。
附图说明
图1为基于关联环签名的拜占庭容错共识优化方法一个实施例的流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
本方案在进行共识优化之前需要构建共识环境及主节点的选取,其中构建共识环境的具体实现过程为:
根据社区的贡献程度,我们将全网节点分为四组A={a1,a2,…,an},B={b1,b2,…,bn},C={c1,c2,…,cn},D={d1,d2,…,dn}。每组成员在共识过程中投票所占的权重不同,本方案中规定A组成员投票的权重qa=1,B组权重为qb=2,C组权重为qc=3,D组权重为qd=4。
D组的成员拥有最高的投票权重,认为他们是安全性最高,并且最不容易作恶的节点。通过这样的划分,共识网络的安全性更多的依赖投票权重高的那些组。
由于节点具备不同的投票权值,拜占庭判定准则要发生一些变化,在传统的PBFT算法中,节点的投票权重相同,我们可以认为均为1。假设全网的节点总数为N,共识网络中最多允许的恶意节点数量为f,拜占庭判定准则要求N=3f+1。在本方案的新共识环境下,定义全网投票加权和为M,允许的最多恶意节点票数加权和为F,则:
M=3F+1
其中,ai、bi、ci和di分别为A~D组中的成员的时效参数,当A~D组中的节点通过关联性验证时,与其对应的时效参数ai、bi、ci或di为有效,未通过验证或未参与验证时为无效,时效参数ai、bi、ci和di有效时取值为1,无效时取值为0。
对于构建的新共识环境,可以这样理解,在逻辑上一个D组的节点di内部由四个A组的节点组成,这可能是一个小的节点集群,D组在内部进行了一次共识后由di来代替他们发言,因此这不会影响PBFT算法的异步安全性,D组节点的说话分量相当于四个A组节点,但却可以认为D组的可信任度却比四个A组节点还要高。
假设存在一个控制节点,其能够联合共识域内的若干成员联合作恶,在传统PBFT算法情况下,控制节点想要破坏这个共识系统,需要控制f+1个节点。而在本方案的新共识算法中,虽然只需要控制少于f+1个节点,但投票权值高的节点却很难被控制去作恶。
这里假设控制节点去控制每个节点都需要耗费一定成本,控制不同组的节点所耗费的成本是不一样的,D组的安全性高于A组,想要控制D组将更加困难。若控制一个A组的节点需要消耗Va,B、C、D组分别是Vb,Vc,Vd。如果满足Vd≥4Va,说明增加D组成员提高了整个系统的安全性,对于B组和C组也是类似。
在很多场合中,节点之间是不对等的情况,有一些安全性高的节点,也有一些安全性低的节点,如果使用传统的PBFT算法,在共识过程认为这些节点是对等的,攻击者大可以选择去攻击那些安全性较低的节点进而破坏整个网络。因此,这样的共识网络是由漏洞的,容易被攻击者所利用。而在本方案的新共识环境下,安全级别不同的节点对于共识结果的贡献程度也不同,想要控制安全级别高的节点对于攻击者来说是很困难的。这样的节点权值划分消除了系统的漏洞,增加了共识网络的安全性。
本方案中提到的节点包括主域节点和子域节点,其中权重最高的D组为主域,其余几组为子域,主域中的节点为主域节点,子域中的节点为子域节点,定义主域的节点个数为Np,主域内所能容纳的恶意节点上限为fp,Np=3fp+1。共识服务从选取主节点开始,选定主节点之后确定了共识的视图v,之后就开始进行事务的共识。
主节点的选取规则是从主域内进行随机抽取,而不同于PBFT算法是从全网随机抽取,这样做的好处在于降低了主节点更换的频率。主节点的切换将引起视图切换,为了保证一致性需要进行大量的额外通信,因此主节点的切换会降低共识效率。由于主域内的节点安全级别是最高的,主节点出错的概率较低,因为主节点出错导致的视图切换将会更少发生。这降低了共识开销的同时提高了共识系统效率。
参考图1,图1示出了基于关联环签名的拜占庭容错共识优化方法一个实施例的流程图,该拜占庭容错共识优化方法S包括步骤S1至步骤S6。
在步骤S1中,主域节点和子域节点接收来自于共识域中的主节点广播的Pre-Prepare消息(预准备阶段消息):
<<PRE-PREPARE,v,n,d>Sp,m>
其中,n为序号;m为消息;d为消息m的摘要;Sp为主节点对消息的签名;v为视图编号。
在步骤S2中,当Pre-Prepare消息中的序号和视图通过验证后,生成PREPARE消息并进行关联环签名,广播至主域中所有主域节点;其中,PREPARE消息(准备阶段消息)为:
<<PREPARE,v,n,d,T>,σRT(m),RT>。
对Pre-Prepare消息中的序号和视图进行验证具体为:判断序号n是否满足水位线的规则,视图v是否等于当前的视图,若两者同时满足,则为通过验证。
在步骤S3中,主域节点接收PREPARE消息,根据环签名验证确定发送PREPARE消息的节点为PREPARE消息内公钥环中的成员后,对PREPARE消息进行关联性验证。
对于主域节点接收PREPARE消息,若发送PREPARE消息的节点不是该消息内公钥环中的组成成员时,则在统计票数加权和M1过程中,发送该PREPARE消息的节点的时效参数为零。
在步骤S4中,统计PREPARE消息通过关联性验证的票数加权和M1,若票数加权和M1大于2F+1,F为全网能容忍的恶意节点票数和,则生成COMMIT消息并进行关联环签名,广播至所有节点;其中,COMMIT消息(提交阶段消息)为:
<<COMMIT,v,n,d>,σRD(m),RD>
其中,RD为主域D组成员的公钥组成的公钥环,σRD(m)为主域D组中主域节点对PREPARE消息的环签名。
在本发明的一个实施例中,对PREPARE消息/COMMIT消息进行关联环签名的方法包括:
A1、构建加密hash函数和映射到椭圆曲线的hash函数:
H1:{0,1}*→Zq,H2:{0,1}*→G
其中,H1为加密hash函数;H2为映射到椭圆曲线的hash函数;Zq为一个0~q的循环群;G为椭圆曲线上的G点;
A2、根据映射到椭圆曲线的hash函数及节点的私钥、公钥环,计算节点的公钥镜像:
y'=xiH2(RT)
其中,y'为公钥镜像;
A3、在Zq中选取一个随机数α,计算第i+1个环签名中间参数ci+1:
ci+1=H1(RT,y',m,αG,αy')
A4、在Zq中选取一个随机数sj,j=i+1,…,n,1,…,i-1,顺次选取j的值计算环签名中间参数cj+1:
cj+1=H1(RT,y',m,sjG+cjpkj,sjH2(RT)+cjy')
A5、重复步骤S4,直至j=i-1时,采用环签名中间参数ci计算验证参数:
si=α-xicimodq
其中,si为验证参数;q为Zq中最大的整数;mod为取模;
A6、采用验证参数si及执行步骤S4时选取的所有随机数sj生成环签名:
σRT(m)=(c1,s1,...,sn,y')
其中,σRT(m)为T组中节点对Pre-Prepare消息/PREPARE消息的环签名。
在步骤S5中,主域节点和子域节点接收COMMIT消息,并在确定发送COMMIT消息的节点为主域节点时,对COMMIT消息进行关联性验证。
实施时,本方案优选对PREPARE消息/COMMIT消息/view-change消息(视图切换消息)进行环签名验证的方法包括:
E1、对于i=1,2,…,n时,顺次选取i的值计算椭圆化参数zi'和镜像处理参数zi”:
zi'=siG+eipki,zi”=siH2(RT)+eiy'
其中,当i=1时,e1=c1,e为验证中间参数;
E2、根据椭圆化参数zi'和镜像处理参数zi”,计算验证中间参数:
ei+1=H1(RT,y',m,zi',zi”)
其中,i≠n,ei+1为第i+1个验证中间参数;
E3、重复步骤E1和E2,直至得到椭圆化参数zn'和镜像处理参数zn”;
E4、根据椭圆化参数zn'和镜像处理参数zn”,判断若不相同,则PREPARE消息/COMMIT消息/view-change消息环签名验证失败,否则环签名验证成功,验证成功表明发送相应消息的节点属于公钥环中的成员或是主域节点。
其中,对PREPARE消息/COMMIT消息/view-change消息进行关联性验证进一步为:
PREPARE消息/COMMIT消息/view-change消息环签名验证后,判断此次收到的PREPARE消息/COMMIT消息/view-change消息中的消息m及公钥镜像y'是否与过往收到的相同;
若相同,则PREPARE消息/COMMIT消息/view-change消息关联性验证失败,否则通过环签名关联性验证。
关联性验证过程中判断的消息指PREPARE消息与PREPARE消息,COMMIT消息与COMMIT消息,view-change消息与view-change消息,即相同消息之间。
在步骤S6中,统计COMMIT消息通过关联性验证的票数加权和M2,若票数加权和M2大于2fp+1时,则将COMMIT消息写入其数据库中,fp为主域能容忍的恶意节点票数和。
在统计票数加权和M1时,A~D组中的节点均有在参与,则有:
在统计票数加权和M2时,仅D组中的主域节点参与,则有:
在本发明的一个实施例中,当共识域中的主节点出错时还包括视图切换:
在步骤G1中,当节点在设定时间内没有收到来自于主节点广播的Pre-Prepare消息时,节点向主域中的主域节点广播view-change消息(视图切换消息):
其中,v+1为新视图编号;h为水位线;P为通过prepared阶段后的消息;Q为通过commited阶段后的消息;Y为环签名中间参数的集合;U为环签名验证参数的集合;RT=(pk1,pk2,...,pkn)为T组成员的公钥组成的公钥环;pki=xiG为RT中第i个公钥;xi为与第i个公钥对应的私钥;
步骤G1中的节点包括主域节点和子域节点。
在步骤G2中,主域节点接收到view-change消息后,根据环签名验证确定发送view-change消息的节点为view-change消息内公钥环中的成员后,对view-change消息进行关联性验证;
在步骤G3中,统计view-change消息通过关联性验证的票数加权和M3,若票数加权和M3大于2fp+1时,则该节点具有一个view-change证书;
在统计票数加权和M1时,A~D组中的节点均有在参与。
在步骤G4中,采用原主节点编号加一对应的主域节点作为新的主节点,并采用具有view-change证书的主域节点向新的主节点发送new-primary消息(新视图消息);
在步骤G5中,新的主节点接收到至少2fp+1个new-primary消息后,确定自己为新的主节点,并向全网发起new-view事务请求。
新的主节点的确认过程解决了由于主节点故障导致的不一致问题,由于主节点的故障,可能导致部分节点达到了commited状态,并将数据写入了本地数据库,而另外的一部分节点由于主节点问题没有达到commited状态,而导致数据库出现不一致,而本方案采用发送new-view事务请求可以解决这个问题,保证了最终数据库都达到一致。
在步骤G6中,新的主节点从具有view-change证书的主域节点中选取一个view-change证书,将view-change证书中位于水位线后的消息发送给共识域中的所有节点,并执行步骤S1至步骤S6。
系统为了对数据库不一致性进行修补,需要重复执行那些在个节点存在的不一致性事务。因此,减少视图切换的频率会很大程度降低系统的负担,提高共识的性能,本方案减少了已经达到prepared状态消息的节点个数,将范围限制在主域中。这在新主节点获取prepared证书的过程中减少了大量通信,提高了视图切换的效率。
优化算法分析
由于要在分布式拜占庭环境下达成一致性,系统不可避免的需要进行大量的交互过程。PBFT算法在三阶段协议中均使用了全网广播,这导致了算法的复杂度高。在实际中应用时,PBFT算法随着共识规模的增大,性能越来越差,目前的PBFT算法并不适用于大规模共识环境。一次PBFT算法的共识过程,需要进行2N2次通信,算法的复杂度为O(N2),N为全网共识节点总数。
本方案的优化方法根据节点的安全程度对节点投票权重进行划分,同时根据投票权重进行了分域处理。在共识协议中对PBFT算法进行优化,减少了共识过程的通信次数。本方案在一次共识过程中,只需要进行2NMp次通信,而主域大小Mp的值可以根据实际应用场景来选择。当Mp<<N时,我们可以认为Mp为常数,因此本方案的复杂度降低为O(N),Mp为全网投票加权和。
本方案的优化方法的实施部署环境
本方案的优化方法可以部署在联盟链的区块链环境下。联盟链是指有若干个机构共同参与管理的区块链,每个机构都运行着一个或多个节点,其中的数据只允许系统内不同的机构进行读写和发送交易,并且共同来记录交易数据。对于更加复杂的应用场景,要求共识节点之间地位不平等,在共识过程中的投票权重也不同。在这样的共识环境之下,我们的发明技术能够充分发挥作用。
综上所述,本方案具有优化性、隐私性和高效性:
(1)优化性:本发明对PBFT算法的应用领域进行了扩展,同时还优化了PBFT算法流程,减少了共识过程中的信息交互次数,降低了共识带宽的损耗。
(2)隐私性:本发明在投票共识的过程中使用环签名对投票消息进行加密处理,实现匿名共识,保证了参与共识用户的隐私性。
(3)高效性:本发明提出的优化算法,能保证高效共识,与PBFT算法相比有更快的收敛速度,可用于大规模的共识环境。
Claims (8)
1.基于关联环签名的拜占庭容错共识优化方法,其特征在于,包括:
S1、主域节点和子域节点接收来自于共识域中的主节点广播的Pre-Prepare消息;
S2、当Pre-Prepare消息中的序号和视图通过验证后,生成PREPARE消息并进行关联环签名,广播至主域中所有主域节点;
S3、主域节点接收PREPARE消息,根据环签名验证确定发送PREPARE消息的节点为PREPARE消息内公钥环中的成员后,对PREPARE消息进行关联性验证;
S4、统计PREPARE消息通过关联性验证的票数加权和M1,若票数加权和M1大于2F+1,则生成COMMIT消息并进行关联环签名,广播至所有节点;
S5、主域节点和子域节点接收COMMIT消息,根据环签名验证确定发送COMMIT消息的节点为主域节点时,对COMMIT消息进行关联性验证;
S6、统计COMMIT消息通过关联性验证的票数加权和M2,若票数加权和M2大于2fp+1时,则将COMMIT消息写入其数据库中;
其中,F为全网能容忍的恶意节点票数和;fp为主域能容忍的恶意节点票数和。
2.根据权利要求1所述的基于关联环签名的拜占庭容错共识优化方法,其特征在于,所述Pre-Prepare消息为:
<<PRE-PREPARE,v,n,d>Sp,m>
其中,n为序号;m为消息;d为消息m的摘要;Sp为主节点对消息的签名;v为视图编号。
3.根据权利要求2所述的基于关联环签名的拜占庭容错共识优化方法,其特征在于,对PREPARE消息/COMMIT消息进行关联环签名的方法包括:
A1、构建加密hash函数和映射到椭圆曲线的hash函数:
H1:{0,1}*→Zq,H2:{0,1}*→G
其中,H1为加密hash函数;H2为映射到椭圆曲线的hash函数;Zq为一个0~q的循环群;G为椭圆曲线上的G点;
A2、根据映射到椭圆曲线的hash函数及节点的私钥、公钥环,计算节点的公钥镜像:
y'=xiH2(RT)
其中,y'为公钥镜像;
A3、在Zq中选取一个随机数α,计算第i+1个环签名中间参数ci+1:
ci+1=H1(RT,y',m,αG,αy')
A4、在Zq中选取一个随机数sj,j=i+1,…,n,1,…,i-1,顺次选取j的值计算环签名中间参数cj+1:
cj+1=H1(RT,y',m,sjG+cjpkj,sjH2(RT)+cjy')
A5、重复步骤S4,直至j=i-1时,采用环签名中间参数ci计算验证参数:
si=α-xicimodq
其中,si为验证参数;q为Zq中最大的整数;mod为取模;
A6、采用验证参数si及执行步骤S4时选取的所有随机数sj生成环签名:
σRT(m)=(c1,s1,...,sn,y')
其中,σRT(m)为T组中节点对Pre-Prepare消息/PREPARE消息的环签名。
4.根据权利要求3所述的基于关联环签名的拜占庭容错共识优化方法,其特征在于,所述PREPARE消息为:
<<PREPARE,v,n,d,T>,σRT(m),RT>
所述COMMIT消息:
<<COMMIT,v,n,d>,σRD(m),RD>
其中,RD为主域D组成员的公钥组成的公钥环,σRD(m)为主域D组中主域节点对PREPARE消息的环签名。
5.根据权利要求3所述的基于关联环签名的拜占庭容错共识优化方法,其特征在于,当共识域中的主节点出错时还包括视图切换:
G1、当节点在设定时间内没有收到来自于主节点广播的Pre-Prepare消息时,节点向主域中的主域节点广播view-change消息:
其中,v+1为新视图编号;h为水位线;P为通过prepared阶段后的消息;Q为通过commited阶段后的消息;Y为环签名中间参数的集合;U为环签名验证参数的集合;RT=(pk1,pk2,...,pkn)为T组成员的公钥组成的公钥环;pki=xiG为RT中第i个公钥;xi为与第i个公钥对应的私钥;
G2、主域节点接收到view-change消息后,根据环签名验证确定发送view-change消息的节点为view-change消息内公钥环中的成员后,对view-change消息进行关联性验证;
G3、统计view-change消息通过关联性验证的票数加权和M3,若票数加权和M3大于2fp+1时,则该节点具有一个view-change证书;
G4、采用原主节点编号加一对应的主域节点作为新的主节点,并采用具有view-change证书的主域节点向新的主节点发送new-primary消息;
G5、新的主节点接收到至少2fp+1个new-primary消息后,确定自己为新的主节点,并向全网发起new-view事务请求,fp为主域能接受的恶意节点票数和上限;
G6、新的主节点从具有view-change证书的主域节点中选取一个view-change证书,将view-change证书中位于水位线后的消息发送给共识域中的所有节点,并执行步骤S1至步骤S6。
6.根据权利要求3或5所述的基于关联环签名的拜占庭容错共识优化方法,其特征在于,对PREPARE消息/COMMIT消息/view-change消息进行环签名验证的方法包括:
E1、对于i=1,2,…,n时,顺次选取i的值计算椭圆化参数zi'和镜像处理参数zi”:
zi'=siG+eipki,zi”=siH2(RT)+eiy'
其中,当i=1时,e1=c1,e为验证中间参数;
E2、根据椭圆化参数zi'和镜像处理参数zi”,计算验证中间参数:
ei+1=H1(RT,y',m,zi',zi”)
其中,i≠n,ei+1为第i+1个验证中间参数;
E3、重复步骤E1和E2,直至得到椭圆化参数zn'和镜像处理参数zn”;
E4、根据椭圆化参数zn'和镜像处理参数zn”,判断若不相同,则PREPARE消息/COMMIT消息/view-change消息环签名验证失败,否则环签名验证成功。
7.根据权利要求6所述的基于关联环签名的拜占庭容错共识优化方法,其特征在于,对PREPARE消息/COMMIT消息/view-change消息进行关联性验证进一步为:
PREPARE消息/COMMIT消息/view-change消息环签名验证后,判断此次收到的PREPARE消息/COMMIT消息/view-change消息中的消息m及公钥镜像y'是否与过往收到的相同;
若相同,则PREPARE消息/COMMIT消息/view-change消息关联性验证失败,否则通过环签名关联性验证。
8.根据权利要求1-5或7所述的基于关联环签名的拜占庭容错共识优化方法,其特征在于,所述投票加权和的计算公式为:
其中,qa=1为A组权重;qb=2为B组权重;qc=3为C组权重;qd=4为D组权重;当A~D组中的节点通过关联性验证时,与其对应的时效参数ai、bi、ci或di为有效,未通过验证或未参与验证时为无效,时效参数ai、bi、ci和di有效时取值为1,无效时取值为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811581216.6A CN109685505B (zh) | 2018-12-24 | 2018-12-24 | 基于关联环签名的拜占庭容错共识优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811581216.6A CN109685505B (zh) | 2018-12-24 | 2018-12-24 | 基于关联环签名的拜占庭容错共识优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109685505A true CN109685505A (zh) | 2019-04-26 |
CN109685505B CN109685505B (zh) | 2020-09-22 |
Family
ID=66189038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811581216.6A Active CN109685505B (zh) | 2018-12-24 | 2018-12-24 | 基于关联环签名的拜占庭容错共识优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109685505B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111327414A (zh) * | 2020-01-20 | 2020-06-23 | 布比(北京)网络技术有限公司 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
CN111526216A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN111586168A (zh) * | 2020-05-06 | 2020-08-25 | 恒宝股份有限公司 | 水线高度的更改设置方法 |
CN111682942A (zh) * | 2020-05-18 | 2020-09-18 | 哈尔滨工业大学 | 一种应用于许可链的二元加权拜占庭容错共识方法 |
WO2021093244A1 (zh) * | 2019-11-14 | 2021-05-20 | 深圳市网心科技有限公司 | 随机数生成方法、区块链节点、系统及介质 |
-
2018
- 2018-12-24 CN CN201811581216.6A patent/CN109685505B/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021093244A1 (zh) * | 2019-11-14 | 2021-05-20 | 深圳市网心科技有限公司 | 随机数生成方法、区块链节点、系统及介质 |
CN111327414A (zh) * | 2020-01-20 | 2020-06-23 | 布比(北京)网络技术有限公司 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
CN111586168A (zh) * | 2020-05-06 | 2020-08-25 | 恒宝股份有限公司 | 水线高度的更改设置方法 |
CN111682942A (zh) * | 2020-05-18 | 2020-09-18 | 哈尔滨工业大学 | 一种应用于许可链的二元加权拜占庭容错共识方法 |
CN111682942B (zh) * | 2020-05-18 | 2022-06-10 | 哈尔滨工业大学 | 一种应用于许可链的二元加权拜占庭容错共识方法 |
CN111526216A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
US11251967B2 (en) | 2020-07-03 | 2022-02-15 | Alipay (Hangzhou) Information Technology Co., Ltd. | Consensus methods and systems in consortium blockchain |
Also Published As
Publication number | Publication date |
---|---|
CN109685505B (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109685505A (zh) | 基于关联环签名的拜占庭容错共识优化方法 | |
Huang et al. | Building redactable consortium blockchain for industrial Internet-of-Things | |
CN109360100B (zh) | 基于区块链技术的交易快速确认方法及装置 | |
CN109842606B (zh) | 基于一致性哈希算法的区块链共识算法和系统 | |
CN113467927A (zh) | 一种基于区块链的参与方可信任的联邦学习方法和装置 | |
CN113271204B (zh) | 一种基于量子密钥分发的拜占庭容错共识方法 | |
CN111371905B (zh) | 一种基于云计算的区块链分层共识证明系统与方法 | |
UA128523C2 (uk) | Спосіб генерування транзакції блокчейну і спосіб перевірки дійсності блока блокчейну | |
CN113746858B (zh) | 一种基于可验证随机函数的跨链通信方法 | |
CN112651830B (zh) | 应用于电力资源共享网络的区块链共识方法 | |
Azouvi et al. | Winning the caucus race: Continuous leader election via public randomness | |
CN109347877B (zh) | 区块链结构化存储控制方法 | |
Mahmoud et al. | A secure payment scheme with low communication and processing overhead for multihop wireless networks | |
CN114463009B (zh) | 一种用于提高大规模能源节点交易安全性的方法 | |
Abdalla et al. | (Password) authenticated key establishment: From 2-party to group | |
CN114143021B (zh) | 一种基于区块链的新闻信息信用积分系统 | |
Berrang et al. | Albatross–an optimistic consensus algorithm | |
Bai et al. | On parallel mechanism of consortium blockchain: Take pov as an example | |
Chen et al. | Strongly Secure Certificateless Signature: Cryptanalysis and Improvement of two Schemes. | |
Gouget et al. | Unpredictability properties in algorand consensus protocol | |
CN114598477B (zh) | 一种基于器件无关量子随机数的共识系统及其方法 | |
Zhang et al. | A cross-chain payment channel network | |
Deng et al. | Designated‐Verifier Anonymous Credential for Identity Management in Decentralized Systems | |
CN116366293A (zh) | 一种基于权益证明机制的区块链共识协议 | |
CN111566681A (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 |