CN109167661A - 一种应用于联盟链的拜占庭容错共识方法及终端 - Google Patents

一种应用于联盟链的拜占庭容错共识方法及终端 Download PDF

Info

Publication number
CN109167661A
CN109167661A CN201811128292.1A CN201811128292A CN109167661A CN 109167661 A CN109167661 A CN 109167661A CN 201811128292 A CN201811128292 A CN 201811128292A CN 109167661 A CN109167661 A CN 109167661A
Authority
CN
China
Prior art keywords
common recognition
node
recognition node
alliance
chain
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
Application number
CN201811128292.1A
Other languages
English (en)
Other versions
CN109167661B (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.)
Fujian Fuchain Technology Co Ltd
Original Assignee
Fujian Fuchain Technology 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 Fujian Fuchain Technology Co Ltd filed Critical Fujian Fuchain Technology Co Ltd
Priority to CN201811128292.1A priority Critical patent/CN109167661B/zh
Publication of CN109167661A publication Critical patent/CN109167661A/zh
Application granted granted Critical
Publication of CN109167661B publication Critical patent/CN109167661B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/3236Cryptographic 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Hardware Redundancy (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明提供了一种应用于联盟链的拜占庭容错共识方法及终端,在每一轮共识过程中,根据每一个待选共识节点上的私钥、序号、当前的视图及上一轮共识过程产生的区块对应的哈希值,计算得到每一个待选共识节点对应的哈希值,从而筛选出唯一的第一共识节点;并通过第一共识节点,生成提案信息,并分别将提案信息发送至每一个待选共识节点;根据接收到由待选共识节点发送的与提案信息对应的验证通过信息,生成标识信息,并分别发送至每一个待选共识节点,若第一共识节点接收到的标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。本发明通过上述方案,在提高联盟链共识性能的同时,能够确保联盟链的安全性。

Description

一种应用于联盟链的拜占庭容错共识方法及终端
技术领域
本发明涉及区块链技术领域,尤其涉及一种应用于联盟链的拜占庭容错共识方法及终端。
背景技术
Ontology(本体)采用的VBFT共识算法,一个重要的参数为共识网络节点的PoS(权益证明,Proof of Stake,PoS)表。VBFT算法(Verifiable Random Function ByzantineFault Tolerance,可验证随机函数拜占庭容错算法)运行过程中,所有节点根据当前的共识PoS表,随机选择每一轮参与共识的节点,由随机选择的节点完成对应轮的共识工作。
VBFT算法可以认为是传统BFT算法(Byzantine Fault Tolerance,拜占庭容错算法)在可验证随机方向的一个改进。在VBFT算法中,首先基于可验证随机函数VRF在共识网络中依次选择出一轮共识的备选区块提案节点集,区块验证节点集和区块共识节点集,然后由选出的共识节点集完成共识。由于VRF引入的随机性,每轮区块的备选提案节点、验证节点和共识节点都不相同,而且难以预测,从而极大提高共识算法的抗攻击性。故VBFT更加适用于公有链,存在提案节点和验证节点,运用于联盟链的话会对系统的共识性能产生影响。
发明内容
本发明所要解决的技术问题是:本发明提供了一种应用于联盟链的拜占庭容错共识方法及终端,解决了现有的联盟链共识性能较低的问题。
为了解决上述技术问题,本发明提供了一种应用于联盟链的拜占庭容错共识方法,包括以下步骤:
S1:在每一轮共识过程中,根据每一个待选共识节点上存储的私钥、每一个待选共识节点的序号、当前的视图的编号及联盟链在上一轮共识过程中的产生区块对应的哈希值,计算得到每一个待选节点对应的哈希值;
S2:根据每一个待选节点对应的哈希值,选出唯一的待选共识节点作为此轮共识过程的第一共识节点;
S3:通过所述第一共识节点生成提案信息,并分别发送所述提案信息至每一个待选共识节点;
S4:根据第一共识节点接收待选共识节点发送的所述提案信息对应的验证通过信息,生成标识信息;通过所述第一共识节点分别发送所述标识信息至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。
本发明还提供了一种应用于联盟链的拜占庭容错共识终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
S1:在每一轮共识过程中,根据每一个待选共识节点上存储的私钥、每一个待选共识节点的序号、当前的视图的编号及联盟链在上一轮共识过程中的产生区块对应的哈希值,计算得到每一个待选节点对应的哈希值;
S2:根据每一个待选节点对应的哈希值,选出唯一的待选共识节点作为此轮共识过程的第一共识节点;
S3:通过所述第一共识节点生成提案信息,并分别发送所述提案信息至每一个待选共识节点;
S4:根据第一共识节点接收待选共识节点发送的所述提案信息对应的验证通过信息,生成标识信息;通过所述第一共识节点分别发送所述标识信息至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。
本发明的有益效果为:
本发明提供了一种应用于联盟链的拜占庭容错共识方法及终端,在每一轮共识过程中,根据每一个待选共识节点上的私钥、序号、当前的视图的编号及上一轮共识过程产生的区块对应的哈希值,计算得到每一个待选共识节点对应的哈希值,从而筛选出唯一的第一共识节点;并通过所述共识节点,生成提案信息,并分别将提案信息发送至每一个待选共识节点;根据接收到由待选共识节点发送的与提案信息对应的验证通过信息,生成标识信息,并分别发送至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。本发明通过上述方案,在每一轮共识过程中无需要筛选出验证节点与提案共识,能够提高联盟链的共识效率;同时本发明由共识节点生成提案信息,并由各个待选验证节点进行验证,能够确保联盟链的安全性。
附图说明
图1为根据本发明实施例的一种应用于联盟链的拜占庭容错共识方法的主要步骤示意图;
图2为根据本发明实施例的一种应用于联盟链的拜占庭容错共识终端的结构示意图;
标号说明:
1、存储器;2、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
请参照图1,本发明提供了一种应用于联盟链的拜占庭容错共识方法,包括以下步骤:
S1:在每一轮共识过程中,根据每一个待选共识节点上存储的私钥、每一个待选共识节点的序号、当前的视图的编号及联盟链在上一轮共识过程中产生的区块对应的哈希值,计算得到每一个待选节点对应的哈希值;
S2:根据每一个待选节点对应的哈希值,选出唯一的待选共识节点作为此轮共识过程的第一共识节点;
S3:通过所述第一共识节点生成提案信息,并分别发送所述提案信息至每一个待选共识节点;
S4:根据第一共识节点接收待选共识节点发送的所述提案信息对应的验证通过信息,生成标识信息;通过所述第一共识节点分别发送所述标识信息至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。
从上述描述可知,本发明提供了一种应用于联盟链的拜占庭容错共识方法,在每一轮共识过程中,根据每一个待选共识节点上的私钥、序号及上一轮共识过程的共识节点对应的哈希值,计算得到每一个待选共识节点对应的哈希值,从而筛选出唯一的第一共识节点;并通过所述共识节点,生成提案信息,并分别将提案信息发送至每一个待选共识节点;根据接收到由待选共识节点发送的与提案信息对应的验证通过信息,生成标识信息,并分别发送至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。本发明通过上述方案,在每一轮共识过程中无需要筛选出验证节点与提案共识,能够提高联盟链的共识效率;同时本发明由共识节点生成提案信息,并由各个待选验证节点进行验证,能够确保联盟链的安全性。
进一步的,所述S1具体为:
通过预设第一公式,分别计算每一个待选节点对应的哈希值;
所述第一公式为:
其中,所述i=1,2,……,n,所述i表示待选共识节点的序号,所述n表示所有待选共识节点的总数量,H表示哈希函数,v当前视图的编号,v的初始值为1,blockpre表示联盟链上一轮共识过程中的共识节点对应的哈希值,σi表示序号为i的待选共识节点上存储的私钥,表示利用σi对vblockpre和i进行签名,表示对签名后的签名数据进行哈希运算;Pi表示序号为i的待选节点对应的哈希值。
从上述描述可知,通过上述方法,能够确保每一个待选节点对应的哈希值均不相同,使得根据每一个待选节点对应的哈希值,选出的唯一的第一共识节点具有一定的随机性,减少了每一轮共识过程中,共识节点受到攻击的概率,提高了联盟链系统的安全性。
进一步的,所述S2具体为:
根据每一个待选节点对应的哈希值Pi,计算得到Pm,所述
选出序号为m的待选共识节点作为此轮共识过程的第一共识节点。
从上述描述可知,通过上述方法,能快速安全地选出每一轮共识过程中的共识节点,提高了联盟链系统的安全性。
进一步的,所述S3具体为:
通过所述第一共识节点生成提案信息;
所述提案信息包括
其中,所述Pr epare Re quest为预设的第一标识;所述m表示此轮共识过程中的第一共识节点的序号;所述blocknew表示此轮共识过程中的第一共识节点对应的哈希值;所述其中,所述pki表示序号为i的待选共识节点上存储的公钥,ki表示与序号为i的待选节点对应的随机数,所述n为待选节点的总数量;所有待选节点通过私钥进行签名时采用的算法均为椭圆曲线签名算法;所述G为椭圆曲线的基点坐标;r=H(Q||PK||m)mod s,所述s为椭圆曲线的阶,所述mod为求余函数;表示第一共识节点上存储的私钥;表示通过第一共识节点上的私钥对Pr epareRe quest、v、m、blocknew、r、Q、PK进行签名后得到的签名数据;
通过所述第一共识节点分别发送所述提案信息至所有的待选共识节点。
从上述描述可知,通过上述方法,能快速生成提案信息,不影响联盟链的正常运行,并且上述生成的提案信息可由各个待选共识节点进行验证,保证系统的安全性。
进一步的,所述S3和S4之间还包括:
当待选共识节点接收到所述提案信息时,通过所述待选第一共识节点对所述提案信息进行验证,若验证通过后,则发送验证通过信息至所述第一共识节点;
所述验证通过信息包括<Pr epare Re sponse,v,i,wi>,其中i≠m;所述Pr epareRe sponse表示预设的第二标识,所述i表示该待选共识节点的序号,wi=(ki-r·ski)mods,所述ski指序号为i的待选共识节点上存储的私钥。
从上述描述可知,通过上述方法,使得待选共识节点能够对提案信息进行验证,并回发至共识节点验证通过信息,确保联盟链系统快速安全地运行。
进一步的,所述S4具体为:
所述第一共识节点根据接收到的待选共识节点发送的验证通过信息,计算其中Bs[i]表示第i个待选共识节点对应的权重值;Bs[i]表示第i个待选共识节点对应的权重值;若接收到序号为i的待选共识节点发送的验证信息,则Bs[i]=1;否则Bs[i]=0;
通过第一共识节点分别发送标识信息至每一个待选节点,所述标识信息包括<Commit,v,m,r,s,Bs>,其中Commit表示预设第三标识,所述Bs包括Bs[1]、Bs[2]、……、Bs[n];
若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识;
否则,执行信息更新步骤。
从上述描述可知,通过上述方法,能够确保在本轮的提案信息验证通过后,才执行下一轮共识,否则此轮共识重新执行,确保系统稳定地运行。
进一步的,所述信息更新步骤,具体为:
S50,预设变量k,所述k的初始值为1;
S51:令vk=v+k;
S52:每一个待选共识节点发起视图更换请求;
S53:若经过预设时间间隔后,接收到不少于n-f个互不相同的待选共识节点发送的更新后的视图编号为vk时,令v=vk,并重复执行S1-S4;所述f是联盟链系统中最多能容纳的错误节点数量;
S54:否则令k=k+1;重复执行步骤S51-S53。
从上述描述可知,通过上述方法,能够重新执行本轮的共识及验证过程,使系统的无反应或系统故障的节点数在系统允许最多容纳的错误节点数量的范围内,保证系统的正常稳定地运行。
请参照图2,本发明提供的一种应用于联盟链的拜占庭容错共识终端,包括存储器1、处理器2及存储在存储器1上并可在处理器2上运行的计算机程序,所述处理器2执行所述计算机程序时实现以下步骤:
S1:在每一轮共识过程中,根据每一个待选共识节点上存储的私钥、每一个待选共识节点的序号、当前的视图的编号及联盟链在上一轮共识过程产生的区块对应的哈希值,计算得到每一个待选节点对应的哈希值;
S2:根据每一个待选节点对应的哈希值,选出唯一的待选共识节点作为此轮共识过程的第一共识节点;
S3:通过所述第一共识节点生成提案信息,并分别发送所述提案信息至每一个待选共识节点;
S4:根据第一共识节点接收待选共识节点发送的所述提案信息对应的验证通过信息,生成标识信息;通过所述第一共识节点分别发送所述标识信息至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。
进一步的,所述的一种应用于联盟链的拜占庭容错共识终端,所述S1具体为:
通过预设第一公式,分别计算每一个待选节点对应的哈希值;
所述第一公式为:
其中,所述i=1,2,……,n,所述i表示待选共识节点的序号,所述n表示所有待选共识节点的总数量,H表示哈希函数,v当前视图的编号,v的初始值为1,blockpre表示联盟链上一轮共识过程中的共识节点对应的哈希值,σi表示序号为i的待选共识节点上存储的私钥,表示利用σi对v、blockpre和i进行签名,表示对签名后的签名数据进行哈希运算;Pi表示序号为i的待选节点对应的哈希值。
进一步的,所述的一种应用于联盟链的拜占庭容错共识终端,所述S2具体为:
根据每一个待选节点对应的哈希值Pi,计算得到Pm,所述
选出序号为m的待选共识节点作为此轮共识过程的第一共识节点。
进一步的,所述的一种应用于联盟链的拜占庭容错共识终端,所述S3具体为:
通过所述第一共识节点生成提案信息;
所述提案信息包括
其中,所述Pr epare Re quest为预设的第一标识;所述m表示此轮共识过程中的第一共识节点的序号;所述blocknew表示此轮共识过程中的第一共识节点对应的哈希值;所述其中,所述pki表示序号为i的待选共识节点上存储的公钥,ki表示与序号为i的待选节点对应的随机数,所述n为待选节点的总数量;所有待选节点通过私钥进行签名时采用的算法均为椭圆曲线签名算法;所述G为椭圆曲线的基点坐标;r=H(Q||PK||m)mod s,所述s为椭圆曲线的阶,所述mod为求余函数;表示第一共识节点上存储的私钥;表示通过第一共识节点上的私钥对Pr epareRe quest、v、m、blocknew、r、Q、PK进行签名后得到的签名数据;
通过所述第一共识节点分别发送所述提案信息至所有的待选共识节点。
进一步的,所述的一种应用于联盟链的拜占庭容错共识终端,所述S3和S4之间还包括:
当待选共识节点接收到所述提案信息时,通过所述待选第一共识节点对所述提案信息进行验证,若验证通过后,则发送验证通过信息至所述第一共识节点;
所述验证通过信息包括<Pr epare Re sponse,v,i,wi>,其中i≠m;所述Pr epareRe sponse表示预设的第二标识,所述i表示该待选共识节点的序号,wi=(ki-r·ski)mods,所述ski指序号为i的待选共识节点上存储的私钥。
进一步的,所述的一种应用于联盟链的拜占庭容错共识终端,所述S4具体为:
所述第一共识节点根据接收到的待选共识节点发送的验证通过信息,计算其中Bs[i]表示第i个待选共识节点对应的权重值;若接收到序号为i的待选共识节点发送的验证信息,则Bs[i]=1;否则Bs[i]=0;
通过第一共识节点分别发送标识信息至每一个待选节点,所述标识信息包括<Commit,v,m,r,s,Bs>,其中Commit表示预设第三标识,所述Bs包括Bs[1]、Bs[2]、……、Bs[n];
若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识;
否则,执行信息更新步骤。
进一步的,所述的一种应用于联盟链的拜占庭容错共识终端,所述信息更新步骤,具体为:
S50,预设变量k,所述k的初始值为1;
S51:令vk=v+k;
S52:每一个待选共识节点发起视图更换请求;
S53:若经过预设时间间隔后,接收到不少于n-f个互不相同的待选共识节点发送的更新后的视图编号为vk时,令v=vk,并重复执行S1-S4;所述f是联盟链系统中最多能容纳的错误节点数量;
S54:否则令k=k+1;重复执行步骤S51-S53。
请参照图1,本发明的实施例一为:
本发明提供了一种应用于联盟链的拜占庭容错共识方法,包括以下步骤:
S1:在每一轮共识过程中,根据每一个待选共识节点上存储的私钥、每一个待选共识节点的序号、当前的视图的编号及联盟链在上一轮共识过程中产生的区块对应的哈希值,计算得到每一个待选节点对应的哈希值;
上一轮共识过程中产生的区块对应的哈希值为上一轮共识过程中的共识节点对应的哈希值。
其中,所述S1具体为:
通过预设第一公式,分别计算每一个待选节点对应的哈希值;
所述第一公式为:
其中,所述i=1,2,……,n,所述i表示待选共识节点的序号,所述n表示所有待选共识节点的总数量,H表示哈希函数,v当前视图的编号,v的初始值为1,blockpre表示联盟链上一轮共识过程中的共识节点对应的哈希值,σi表示序号为i的待选共识节点上存储的私钥,表示利用σi对v、blockpre和i进行签名,表示对签名后的签名数据进行哈希运算;Pi表示序号为i的待选节点对应的哈希值。
S2:根据每一个待选节点对应的哈希值,选出唯一的待选共识节点作为此轮共识过程的第一共识节点;
其中,所述S2具体为:
将每一个待选节点对应的哈希值Pi转换为二进制数,选出最大的二进制数对应的待选节点为此轮共识过程中的第一共识节点,所述第一共识节点的序号为m。
S3:通过所述第一共识节点生成提案信息,并分别发送所述提案信息至每一个待选共识节点(不包括第一共识节点);
其中,所述S3具体为:
通过所述第一共识节点生成提案信息;
所述提案信息包括
其中,所述Pr epare Re quest为预设的第一标识;所述m表示此轮共识过程中的第一共识节点的序号;所述blocknew表示此轮共识过程中的第一共识节点对应的哈希值;所述其中,所述pki表示序号为i的待选共识节点上存储的公钥,表示在签名算法运算法则内进行求和运算,ki表示与序号为i的待选节点对应的随机数,所述n为待选节点的总数量;所有待选节点通过私钥进行签名时采用的算法均为椭圆曲线签名算法;所述G为椭圆曲线的基点坐标;r=H(Q||PK||m)mod s,所述s为椭圆曲线的阶,所述mod为求余函数;表示第一共识节点上存储的私钥;表示通过第一共识节点上的私钥对Pr epare Request、v、m、blocknew、r、Q、PK进行签名后得到的签名数据;
通过所述第一共识节点分别发送所述提案信息至所有的待选共识节点。
S305:当待选共识节点接收到所述提案信息时,通过所述待选第一共识节点对所述提案信息进行验证(所述提案信息签名信息,验证签名信息,提案信息中所有信息的签名与格式),若验证通过后,则发送验证通过信息至所述第一共识节点;
所述验证通过信息包括<Pr epare Re sponse,v,i,wi>,其中i≠m;所述Pr epareRe sponse表示预设的第二标识,所述i表示该待选共识节点的序号,wi=(ki-r·ski)mods,所述ski指序号为i的待选共识节点上存储的私钥。
S4:根据第一共识节点接收待选共识节点发送的所述提案信息对应的验证通过信息,生成标识信息;通过所述第一共识节点分别发送所述标识信息至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识;
其中,所述S4具体为:
等选预设第一时间后,所述第一共识节点根据接收到的待选共识节点发送的验证通过信息,计算其中Bs[i]表示第i个待选共识节点对应的权重值;若接收到序号为i的待选共识节点发送的验证信息,则Bs[i]=1;否则Bs[i]=0;预设第一时间为2s;上述通过计算得到的w,能够将已产生的签名进行聚合,把多个签名聚合成一个签名;
通过第一共识节点分别发送标识信息至每一个待选节点,所述标识信息包括<Commit,v,m,r,s,Bs>,其中Commit表示预设第三标识,所述Bs包括Bs[1]、Bs[2]、……、Bs[n];
若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识;所述预设数目为n-f;所述f是联盟链系统中最多能容纳的错误节点数量;上述对标识信息的验证,主要验证签名的正确性,视图的正确性。
否则,执行信息更新步骤。
其中,所述信息更新步骤,具体为:
S50,预设变量k,所述k的初始值为1;
S51:令vk=v+k;
S52:一个待选共识节点发起视图更换请求;
其中,系统中存储了预设的多个视图,每一个视图与一个编号一一对应,且编号是从1开始的连接的整数。
S53:若经过预设时间间隔后,接收到不少于n-f个互不相同的待选共识节点发送的更新后的视图编号为vk时,令v=vk,并重复执行S1-S4;所述f是联盟链系统中最多能容纳的错误节点数量;所述时间间隔为产生区块对应的平均时间;
S54:否则令k=k+1;重复执行步骤S51-S53。
在实际应用过程中,上述联盟链的任意节点向全网广播交易数据,并附上该节点的签名数据;所有待选共识节点均独立监听全网的交易数据,并记录在内存中。
请参照图2,本发明的实施例二为:
本发明提供了一种应用于联盟链的拜占庭容错共识终端,包括存储器1、处理器2及存储在存储器1上并可在处理器2上运行的计算机程序,所述处理器2执行所述计算机程序时实现以下步骤:
S1:在每一轮共识过程中,根据每一个待选共识节点上存储的私钥、每一个待选共识节点的序号、当前的视图的编号及联盟链在上一轮共识过程中产生的区块对应的哈希值,计算得到每一个待选节点对应的哈希值;
其中,所述S1具体为:
通过预设第一公式,分别计算每一个待选节点对应的哈希值;
所述第一公式为:
其中,所述i=1,2,……,n,所述i表示待选共识节点的序号,所述n表示所有待选共识节点的总数量,H表示哈希函数,v当前视图的编号,v的初始值为1,blockpre表示联盟链上一轮共识过程中的共识节点对应的哈希值,σi表示序号为i的待选共识节点上存储的私钥,表示利用σi对v、blockpre和i进行签名,表示对签名后的签名数据进行哈希运算;Pi表示序号为i的待选节点对应的哈希值。
S2:根据每一个待选节点对应的哈希值,选出唯一的待选共识节点作为此轮共识过程的第一共识节点;
其中,所述S2具体为:
将每一个待选节点对应的哈希值Pi转换为二进制数,选出最大的二进制数对应的待选节点为此轮共识过程中的第一共识节点,所述第一共识节点的序号为m。
S3:通过所述第一共识节点生成提案信息,并分别发送所述提案信息至每一个待选共识节点(不包括第一共识节点);
其中,所述S3具体为:
通过所述第一共识节点生成提案信息;
所述提案信息包括
其中,所述Pr epare Re quest为预设的第一标识;所述m表示此轮共识过程中的第一共识节点的序号;所述blocknew表示此轮共识过程中的第一共识节点对应的哈希值;所述其中,所述pki表示序号为i的待选共识节点上存储的公钥,ki表示与序号为i的待选节点对应的随机数,所述n为待选节点的总数量;所有待选节点通过私钥进行签名时采用的算法均为椭圆曲线签名算法;所述G为椭圆曲线的基点坐标;r=H(Q||PK||m)mod s,所述s为椭圆曲线的阶,所述mod为求余函数;表示第一共识节点上存储的私钥;表示通过第一共识节点上的私钥对Pr epareRe quest、v、m、blocknew、r、Q、PK进行签名后得到的签名数据;
通过所述第一共识节点分别发送所述提案信息至所有的待选共识节点。
S305:当待选共识节点接收到所述提案信息时,通过所述待选第一共识节点对所述提案信息进行验证,若验证通过后,则发送验证通过信息至所述第一共识节点;
所述验证通过信息包括<Pr epare Re sponse,v,i,wi>,其中i≠m;所述Pr epareRe sponse表示预设的第二标识,所述i表示该待选共识节点的序号,wi=(ki-r·ski)mods,所述ski指序号为i的待选共识节点上存储的私钥。
S4:根据第一共识节点接收待选共识节点发送的所述提案信息对应的验证通过信息,生成标识信息;通过所述第一共识节点分别发送所述标识信息至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识;
其中,所述S4具体为:
等选预设第一时间后,所述第一共识节点根据接收到的待选共识节点发送的验证通过信息,计算其中Bs[i]表示第i个待选共识节点对应的权重值;若接收到序号为i的待选共识节点发送的验证信息,则Bs[i]=1;否则Bs[i]=0;预设第一时间为2s;
通过第一共识节点分别发送标识信息至每一个待选节点,所述标识信息包括<Commit,v,m,r,s,Bs>,其中Commit表示预设第三标识,所述Bs包括Bs[1]、Bs[2]、……、Bs[n];
若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识;所述预设数目为n-f;所述f是联盟链系统中最多能容纳的错误节点数量;
否则,执行信息更新步骤。
其中,所述信息更新步骤,具体为:
S50,预设变量k,所述k的初始值为1;
S51:令vk=v+k;
S52:每一个待选共识节点发起视图更换请求;
S53:若经过预设时间间隔后,接收到不少于n-f个互不相同的待选共识节点发送的更新后的视图编号为vk时,令v=vk,并重复执行S1-S4;所述f是联盟链系统中最多能容纳的错误节点数量;
S54:否则令k=k+1;重复执行步骤S51-S53。
综上所述,本发明提供了一种应用于联盟链的拜占庭容错共识方法及终端,在每一轮共识过程中,根据每一个待选共识节点上的私钥、序号及上一轮共识过程的共识节点对应的哈希值,计算得到每一个待选共识节点对应的哈希值,从而筛选出唯一的第一共识节点;并通过所述共识节点,生成提案信息,并分别将提案信息发送至每一个待选共识节点;根据接收到由待选共识节点发送的与提案信息对应的验证通过信息,生成标识信息,并分别发送至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。本发明通过上述方案,在每一轮共识过程中无需要筛选出验证节点与提案共识,能够提高联盟链的共识效率;同时本发明由共识节点生成提案信息,并由各个待选验证节点进行验证,能够确保联盟链的安全性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种应用于联盟链的拜占庭容错共识方法,其特征在于,包括以下步骤:
S1:在每一轮共识过程中,根据每一个待选共识节点上存储的私钥、每一个待选共识节点的序号、当前的视图的编号及联盟链在上一轮共识过程中产生的区块对应的哈希值,计算得到每一个待选节点对应的哈希值;
S2:根据每一个待选节点对应的哈希值,选出唯一的待选共识节点作为此轮共识过程的第一共识节点;
S3:通过所述第一共识节点生成提案信息,并分别发送所述提案信息至每一个待选共识节点;
S4:根据第一共识节点接收待选共识节点发送的所述提案信息对应的验证通过信息,生成标识信息;通过所述第一共识节点分别发送所述标识信息至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。
2.根据权利要求1所述的一种应用于联盟链的拜占庭容错共识方法,其特征在于,所述S1具体为:
通过预设第一公式,分别计算每一个待选节点对应的哈希值;
所述第一公式为:
其中,所述i=1,2,……,n,所述i表示待选共识节点的序号,所述n表示所有待选共识节点的总数量,H表示哈希函数,v当前视图的编号,v的初始值为1,blockpre表示联盟链上一轮共识过程中的共识节点对应的哈希值,σi表示序号为i的待选共识节点上存储的私钥,表示利用σi对v、blockpre和i进行签名,表示对签名后的签名数据进行哈希运算;Pi表示序号为i的待选节点对应的哈希值。
3.根据权利要求2所述的一种应用于联盟链的拜占庭容错共识方法,其特征在于,所述S2具体为:
根据每一个待选节点对应的哈希值Pi,计算得到Pm,所述
选出序号为m的待选共识节点作为此轮共识过程的第一共识节点。
4.根据权利求3所述的一种应用于联盟链的拜占庭容错共识方法,其特征在于,所述S3具体为:
通过所述第一共识节点生成提案信息;
所述提案信息包括
其中,所述PrepareRequest为预设的第一标识;所述m表示此轮共识过程中的第一共识节点的序号;所述blocknew表示此轮共识过程中的第一共识节点对应的哈希值;所述其中,所述pki表示序号为i的待选共识节点上存储的公钥,ki表示与序号为i的待选节点对应的随机数,所述n为待选节点的总数量;所有待选节点通过私钥进行签名时采用的算法均为椭圆曲线签名算法;所述G为椭圆曲线的基点坐标;r=H(Q||PK||m)mods,所述s为椭圆曲线的阶,所述mod为求余函数;表示第一共识节点上存储的私钥;表示通过第一共识节点上的私钥对PrepareRequest、v、m、blocknew、r、Q、PK进行签名后得到的签名数据;
通过所述第一共识节点分别发送所述提案信息至所有的待选共识节点。
5.根据权利求4所述的一种应用于联盟链的拜占庭容错共识方法,其特征在于,所述S3和S4之间还包括:
当待选共识节点接收到所述提案信息时,通过所述待选第一共识节点对所述提案信息进行验证,若验证通过后,则发送验证通过信息至所述第一共识节点;
所述验证通过信息包括<PrepareResponse,v,i,wi>,其中i≠m;所述PrepareResponse表示预设的第二标识,所述i表示该待选共识节点的序号,wi=(ki-r·ski)mods,所述ski指序号为i的待选共识节点上存储的私钥。
6.根据权利求5所述的一种应用于联盟链的拜占庭容错共识方法,其特征在于,所述S4具体为:
所述第一共识节点根据接收到的待选共识节点发送的验证通过信息,计算其中Bs[i]表示第i个待选共识节点对应的权重值;Bs[i]表示第i个待选共识节点对应的权重值;若接收到序号为i的待选共识节点发送的验证信息,则Bs[i]=1;否则Bs[i]=0;
通过第一共识节点分别发送标识信息至每一个待选节点,所述标识信息包括<Commit,v,m,r,s,Bs>,其中Commit表示预设第三标识,所述Bs包括Bs[1]、Bs[2]、……、Bs[n];
若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识;
否则,执行信息更新步骤。
7.根据权利求6所述的一种应用于联盟链的拜占庭容错共识方法,其特征在于,所述信息更新步骤,具体为:
S50,预设变量k,所述k的初始值为1;
S51:令vk=v+k;
S52:每一个待选共识节点发起视图更换请求;
S53:若经过预设时间间隔后,接收到不少于n-f个互不相同的待选共识节点发送的更新后的视图编号为vk时,令v=vk,并重复执行S1-S4;所述f是联盟链系统中最多能容纳的错误节点数量;
S54:否则令k=k+1;重复执行步骤S51-S53。
8.一种应用于联盟链的拜占庭容错共识终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
S1:在每一轮共识过程中,根据每一个待选共识节点上存储的私钥、每一个待选共识节点的序号、当前的视图的编号及联盟链在上一轮共识过程中产生的区块对应的哈希值,计算得到每一个待选节点对应的哈希值;
S2:根据每一个待选节点对应的哈希值,选出唯一的待选共识节点作为此轮共识过程的第一共识节点;
S3:通过所述第一共识节点生成提案信息,并分别发送所述提案信息至每一个待选共识节点;
S4:根据第一共识节点接收待选共识节点发送的所述提案信息对应的验证通过信息,生成标识信息;通过所述第一共识节点分别发送所述标识信息至每一个待选共识节点,若所述第一共识节点接收到的所述标识信息对应的验证通过信息的个数超过预设数目,则执行下一轮共识。
9.根据权利要求8所述的一种应用于联盟链的拜占庭容错共识终端,其特征在于,所述S1具体为:
通过预设第一公式,分别计算每一个待选节点对应的哈希值;
所述第一公式为:
其中,所述i=1,2,……,n,所述i表示待选共识节点的序号,所述n表示所有待选共识节点的总数量,H表示哈希函数,v当前视图的编号,v的初始值为1,blockpre表示联盟链上一轮共识过程中的共识节点对应的哈希值,σi表示序号为i的待选共识节点上存储的私钥,表示利用σi对v、blockpre和i进行签名,表示对签名后的签名数据进行哈希运算;Pi表示序号为i的待选节点对应的哈希值。
10.根据权利要求9所述的一种应用于联盟链的拜占庭容错共识终端,其特征在于,所述S2具体为:
根据每一个待选节点对应的哈希值Pi,计算得到Pm,所述
选出序号为m的待选共识节点作为此轮共识过程的第一共识节点。
CN201811128292.1A 2018-09-27 2018-09-27 一种应用于联盟链的拜占庭容错共识方法及终端 Active CN109167661B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811128292.1A CN109167661B (zh) 2018-09-27 2018-09-27 一种应用于联盟链的拜占庭容错共识方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811128292.1A CN109167661B (zh) 2018-09-27 2018-09-27 一种应用于联盟链的拜占庭容错共识方法及终端

Publications (2)

Publication Number Publication Date
CN109167661A true CN109167661A (zh) 2019-01-08
CN109167661B CN109167661B (zh) 2021-04-13

Family

ID=64880398

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811128292.1A Active CN109167661B (zh) 2018-09-27 2018-09-27 一种应用于联盟链的拜占庭容错共识方法及终端

Country Status (1)

Country Link
CN (1) CN109167661B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109995536A (zh) * 2019-03-15 2019-07-09 广州杰赛科技股份有限公司 一种区块链共识方法、装置及可读存储介质
CN110443616A (zh) * 2019-06-28 2019-11-12 筑客网络技术(上海)有限公司 基于随机门限签名机制的拜占庭容错共识方法
CN110661656A (zh) * 2019-09-20 2020-01-07 广东卓启投资有限责任公司 一种区块链快速共识方法及装置
CN111083221A (zh) * 2019-12-13 2020-04-28 北京菲林方德科技有限公司 一种交易验证方法及装置
CN111314067A (zh) * 2020-02-05 2020-06-19 腾讯科技(深圳)有限公司 区块存储方法、装置、计算机设备及存储介质
CN111371744A (zh) * 2020-02-21 2020-07-03 重庆邮电大学 一种基于分布式密钥的拜占庭容错共识方法
CN111669277A (zh) * 2020-06-04 2020-09-15 新晨科技股份有限公司 一种区块链上基于vrf和实用拜占庭算法的共识方法
CN112132579A (zh) * 2020-09-30 2020-12-25 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN112491845A (zh) * 2020-11-18 2021-03-12 北京数码视讯科技股份有限公司 节点准入方法、共识方法、装置、电子设备及存储介质
CN113472750A (zh) * 2021-06-03 2021-10-01 中国联合网络通信集团有限公司 区块生成方法、节点和区块生成系统
US11250021B2 (en) 2020-04-17 2022-02-15 International Business Machines Corporation Faster view change for blockchain

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107124403A (zh) * 2017-04-14 2017-09-01 朱清明 区块链中共识区块的生成方法与计算设备
WO2018111295A1 (en) * 2016-12-16 2018-06-21 Hitachi, Ltd. Blockchain monitoring and management
CN108509615A (zh) * 2018-03-30 2018-09-07 深圳市元征科技股份有限公司 基于抽签机制的共识建立方法、装置及可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018111295A1 (en) * 2016-12-16 2018-06-21 Hitachi, Ltd. Blockchain monitoring and management
CN107124403A (zh) * 2017-04-14 2017-09-01 朱清明 区块链中共识区块的生成方法与计算设备
CN108509615A (zh) * 2018-03-30 2018-09-07 深圳市元征科技股份有限公司 基于抽签机制的共识建立方法、装置及可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
苑超,徐蜜雪,斯雪明: "基于聚合签名的共识算法优化方案", 《计算机科学》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109995536A (zh) * 2019-03-15 2019-07-09 广州杰赛科技股份有限公司 一种区块链共识方法、装置及可读存储介质
CN110443616B (zh) * 2019-06-28 2021-05-07 筑客网络技术(上海)有限公司 基于随机门限签名机制的拜占庭容错共识方法
CN110443616A (zh) * 2019-06-28 2019-11-12 筑客网络技术(上海)有限公司 基于随机门限签名机制的拜占庭容错共识方法
CN110661656A (zh) * 2019-09-20 2020-01-07 广东卓启投资有限责任公司 一种区块链快速共识方法及装置
CN110661656B (zh) * 2019-09-20 2022-03-04 广东卓启投资有限责任公司 一种区块链快速共识方法及装置
CN111083221A (zh) * 2019-12-13 2020-04-28 北京菲林方德科技有限公司 一种交易验证方法及装置
CN111083221B (zh) * 2019-12-13 2023-08-04 北京菲林方德科技有限公司 一种交易验证方法及装置
CN111314067A (zh) * 2020-02-05 2020-06-19 腾讯科技(深圳)有限公司 区块存储方法、装置、计算机设备及存储介质
CN111371744B (zh) * 2020-02-21 2022-06-03 重庆邮电大学 一种基于分布式密钥的拜占庭容错共识方法
CN111371744A (zh) * 2020-02-21 2020-07-03 重庆邮电大学 一种基于分布式密钥的拜占庭容错共识方法
US11250021B2 (en) 2020-04-17 2022-02-15 International Business Machines Corporation Faster view change for blockchain
US11775556B2 (en) 2020-04-17 2023-10-03 International Business Machines Corporation Faster view change for blockchain
CN111669277A (zh) * 2020-06-04 2020-09-15 新晨科技股份有限公司 一种区块链上基于vrf和实用拜占庭算法的共识方法
CN111669277B (zh) * 2020-06-04 2023-04-18 新晨科技股份有限公司 一种区块链上基于vrf和实用拜占庭算法的共识方法
CN112132579A (zh) * 2020-09-30 2020-12-25 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN112132579B (zh) * 2020-09-30 2022-08-12 深圳前海微众银行股份有限公司 一种区块链共识节点更新方法及装置
CN112491845A (zh) * 2020-11-18 2021-03-12 北京数码视讯科技股份有限公司 节点准入方法、共识方法、装置、电子设备及存储介质
CN112491845B (zh) * 2020-11-18 2023-04-25 北京数码视讯科技股份有限公司 普通节点准入方法、装置、电子设备及可读存储介质
CN113472750A (zh) * 2021-06-03 2021-10-01 中国联合网络通信集团有限公司 区块生成方法、节点和区块生成系统

Also Published As

Publication number Publication date
CN109167661B (zh) 2021-04-13

Similar Documents

Publication Publication Date Title
CN109167661A (zh) 一种应用于联盟链的拜占庭容错共识方法及终端
CN110245956B (zh) 一种基于异步多链的区块链交易确认方法及系统
CN109493221B (zh) 区块链中交易记录保密方法、设备、网络及存储介质
JP2020512708A (ja) 分散システム、メッセージ処理方法、ノード、クライアント及び記憶媒体
KR102170820B1 (ko) 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 시스템
CN110941859A (zh) 用于区块链形成共识的方法、设备、计算机可读存储介质和计算机程序产品
CN113095827B (zh) 匿名多重签名方法、计算机设备和存储介质
CN111640018B (zh) 一种区块链交易存在性验证方法及装置
CN112118239B (zh) 区块链共识方法及装置、电子设备、存储介质
Chen et al. Data dynamics for remote data possession checking in cloud storage
CN112241526B (zh) 一种基于sm9数字签名的批量验证方法和系统
CN109379343A (zh) 一种区块链的异构共识方法及终端
CN111478772A (zh) 一种流水线友好的签名和验签方法、设备及存储介质
CN112182113B (zh) 区块链共识方法、系统、电子设备及存储介质
Goyal Positive results for concurrently secure computation in the plain model
CN108337092A (zh) 用于在通信网络中执行集体认证的方法和系统
CN114519198A (zh) 区块链共识方法及计算机可读存储介质
CN114090682A (zh) 一种多通道联盟链上链方法、装置、设备及存储介质
CN113612604A (zh) 面向异步网络的安全分布式随机数生成方法及装置
CN112348518A (zh) 一种区块链交易证明的方法及装置
CN112436938A (zh) 数字签名的生成方法、装置和服务器
CN111865595B (zh) 一种区块链的共识方法及装置
CN114745131B (zh) 一种区块链的pbft改进共识算法
CN110545170A (zh) 一种基于密码抽签的区块链共识方法和装置以及设备
CN110990790A (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