CN111669277B - 一种区块链上基于vrf和实用拜占庭算法的共识方法 - Google Patents
一种区块链上基于vrf和实用拜占庭算法的共识方法 Download PDFInfo
- Publication number
- CN111669277B CN111669277B CN202010499181.2A CN202010499181A CN111669277B CN 111669277 B CN111669277 B CN 111669277B CN 202010499181 A CN202010499181 A CN 202010499181A CN 111669277 B CN111669277 B CN 111669277B
- Authority
- CN
- China
- Prior art keywords
- block
- voting
- message
- consensus
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种区块链上基于vrf和实用拜占庭算法的共识方法,包括以下步骤:步骤0,预计算:对于区块链系统中的每个区块链节点,计算其是否具有出块资格、预投票资格、确定投票资格和异常情况投票资格。步骤1,出块过程;步骤2,预投票过程;步骤3,确定投票过程;步骤4,异常情况投票过程。具有以下优点:1)参与共识的所有区块链节点的时钟不需要严格同步,降低了系统对节点时间管理的负担。2)区块链系统中,只有少量区块链节点进行预投票、确定投票或异常情况投票,从而降低了系统资源开销。
Description
技术领域
本发明属于区块链技术领域,具体涉及一种区块链上基于vrf和实用拜占庭算法的共识方法。
背景技术
共识算法是分布式系统中保证系统状态一致性的重要技术,是分布式文件系统、分布式数据库的重要基础。区块链采用分布式共识算法在无中心节点控制,又可能存在破坏节点的环境下确立系统状态,从而建立信任。
现有的区块链系统,主要具有以下问题:1)参与共识的所有区块链节点的时钟必须严格同步,系统对节点时间管理的负担较高。2)区块链系统中所有区块链节点,无论在预投票过程,还是确定投票过程,均对区块进行投票,系统资源开销较高。
发明内容
针对现有技术存在的缺陷,本发明提供一种区块链上基于vrf和实用拜占庭算法的共识方法,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种区块链上基于vrf和实用拜占庭算法的共识方法,包括以下步骤:
步骤0A,假设本地账本当前存储的区块链共包括h个成链状的区块,按从前向后的顺序,分别为:区块B1,区块B2,…,区块Bh;
区块链系统一共包括n个区块链节点,分别为:区块链节点P1,区块链节点P2,…,区块链节点Pi,…,区块链节点Pn;其中,i=1,2,…,n;对于任意的区块链节点Pi,均绑定存储以下参数:出块系数W1、投票系数W2、节点权重W3i、总权重W4、延迟时间W5、最新共识区块的公共字符串W6、共识轮数W7、最新共识区块的索引值W8和FAULT字符串W9;
其中,总权重W4为当前各个区块链节点的节点权重之和;各个区块链节点的节点权重W3i不相同;各个区块链节点的以下8个参数均相同:出块系数W1、投票系数W2、总权重W4、延迟时间W5、最新共识区块的公共字符串W6、共识轮数W7、最新共识区块的索引值W8和FAULT字符串W9;
每个区块链节点还配置私钥和公钥;
步骤0B,初始化步骤:
初始化各个区块链节点的共识轮数W7=1;
预配置各个区块链节点的出块系数W1、投票系数W2、节点权重W3i、延迟时间W5和FAULT字符串W9;
在系统运行过程中,当有新的区块链节点加入到区块链系统,或区块链系统中存在离开的区块链节点时,实时更新总权重W4;
向本地账本查询区块链,得到最新的区块Bh,根据区块Bh,得到区块Bh包含的公共字符串,即为最新共识区块的公共字符串W6;得到区块Bh的索引值,即为最新共识区块的索引值W8;进而初始化各个区块链节点的最新共识区块的公共字符串W6和最新共识区块的索引值W8;
步骤0,预计算:
步骤0-1),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有出块资格:
步骤a1),将步骤1的标识字符串step1、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1a;
步骤a2),采用可验证随机函数,对字符串str1a、延迟时间W5和私钥进行计算,生成第一密码学凭证;其中,所述第一密码学凭证中包含随机字符串str2a;
步骤a3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2a、节点权重W3i、总权重W4和出块系数W1进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有出块资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有出块资格,同时,将步骤1的标识字符串step1、最新共识区块的公共字符串W6、共识轮数W7以及第一密码学凭证打包生成第一投票凭证;
步骤0-2),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有预投票资格:
步骤b1),将步骤2的标识字符串step2、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1b;
步骤b2),采用可验证随机函数,对字符串str1b、延迟时间W5和私钥进行计算,生成第二密码学凭证;其中,所述第二密码学凭证中包含随机字符串str2b;
步骤b3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2b、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有预投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有预投票资格,,同时,将步骤2的标识字符串step2、最新共识区块的公共字符串W6、共识轮数W7以及第二密码学凭证打包生成第二投票凭证;
步骤0-3),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有确定投票资格:
步骤c1),将步骤3的标识字符串step3、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1c;
步骤c2),采用可验证随机函数,对字符串str1c、延迟时间W5和私钥进行计算,生成第三密码学凭证;其中,所述第三密码学凭证中包含随机字符串str2c;
步骤c3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2c、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有确定投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有确定投票资格,,同时,将步骤3的标识字符串step3、最新共识区块的公共字符串W6、共识轮数W7以及第一密码学凭证打包生成第三投票凭证;
步骤0-4),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有异常情况投票资格:
步骤d1),将步骤4的标识字符串step4、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1d;
步骤d2),采用可验证随机函数,对字符串str1d、延迟时间W5和私钥进行计算,生成第四密码学凭证;其中,所述第四密码学凭证中包含随机字符串str2d;
步骤d3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2d、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有异常情况投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有异常情况投票资格,同时,将步骤4的标识字符串step4、最新共识区块的公共字符串W6、共识轮数W7以及第四密码学凭证打包生成第四投票凭证;
步骤1,出块过程:
步骤1.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2,并执行对应的停止条件触发流程:
停止条件1:只要任意的区块链节点Pi接收到d0个确定投票区块消息,其中,确定投票区块消息均是对特定的区块Bmax2进行的确定投票;并且,d0大于投票系数W2的2/3;则区块链节点Pi停止当前轮的共识,并等待对应的区块Bmax2到达;
然后,区块链节点Pi判断超时前是否收到对应的区块Bmax2,如果收到,则区块链节点Pi以区块Bmax2作为最终共识到的区块,并记录在本地账本中,将共识到的区块添加到当前区块链的最后位置;然后,区块链节点Pi将区块Bmax2对应的d0个确定投票区块消息打包,得到共识包;然后将共识包在全网广播同步,以通知其他区域链节点,共识过程结束;如果没有收到,判断是否具有异常情况投票资格,如果不具有,则令共识轮数W7=共识轮数W7+1,返回步骤0,进入下一轮重新共识过程;如果具有,将步骤d3得到的第四投票凭证以及FAULT字符串W9打包成第一错误投票消息,并在全网广播;然后令共识轮数W7=共识轮数W7+1,返回步骤0,进入下一轮重新共识过程;
停止条件2:区块链节点Pi通过与其他区块链节点同步的方式直接接收到区块Bmax2和d0个对区块Bmax2的确定投票区块消息,并且,d0大于投票系数W2的2/3;则区块链节点Pi完成新的共识区块同步,将区块Bmax2作为最终共识到的区块,并记录在本地账本中,将共识到的区块Bmax2添加到当前区块链的最后位置,结束当前共识流程;
步骤1.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有出块资格,则执行步骤1.4;如果区块链节点Pi具有出块资格,则执行步骤1.3;
步骤1.3,如果共识轮数W7等于1,或者,区块链节点Pi收到来自于上一轮的第一错误投票消息的数量超过投票系数W2的2/3:
则:区块链节点Pi打包生成新区块BPi,该新区块BPi包括未全网共识的交易信息以及新的公共字符串W6i;区块链节点Pi将新区块BPi全网广播;然后,区块链节点Pi将步骤a3得到的第一投票凭证以及新区块BPi的区块头的hash值打包成初选区块消息,并在全网广播;假设共有f个区块链节点具有出块资格,则一共在全网广播f个初选区块消息以及f个新区块;
判断是否同时满足以下两个条件:条件1)共识轮数W7大于等于2;条件2)区块链节点Pi对上一轮接收到的所有第二错误投票消息进行统计分析,得到得票最高的区块Bmax4,区块链节点Pi收到上一轮对区块Bmax4的第二错误投票消息的数量超过投票系数W2的2/3;如果满足,则区块链节点Pi将第一投票凭证和区块Bmax4的区块头的hash值打包成初选区块消息,并在全网广播初选区块消息;然后执行步骤1.4;如果不满足,则直接执行步骤1.4;
步骤1.4,当计时器计时达到延迟时间W5时,执行步骤2;
步骤2,预投票过程:
步骤2.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤2.2;
步骤2.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有预投票资格,则执行步骤2.4;如果区块链节点Pi具有预投票资格,则执行步骤2.3;
步骤2.3,如果共识轮数W7等于1,或者,区块链节点Pi收到上一轮的第一错误投票消息的数量超过投票系数W2的2/3:
则:由于存在网络延迟,区块链节点Pi接收到最多f个初选区块消息;然后,从接收到的所有初选区块消息中,选出优先级最高的区块Bmax1;然后,区块链节点Pi将步骤b3得到的第二投票凭证以及区块Bmax1的区块头的hash值打包成预投票区块消息,并在全网广播;假设共有k个区块链节点具有预投票资格,则一共在全网广播k个预投票区块消息;
判断是否同时满足以下两个条件:条件1)共识轮数W7大于等于2;条件2)区块链节点Pi对上一轮接收到的所有第二错误投票消息进行统计分析,得到得票最高的区块Bmax5,区块链节点Pi收到上一轮对区块Bmax5的第二错误投票消息的数量超过投票系数W2的2/3;如果满足,则区块链节点Pi将第二投票凭证和区块Bmax5的区块头的hash值打包成预投票区块消息,并在全网广播预投票区块消息;然后执行步骤2.4;如果不满足,则直接执行步骤2.4;
步骤2.4,当计时器计时达到延迟时间W5时,执行步骤3;
步骤3,确定投票过程:
步骤3.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤3.2;
步骤3.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有确定投票资格,则执行步骤3.4;如果区块链节点Pi具有确定投票资格,则执行步骤3.3;
步骤3.3,由于存在网络延迟,区块链节点Pi接收到最多k个预投票区块消息;然后,区块链节点Pi对接收到的所有预投票区块消息进行统计分析,得到总预投票数w0以及预投票得票最高的区块Bmax6;
判断w0是否大于2/3*W2,如果不大于,则执行步骤3.4;如果大于,则将步骤c3得到的第三投票凭证以及区块Bmax6的区块头的hash值打包成确定投票区块消息,并在全网广播;假设共有p个区块链节点具有确定投票资格,则一共在全网广播p个确定投票区块消息;然后执行步骤3.4;
步骤3.4,当计时器计时达到延迟时间W5时,执行步骤4;
步骤4,异常情况投票过程:
步骤4.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤4.2;
步骤4.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有异常情况投票资格,则执行步骤4.6;如果区块链节点Pi具有异常情况投票资格,则执行步骤4.3;
步骤4.3,区块链节点Pi统计接收到的预投票区块消息的数量,假设共接收到k0个预投票区块消息,其中,k0小于等于k;然后,区块链节点Pi对接收到的所有预投票区块消息进行统计分析,得到总预投票数k0以及预投票得票最高的区块Bmax3;
判断k0是否大于2/3*W2,如果不大于,则执行步骤4.4;如果大于,则执行步骤4.5;
步骤4.4,区块链节点Pi将步骤d3得到的第四投票凭证以及FAULT字符串W9打包成第一错误投票消息,并在全网广播;
步骤4.5,区块链节点Pi将步骤d3得到的第四投票凭证以及区块Bmax3的区块头的hash值打包成第二错误投票消息,并在全网广播;
步骤4.6,当计时器计时达到延迟时间W5时,执行步骤5;
步骤5,令共识轮数W7=共识轮数W7+1,返回执行步骤0。
优选的,步骤1.3中,当区块链节点Pi将初选区块消息在全网广播时,对于其他任意接收到初选区块消息的区块链节点Pj,区块链节点Pj对初选区块消息进行分析,解析出初选区块消息包含的第一投票凭证,然后,采用公钥对第一投票凭证进行合法性检验,如果检测通过,则接收并记录初选区块消息;如果不通过,则直接不接收该初选区块消息。
优选的,步骤2.3中,当区块链节点Pi将预投票区块消息在全网广播时,对于其他任意接收到预投票区块消息的区块链节点Pj,区块链节点Pj对预投票区块消息进行分析,解析出预投票区块消息包含的第二投票凭证,然后,采用公钥对第二投票凭证进行合法性检验,如果检测通过,则接收并记录预投票区块消息;如果不通过,则直接不接收该预投票区块消息。
优选的,步骤3.3中,当区块链节点Pi将确定投票区块消息在全网广播时,对于其他任意接收到确定投票区块消息的区块链节点Pj,区块链节点Pj对确定投票区块消息进行分析,解析出确定投票区块消息包含的第三投票凭证,然后,采用公钥对第三投票凭证进行合法性检验,如果检测通过,则接收并记录确定投票区块消息;如果不通过,则直接不接收该确定投票区块消息。
优选的,步骤4.4中,当区块链节点Pi将第一错误投票消息在全网广播时,对于其他任意接收到第一错误投票消息的区块链节点Pj,区块链节点Pj对第一错误投票消息进行分析,解析出第一错误投票消息包含的第四投票凭证,然后,采用公钥对第四投票凭证进行合法性检验,如果检测通过,则接收并记录第一错误投票消息;如果不通过,则直接不接收该第一错误投票消息;
步骤4.5中,当区块链节点Pi将第二错误投票消息在全网广播时,对于其他任意接收到第二错误投票消息的区块链节点Pj,区块链节点Pj对第二错误投票消息进行分析,解析出第二错误投票消息包含的第四投票凭证,然后,采用公钥对第四投票凭证进行合法性检验,如果检测通过,则接收并记录第二错误投票消息;如果不通过,则直接不接收该第二错误投票消息。
本发明提供的一种区块链上基于vrf和实用拜占庭算法的共识方法具有以下优点:
1)参与共识的所有区块链节点的时钟不需要严格同步,降低了系统对节点时间管理的负担。2)区块链系统中,只有少量区块链节点进行预投票、确定投票或异常情况投票,从而降低了系统资源开销。
附图说明
图1为本发明提供的一种区块链上基于vrf和实用拜占庭算法的共识方法的流程示意图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供一种区块链上基于vrf和实用拜占庭算法的共识方法,包括以下步骤:
步骤0A,假设本地账本当前存储的区块链共包括h个成链状的区块,按从前向后的顺序,分别为:区块B1,区块B2,…,区块Bh;
区块链系统一共包括n个区块链节点,分别为:区块链节点P1,区块链节点P2,…,区块链节点Pi,…,区块链节点Pn;其中,i=1,2,…,n;对于任意的区块链节点Pi,均绑定存储以下参数:出块系数W1、投票系数W2、节点权重W3i、总权重W4、延迟时间W5、最新共识区块的公共字符串W6、共识轮数W7、最新共识区块的索引值W8和FAULT字符串W9;
其中,总权重W4为当前各个区块链节点的节点权重之和;各个区块链节点的节点权重W3i不相同;各个区块链节点的以下8个参数均相同:出块系数W1、投票系数W2、总权重W4、延迟时间W5、最新共识区块的公共字符串W6、共识轮数W7、最新共识区块的索引值W8和FAULT字符串W9;
每个区块链节点还配置私钥和公钥;
步骤0B,初始化步骤:
初始化各个区块链节点的共识轮数W7=1;
预配置各个区块链节点的出块系数W1、投票系数W2、节点权重W3i、延迟时间W5和FAULT字符串W9;
在系统运行过程中,当有新的区块链节点加入到区块链系统,或区块链系统中存在离开的区块链节点时,实时更新总权重W4;
向本地账本查询区块链,得到最新的区块Bh,根据区块Bh,得到区块Bh包含的公共字符串,即为最新共识区块的公共字符串W6;得到区块Bh的索引值,即为最新共识区块的索引值W8;进而初始化各个区块链节点的最新共识区块的公共字符串W6和最新共识区块的索引值W8;
本步骤中,各个参数的含义表示如下:
步骤0,预计算:
步骤0-1),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有出块资格:
步骤a1),将步骤1的标识字符串step1、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1a;
步骤a2),采用可验证随机函数,对字符串str1a、延迟时间W5和私钥进行计算,生成第一密码学凭证;其中,所述第一密码学凭证中包含随机字符串str2a;
步骤a3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2a、节点权重W3i、总权重W4和出块系数W1进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有出块资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有出块资格,同时,将步骤1的标识字符串step1、最新共识区块的公共字符串W6、共识轮数W7以及第一密码学凭证打包生成第一投票凭证;
步骤0-2),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有预投票资格:
步骤b1),将步骤2的标识字符串step2、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1b;
步骤b2),采用可验证随机函数,对字符串str1b、延迟时间W5和私钥进行计算,生成第二密码学凭证;其中,所述第二密码学凭证中包含随机字符串str2b;
步骤b3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2b、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有预投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有预投票资格,,同时,将步骤2的标识字符串step2、最新共识区块的公共字符串W6、共识轮数W7以及第二密码学凭证打包生成第二投票凭证;
步骤0-3),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有确定投票资格:
步骤c1),将步骤3的标识字符串step3、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1c;
步骤c2),采用可验证随机函数,对字符串str1c、延迟时间W5和私钥进行计算,生成第三密码学凭证;其中,所述第三密码学凭证中包含随机字符串str2c;
步骤c3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2c、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有确定投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有确定投票资格,,同时,将步骤3的标识字符串step3、最新共识区块的公共字符串W6、共识轮数W7以及第一密码学凭证打包生成第三投票凭证;
步骤0-4),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有异常情况投票资格:
步骤d1),将步骤4的标识字符串step4、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1d;
步骤d2),采用可验证随机函数,对字符串str1d、延迟时间W5和私钥进行计算,生成第四密码学凭证;其中,所述第四密码学凭证中包含随机字符串str2d;
步骤d3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2d、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有异常情况投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有异常情况投票资格,同时,将步骤4的标识字符串step4、最新共识区块的公共字符串W6、共识轮数W7以及第四密码学凭证打包生成第四投票凭证;
步骤1,出块过程:
步骤1.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2,并执行对应的停止条件触发流程:
停止条件1:只要任意的区块链节点Pi接收到d0个确定投票区块消息,其中,确定投票区块消息均是对特定的区块Bmax2进行的确定投票;并且,d0大于投票系数W2的2/3;则区块链节点Pi停止当前轮的共识,并等待对应的区块Bmax2到达;
然后,区块链节点Pi判断超时前是否收到对应的区块Bmax2,如果收到,则区块链节点Pi以区块Bmax2作为最终共识到的区块,并记录在本地账本中,将共识到的区块添加到当前区块链的最后位置;然后,区块链节点Pi将区块Bmax2对应的d0个确定投票区块消息打包,得到共识包;然后将共识包在全网广播同步,以通知其他区域链节点,共识过程结束;如果没有收到,判断是否具有异常情况投票资格,如果不具有,则令共识轮数W7=共识轮数W7+1,返回步骤0,进入下一轮重新共识过程;如果具有,将步骤d3得到的第四投票凭证以及FAULT字符串W9打包成第一错误投票消息,并在全网广播;然后令共识轮数W7=共识轮数W7+1,返回步骤0,进入下一轮重新共识过程;
停止条件2:区块链节点Pi通过与其他区块链节点同步的方式直接接收到区块Bmax2和d0个对区块Bmax2的确定投票区块消息,并且,d0大于投票系数W2的2/3;则区块链节点Pi完成新的共识区块同步,将区块Bmax2作为最终共识到的区块,并记录在本地账本中,将共识到的区块Bmax2添加到当前区块链的最后位置,结束当前共识流程;
步骤1.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有出块资格,则执行步骤1.4;如果区块链节点Pi具有出块资格,则执行步骤1.3;
步骤1.3,如果共识轮数W7等于1,或者,区块链节点Pi收到来自于上一轮的第一错误投票消息的数量超过投票系数W2的2/3:
则:区块链节点Pi打包生成新区块BPi,该新区块BPi包括未全网共识的交易信息以及新的公共字符串W6i;区块链节点Pi将新区块BPi全网广播;然后,区块链节点Pi将步骤a3得到的第一投票凭证以及新区块BPi的区块头的hash值打包成初选区块消息,并在全网广播;假设共有f个区块链节点具有出块资格,则一共在全网广播f个初选区块消息以及f个新区块;
本步骤中,当区块链节点Pi将初选区块消息在全网广播时,对于其他任意接收到初选区块消息的区块链节点Pj,区块链节点Pj对初选区块消息进行分析,解析出初选区块消息包含的第一投票凭证,然后,采用公钥对第一投票凭证进行合法性检验,如果检测通过,则接收并记录初选区块消息;如果不通过,则直接不接收该初选区块消息。
判断是否同时满足以下两个条件:条件1)共识轮数W7大于等于2;条件2)区块链节点Pi对上一轮接收到的所有第二错误投票消息进行统计分析,得到得票最高的区块Bmax4,区块链节点Pi收到上一轮对区块Bmax4的第二错误投票消息的数量超过投票系数W2的2/3;如果满足,则区块链节点Pi将第一投票凭证和区块Bmax4的区块头的hash值打包成初选区块消息,并在全网广播初选区块消息;然后执行步骤1.4;如果不满足,则直接执行步骤1.4;
步骤1.4,当计时器计时达到延迟时间W5时,执行步骤2;
步骤2,预投票过程:
步骤2.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤2.2;
步骤2.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有预投票资格,则执行步骤2.4;如果区块链节点Pi具有预投票资格,则执行步骤2.3;
步骤2.3,如果共识轮数W7等于1,或者,区块链节点Pi收到上一轮的第一错误投票消息的数量超过投票系数W2的2/3:
则:由于存在网络延迟,区块链节点Pi接收到最多f个初选区块消息;然后,从接收到的所有初选区块消息中,选出优先级最高的区块Bmax1;然后,区块链节点Pi将步骤b3得到的第二投票凭证以及区块Bmax1的区块头的hash值打包成预投票区块消息,并在全网广播;假设共有k个区块链节点具有预投票资格,则一共在全网广播k个预投票区块消息;
本步骤中,当区块链节点Pi将预投票区块消息在全网广播时,对于其他任意接收到预投票区块消息的区块链节点Pj,区块链节点Pj对预投票区块消息进行分析,解析出预投票区块消息包含的第二投票凭证,然后,采用公钥对第二投票凭证进行合法性检验,如果检测通过,则接收并记录预投票区块消息;如果不通过,则直接不接收该预投票区块消息。
判断是否同时满足以下两个条件:条件1)共识轮数W7大于等于2;条件2)区块链节点Pi对上一轮接收到的所有第二错误投票消息进行统计分析,得到得票最高的区块Bmax5,区块链节点Pi收到上一轮对区块Bmax5的第二错误投票消息的数量超过投票系数W2的2/3;如果满足,则区块链节点Pi将第二投票凭证和区块Bmax5的区块头的hash值打包成预投票区块消息,并在全网广播预投票区块消息;然后执行步骤2.4;如果不满足,则直接执行步骤2.4;
步骤2.4,当计时器计时达到延迟时间W5时,执行步骤3;
步骤3,确定投票过程:
步骤3.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤3.2;
步骤3.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有确定投票资格,则执行步骤3.4;如果区块链节点Pi具有确定投票资格,则执行步骤3.3;
步骤3.3,由于存在网络延迟,区块链节点Pi接收到最多k个预投票区块消息;然后,区块链节点Pi对接收到的所有预投票区块消息进行统计分析,得到总预投票数w0以及预投票得票最高的区块Bmax6;
判断w0是否大于2/3*W2,如果不大于,则执行步骤3.4;如果大于,则将步骤c3得到的第三投票凭证以及区块Bmax6的区块头的hash值打包成确定投票区块消息,并在全网广播;假设共有p个区块链节点具有确定投票资格,则一共在全网广播p个确定投票区块消息;然后执行步骤3.4;
本步骤中,当区块链节点Pi将确定投票区块消息在全网广播时,对于其他任意接收到确定投票区块消息的区块链节点Pj,区块链节点Pj对确定投票区块消息进行分析,解析出确定投票区块消息包含的第三投票凭证,然后,采用公钥对第三投票凭证进行合法性检验,如果检测通过,则接收并记录确定投票区块消息;如果不通过,则直接不接收该确定投票区块消息。
步骤3.4,当计时器计时达到延迟时间W5时,执行步骤4;
步骤4,异常情况投票过程:
步骤4.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤4.2;
步骤4.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有异常情况投票资格,则执行步骤4.6;如果区块链节点Pi具有异常情况投票资格,则执行步骤4.3;
步骤4.3,区块链节点Pi统计接收到的预投票区块消息的数量,假设共接收到k0个预投票区块消息,其中,k0小于等于k;然后,区块链节点Pi对接收到的所有预投票区块消息进行统计分析,得到总预投票数k0以及预投票得票最高的区块Bmax3;
判断k0是否大于2/3*W2,如果不大于,则执行步骤4.4;如果大于,则执行步骤4.5;
步骤4.4,区块链节点Pi将步骤d3得到的第四投票凭证以及FAULT字符串W9打包成第一错误投票消息,并在全网广播;
本步骤中,当区块链节点Pi将第一错误投票消息在全网广播时,对于其他任意接收到第一错误投票消息的区块链节点Pj,区块链节点Pj对第一错误投票消息进行分析,解析出第一错误投票消息包含的第四投票凭证,然后,采用公钥对第四投票凭证进行合法性检验,如果检测通过,则接收并记录第一错误投票消息;如果不通过,则直接不接收该第一错误投票消息;
步骤4.5,区块链节点Pi将步骤d3得到的第四投票凭证以及区块Bmax3的区块头的hash值打包成第二错误投票消息,并在全网广播;
本步骤中,当区块链节点Pi将第二错误投票消息在全网广播时,对于其他任意接收到第二错误投票消息的区块链节点Pj,区块链节点Pj对第二错误投票消息进行分析,解析出第二错误投票消息包含的第四投票凭证,然后,采用公钥对第四投票凭证进行合法性检验,如果检测通过,则接收并记录第二错误投票消息;如果不通过,则直接不接收该第二错误投票消息。
步骤4.6,当计时器计时达到延迟时间W5时,执行步骤5;
步骤5,令共识轮数W7=共识轮数W7+1,返回执行步骤0。
本发明提供的一种区块链上基于vrf和实用拜占庭算法的共识方法,算法执行逻辑复杂,为方便对本发明理解,仅以一种简单的情况为例,对本发明步骤逻辑举例描述为:
步骤1)、假设n为一万个,即:区块链系统一共包括一万个区块链节点;在步骤0的预计算过程中,每个区块链节点均独立判断完成自身是否具有出块资格、预投票资格、确定投票资格和异常情况投票资格的判断;
步骤2)、然后,一万个区块链节点同步进入到步骤1的出块过程;在没有触发停止条件时,假设当前共识轮数W7等于1,假设共有26个区块链节点具有出块资格,因此,每个具有出块资格的区块链节点均生成一个新区块,因此,共生成26个新区块,分别表示为新区块BP1,新区块BP2,…,新区块BP26;
同时,每个新区块进行全网广播;此时,只要生成一个新区块,立即进行全网广播的目的为:由于新区块的字节数较多,广播并传输到其他区块链节点的时间较慢,所以,为了提高共识速度,立即进行全网广播;同时,对于每个生成新区块的区块链节点,例如,区块链节点P2生成新区块BP2,然后,区块链节点P2均将第一投票凭证以及新区块BP2的区块头的hash值打包成初选区块消息,并在全网广播;此处进行全网广播的目的为:通知全网所有区块链节点,本区块链节点P2生成新区块BP2;而对于接收到初选区块消息的其他区块链节点,根据公钥对初选区块消息的合法性进行验证,如果验证通过,则将初选区块消息存储在本地;如果验证不通过,则直接不接收该初选区块消息;
优选的,在广播区块的同时,初选区块消息也在全网广播,由于初选区块消息字节数极少,将先于新区块在全网完成同步。节点可以通过其收集到的初选区块消息,根据区块优先级,锁定优先级最高的区块,进而终止广播优先级低的区块,减少网络通信负荷。
步骤3)、然后,一万个区块链节点同步进入到步骤2的预投票过程;在没有触发停止条件时,假设当前共识轮数W7等于1,假设共有500个区块链节点具有预投票资格,因此,对于这500个区块链节点,表示为C1-C500,均进行以下操作:以区块链节点C10为例,如果不存在网络延迟,则区块链节点C10共可接收到26条初选区块消息,分别是对新区块BP1,新区块BP2,…,新区块BP26的初选区块消息;然后,按照优先级,选出优先级最高的区块,例如为新区块BP10;此时,由于各个区块链节点设置的优选级方式相同,因此,如果不存在网络延迟,则C1-C500这500个区块链节点应该选出相同的新区块BP10;但是,如果存在网络延迟,例如,区块链节点C9只接收到25条初选区块消息,并且不包含有对新区块BP10的初选区块消息,则区块链节点C9会选出其他新区块;
区块链节点C10选出新区块BP10后,表明区块链节点C10对新区块BP10进行一次预投票,票数为1;然后,区块链节点C10将第二投票凭证以及新区块BP10的区块头的hash值打包成预投票区块消息,并在全网广播,以通知其他区块链节点,本区块链节点C10对新区块BP10投一票;
由于共有500个区块链节点具有预投票资格,因此,全网广播500个预投票区块消息;
步骤4)、然后,一万个区块链节点同步进入到步骤3的确定投票过程;在没有触发停止条件时,假设当前共识轮数W7等于1,假设共有500个区块链节点具有确定投票资格,因此,对于这500个区块链节点,表示为D1-D500,均进行以下操作:
以区块链节点D20为例,如果不存在网络延迟,则区块链节点D20共可接收到500条预投票区块消息,并且,如果不存在恶意节点,则这500条预投票区块消息应该都是对新区块BP10的预投票,表明新区块BP10的预投票数为500;但是,由于有可能存在恶意节点,以及可能发生网络延迟情况,因此,假设区块链节点D20一共只接收到490条预投票区块消息;然后对接收到的490条预投票区块消息进行统计分析,得到预投票得票最高的区块,假设仍然为新区块BP10;然后,判断490是否大于2/3*W2,此处为大于,因此,区块链节点D20对新区块BP10进行确定性投票,票数是1;然后,将第三投票凭证以及新区块BP10的区块头的hash值打包成确定投票区块消息,并在全网广播;实际应用中,只要当区块链节点D20一共只接收到针对新区块BP10的2/3*W2个投票后,就可以不再接收后面的预投票区块消息,直接进行后续流程即可,从而使得整体共识效率更高。
对于一万个区块链节点中的任意一个区块链节点,例如区块链节点H1,只要其在没有进入到步骤4的异常情况投票过程时,在没有网络延迟和恶意节点时,其一共原则上可接收到500条确定投票区块消息,而且均是对新区块BP10的确定投票区块消息,但是,实际上,当节点接收到2/3*W2条确定投票区块消息时,就会触发停止条件;然后,区块链节点H1在超时前成功接收到步骤2)广播的新区块BP10,则代表新区块BP10为最终共识到的区块,并记录在本地账本中;然后,区块链节点H1将新区块BP10对应的所有确定投票区块消息打包,得到共识包;然后将共识包在全网广播同步,以通知其他区域链节点,共识过程结束。
本发明提供的一种区块链上基于vrf和实用拜占庭算法的共识方法,主要特点如下:
(1)区块链系统一共包括n个区块链节点,在共识过程中,每个区块链节点独立运行步骤0-步骤4,即运行资格预计算过程、出块过程、预投票过程、确定投票过程和异常情况投票过程;在运行过程中,并不要求各个区块链节点的时间完全同步,只要各个区块链节点同时启动,然后各个区块链节点设置完全相同的延迟时间W5,从而保证各个区块链节点同时进入资格预计算过程,同时进入到出块过程,同时进入到预投票过程、确定投票过程和异常情况投票过程即可。由此减轻了系统对节点时间管理的负担。
(2)本发明中,具有出块资格的区块链节点数、具有预投票资格的区块链节点数、具有确定投票资格的区块链节点数以及具有异常情况投票资格的区块链节点数均远远小于区块链系统中总的区块链节点数n,因此,在原拜占庭协议中,每个步骤均会产生n个投票信息,需要n个区块链节点在网络中交互完成投票,系统开销非常大;而本发明中,参与投票的区块链节点数显著降低,从而降低系统开销;
(3)对于预投票过程,确定投票过程以及异常情况投票过程,阈值均设计为2/3*W2,因此,能够容忍1/3恶意节点(含故障节点);
(4)只要产生新区块,立刻在全网同步新区块,同时进行对新区块的共识过程,有效提升了共识效率;
(5)由于区块链节点对总权重W4实时更新,所以允许网络新增、删除区块链节点,突破了拜占庭协议框架要求节点数量不变这一局限。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (5)
1.一种区块链上基于vrf和实用拜占庭算法的共识方法,其特征在于,包括以下步骤:
步骤0A,假设本地账本当前存储的区块链共包括h个成链状的区块,按从前向后的顺序,分别为:区块B1,区块B2,…,区块Bh;
区块链系统一共包括n个区块链节点,分别为:区块链节点P1,区块链节点P2,…,区块链节点Pi,…,区块链节点Pn;其中,i=1,2,…,n;对于任意的区块链节点Pi,均绑定存储以下参数:出块系数W1、投票系数W2、节点权重W3i、总权重W4、延迟时间W5、最新共识区块的公共字符串W6、共识轮数W7、最新共识区块的索引值W8和FAULT字符串W9;
其中,总权重W4为当前各个区块链节点的节点权重之和;各个区块链节点的节点权重W3i不相同;各个区块链节点的以下8个参数均相同:出块系数W1、投票系数W2、总权重W4、延迟时间W5、最新共识区块的公共字符串W6、共识轮数W7、最新共识区块的索引值W8和FAULT字符串W9;
每个区块链节点还配置私钥和公钥;
步骤0B,初始化步骤:
初始化各个区块链节点的共识轮数W7=1;
预配置各个区块链节点的出块系数W1、投票系数W2、节点权重W3i、延迟时间W5和FAULT字符串W9;
在系统运行过程中,当有新的区块链节点加入到区块链系统,或区块链系统中存在离开的区块链节点时,实时更新总权重W4;
向本地账本查询区块链,得到最新的区块Bh,根据区块Bh,得到区块Bh包含的公共字符串,即为最新共识区块的公共字符串W6;得到区块Bh的索引值,即为最新共识区块的索引值W8;进而初始化各个区块链节点的最新共识区块的公共字符串W6和最新共识区块的索引值W8;
步骤0,预计算:
步骤0-1),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有出块资格:
步骤a1),将步骤1的标识字符串step1、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1a;
步骤a2),采用可验证随机函数,对字符串str1a、延迟时间W5和私钥进行计算,生成第一密码学凭证;其中,所述第一密码学凭证中包含随机字符串str2a;
步骤a3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2a、节点权重W3i、总权重W4和出块系数W1进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有出块资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有出块资格,同时,将步骤1的标识字符串step1、最新共识区块的公共字符串W6、共识轮数W7以及第一密码学凭证打包生成第一投票凭证;
步骤0-2),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有预投票资格:
步骤b1),将步骤2的标识字符串step2、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1b;
步骤b2),采用可验证随机函数,对字符串str1b、延迟时间W5和私钥进行计算,生成第二密码学凭证;其中,所述第二密码学凭证中包含随机字符串str2b;
步骤b3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2b、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有预投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有预投票资格,同时,将步骤2的标识字符串step2、最新共识区块的公共字符串W6、共识轮数W7以及第二密码学凭证打包生成第二投票凭证;
步骤0-3),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有确定投票资格:
步骤c1),将步骤3的标识字符串step3、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1c;
步骤c2),采用可验证随机函数,对字符串str1c、延迟时间W5和私钥进行计算,生成第三密码学凭证;其中,所述第三密码学凭证中包含随机字符串str2c;
步骤c3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2c、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有确定投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有确定投票资格,同时,将步骤3的标识字符串step3、最新共识区块的公共字符串W6、共识轮数W7以及第一密码学凭证打包生成第三投票凭证;
步骤0-4),对于区块链系统中的每个区块链节点,均采用以下方法,计算是否具有异常情况投票资格:
步骤d1),将步骤4的标识字符串step4、最新共识区块的公共字符串W6和共识轮数W7进行hash运算,得到字符串str1d;
步骤d2),采用可验证随机函数,对字符串str1d、延迟时间W5和私钥进行计算,生成第四密码学凭证;其中,所述第四密码学凭证中包含随机字符串str2d;
步骤d3),采用随机抽签方法,对所述密码学凭证中的随机字符串str2d、节点权重W3i、总权重W4和投票系数W2进行随机抽签运算,得到随机抽签结果;如果随机抽签结果为0,表示对应的区块链节点不具有异常情况投票资格;否则,如果随机抽签结果为非0,表示对应的区块链节点具有异常情况投票资格,同时,将步骤4的标识字符串step4、最新共识区块的公共字符串W6、共识轮数W7以及第四密码学凭证打包生成第四投票凭证;
步骤1,出块过程:
步骤1.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2,并执行对应的停止条件触发流程:
停止条件1:只要任意的区块链节点Pi接收到d0个确定投票区块消息,其中,确定投票区块消息均是对特定的区块Bmax2进行的确定投票;并且,d0大于投票系数W2的2/3;则区块链节点Pi停止当前轮的共识,并等待对应的区块Bmax2到达;
然后,区块链节点Pi判断超时前是否收到对应的区块Bmax2,如果收到,则区块链节点Pi以区块Bmax2作为最终共识到的区块,并记录在本地账本中,将共识到的区块添加到当前区块链的最后位置;然后,区块链节点Pi将区块Bmax2对应的d0个确定投票区块消息打包,得到共识包;然后将共识包在全网广播同步,以通知其他区域链节点,共识过程结束;如果没有收到,判断是否具有异常情况投票资格,如果不具有,则令共识轮数W7=共识轮数W7+1,返回步骤0,进入下一轮重新共识过程;如果具有,将步骤d3得到的第四投票凭证以及FAULT字符串W9打包成第一错误投票消息,并在全网广播;然后令共识轮数W7=共识轮数W7+1,返回步骤0,进入下一轮重新共识过程;
停止条件2:区块链节点Pi通过与其他区块链节点同步的方式直接接收到区块Bmax2和d0个对区块Bmax2的确定投票区块消息,并且,d0大于投票系数W2的2/3;则区块链节点Pi完成新的共识区块同步,将区块Bmax2作为最终共识到的区块,并记录在本地账本中,将共识到的区块Bmax2添加到当前区块链的最后位置,结束当前共识流程;
步骤1.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有出块资格,则执行步骤1.4;如果区块链节点Pi具有出块资格,则执行步骤1.3;
步骤1.3,如果共识轮数W7等于1,或者,区块链节点Pi收到来自于上一轮的第一错误投票消息的数量超过投票系数W2的2/3:
则:区块链节点Pi打包生成新区块BPi,该新区块BPi包括未全网共识的交易信息以及新的公共字符串W6i;区块链节点Pi将新区块BPi全网广播;然后,区块链节点Pi将步骤a3得到的第一投票凭证以及新区块BPi的区块头的hash值打包成初选区块消息,并在全网广播;假设共有f个区块链节点具有出块资格,则一共在全网广播f个初选区块消息以及f个新区块;
判断是否同时满足以下两个条件:条件1)共识轮数W7大于等于2;条件2)区块链节点Pi对上一轮接收到的所有第二错误投票消息进行统计分析,得到得票最高的区块Bmax4,区块链节点Pi收到上一轮对区块Bmax4的第二错误投票消息的数量超过投票系数W2的2/3;如果满足,则区块链节点Pi将第一投票凭证和区块Bmax4的区块头的hash值打包成初选区块消息,并在全网广播初选区块消息;然后执行步骤1.4;如果不满足,则直接执行步骤1.4;
步骤1.4,当计时器计时达到延迟时间W5时,执行步骤2;
步骤2,预投票过程:
步骤2.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤2.2;
步骤2.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有预投票资格,则执行步骤2.4;如果区块链节点Pi具有预投票资格,则执行步骤2.3;
步骤2.3,如果共识轮数W7等于1,或者,区块链节点Pi收到上一轮的第一错误投票消息的数量超过投票系数W2的2/3:
则:由于存在网络延迟,区块链节点Pi接收到最多f个初选区块消息;然后,从接收到的所有初选区块消息中,选出优先级最高的区块Bmax1;然后,区块链节点Pi将步骤b3得到的第二投票凭证以及区块Bmax1的区块头的hash值打包成预投票区块消息,并在全网广播;假设共有k个区块链节点具有预投票资格,则一共在全网广播k个预投票区块消息;
判断是否同时满足以下两个条件:条件1)共识轮数W7大于等于2;条件2)区块链节点Pi对上一轮接收到的所有第二错误投票消息进行统计分析,得到得票最高的区块Bmax5,区块链节点Pi收到上一轮对区块Bmax5的第二错误投票消息的数量超过投票系数W2的2/3;如果满足,则区块链节点Pi将第二投票凭证和区块Bmax5的区块头的hash值打包成预投票区块消息,并在全网广播预投票区块消息;然后执行步骤2.4;如果不满足,则直接执行步骤2.4;
步骤2.4,当计时器计时达到延迟时间W5时,执行步骤3;
步骤3,确定投票过程:
步骤3.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤3.2;
步骤3.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有确定投票资格,则执行步骤3.4;如果区块链节点Pi具有确定投票资格,则执行步骤3.3;
步骤3.3,由于存在网络延迟,区块链节点Pi接收到最多k个预投票区块消息;然后,区块链节点Pi对接收到的所有预投票区块消息进行统计分析,得到总预投票数w0以及预投票得票最高的区块Bmax6;
判断w0是否大于2/3*W2,如果不大于,则执行步骤3.4;如果大于,则将步骤c3得到的第三投票凭证以及区块Bmax6的区块头的hash值打包成确定投票区块消息,并在全网广播;假设共有p个区块链节点具有确定投票资格,则一共在全网广播p个确定投票区块消息;然后执行步骤3.4;
步骤3.4,当计时器计时达到延迟时间W5时,执行步骤4;
步骤4,异常情况投票过程:
步骤4.1,启动计时器;
对于区块链系统中的每个区块链节点Pi,实时监测是否触发停止条件1或停止条件2;如果触发,则执行停止条件触发流程;如果没有触发停止条件1和停止条件2,则执行步骤4.2;
步骤4.2,对于区块链系统中的每个区块链节点Pi,如果区块链节点Pi不具有异常情况投票资格,则执行步骤4.6;如果区块链节点Pi具有异常情况投票资格,则执行步骤4.3;
步骤4.3,区块链节点Pi统计接收到的预投票区块消息的数量,假设共接收到k0个预投票区块消息,其中,k0小于等于k;然后,区块链节点Pi对接收到的所有预投票区块消息进行统计分析,得到总预投票数k0以及预投票得票最高的区块Bmax3;
判断k0是否大于2/3*W2,如果不大于,则执行步骤4.4;如果大于,则执行步骤4.5;
步骤4.4,区块链节点Pi将步骤d3得到的第四投票凭证以及FAULT字符串W9打包成第一错误投票消息,并在全网广播;
步骤4.5,区块链节点Pi将步骤d3得到的第四投票凭证以及区块Bmax3的区块头的hash值打包成第二错误投票消息,并在全网广播;
步骤4.6,当计时器计时达到延迟时间W5时,执行步骤5;
步骤5,令共识轮数W7=共识轮数W7+1,返回执行步骤0。
2.根据权利要求1所述的区块链上基于vrf和实用拜占庭算法的共识方法,其特征在于,步骤1.3中,当区块链节点Pi将初选区块消息在全网广播时,对于其他任意接收到初选区块消息的区块链节点Pj,区块链节点Pj对初选区块消息进行分析,解析出初选区块消息包含的第一投票凭证,然后,采用公钥对第一投票凭证进行合法性检验,如果检测通过,则接收并记录初选区块消息;如果不通过,则直接不接收该初选区块消息。
3.根据权利要求1所述的区块链上基于vrf和实用拜占庭算法的共识方法,其特征在于,步骤2.3中,当区块链节点Pi将预投票区块消息在全网广播时,对于其他任意接收到预投票区块消息的区块链节点Pj,区块链节点Pj对预投票区块消息进行分析,解析出预投票区块消息包含的第二投票凭证,然后,采用公钥对第二投票凭证进行合法性检验,如果检测通过,则接收并记录预投票区块消息;如果不通过,则直接不接收该预投票区块消息。
4.根据权利要求1所述的区块链上基于vrf和实用拜占庭算法的共识方法,其特征在于,步骤3.3中,当区块链节点Pi将确定投票区块消息在全网广播时,对于其他任意接收到确定投票区块消息的区块链节点Pj,区块链节点Pj对确定投票区块消息进行分析,解析出确定投票区块消息包含的第三投票凭证,然后,采用公钥对第三投票凭证进行合法性检验,如果检测通过,则接收并记录确定投票区块消息;如果不通过,则直接不接收该确定投票区块消息。
5.根据权利要求1所述的区块链上基于vrf和实用拜占庭算法的共识方法,其特征在于,步骤4.4中,当区块链节点Pi将第一错误投票消息在全网广播时,对于其他任意接收到第一错误投票消息的区块链节点Pj,区块链节点Pj对第一错误投票消息进行分析,解析出第一错误投票消息包含的第四投票凭证,然后,采用公钥对第四投票凭证进行合法性检验,如果检测通过,则接收并记录第一错误投票消息;如果不通过,则直接不接收该第一错误投票消息;
步骤4.5中,当区块链节点Pi将第二错误投票消息在全网广播时,对于其他任意接收到第二错误投票消息的区块链节点Pj,区块链节点Pj对第二错误投票消息进行分析,解析出第二错误投票消息包含的第四投票凭证,然后,采用公钥对第四投票凭证进行合法性检验,如果检测通过,则接收并记录第二错误投票消息;如果不通过,则直接不接收该第二错误投票消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010499181.2A CN111669277B (zh) | 2020-06-04 | 2020-06-04 | 一种区块链上基于vrf和实用拜占庭算法的共识方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010499181.2A CN111669277B (zh) | 2020-06-04 | 2020-06-04 | 一种区块链上基于vrf和实用拜占庭算法的共识方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111669277A CN111669277A (zh) | 2020-09-15 |
CN111669277B true CN111669277B (zh) | 2023-04-18 |
Family
ID=72386055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010499181.2A Active CN111669277B (zh) | 2020-06-04 | 2020-06-04 | 一种区块链上基于vrf和实用拜占庭算法的共识方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111669277B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799636B (zh) * | 2021-04-14 | 2021-08-27 | 北京百度网讯科技有限公司 | 随机数生成方法、装置、设备和存储介质 |
CN114090693B (zh) * | 2022-01-18 | 2022-05-17 | 安徽中科晶格技术有限公司 | 基于拜占庭容错的区块链见证共识方法、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
CN109167661A (zh) * | 2018-09-27 | 2019-01-08 | 福建福链科技有限公司 | 一种应用于联盟链的拜占庭容错共识方法及终端 |
CN109949034A (zh) * | 2019-03-06 | 2019-06-28 | 北京工业大学 | 基于可信性评估的区块链共识方法 |
CN110288479A (zh) * | 2019-06-28 | 2019-09-27 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10951408B2 (en) * | 2018-09-05 | 2021-03-16 | Nec Corporation | Method and system for publicly verifiable proofs of retrievability in blockchains |
-
2020
- 2020-06-04 CN CN202010499181.2A patent/CN111669277B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
CN109167661A (zh) * | 2018-09-27 | 2019-01-08 | 福建福链科技有限公司 | 一种应用于联盟链的拜占庭容错共识方法及终端 |
CN109949034A (zh) * | 2019-03-06 | 2019-06-28 | 北京工业大学 | 基于可信性评估的区块链共识方法 |
CN110288479A (zh) * | 2019-06-28 | 2019-09-27 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111669277A (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110784346B (zh) | 一种基于信誉值的pbft共识系统及方法 | |
CN109150972B (zh) | 一种双层分片的高效区块链的共识机制的工作方法 | |
CN113098694B (zh) | 一种混合跨链共识方法 | |
Abraham et al. | Solida: A blockchain protocol based on reconfigurable byzantine consensus | |
CN109889382B (zh) | 一种基于区块链混合共识的域名信息维护系统 | |
CN111669277B (zh) | 一种区块链上基于vrf和实用拜占庭算法的共识方法 | |
CN111131209B (zh) | 一种改进的高效共识方法、系统、计算机设备及存储介质 | |
Shmatikov | Probabilistic analysis of anonymity | |
CN111182510B (zh) | 一种基于区块链的工业物联网节点共识方法 | |
WO2021135934A1 (zh) | 一种区块链记账方法、装置、节点及存储介质 | |
CN113141414B (zh) | 一种cnfs协议中区块链节点的分组多链异步共识方法 | |
CN111935207A (zh) | 基于改进型c4.5算法区块链系统共识方法 | |
CN110995439A (zh) | 区块链共识方法、电子装置及存储介质 | |
CN111130790A (zh) | 基于区块链节点网络的共识出块方法 | |
CN111258986A (zh) | 一种区块链的回滚方法 | |
CN111489143A (zh) | 一种基于联盟侧链的可审计加密数字货币监管方法 | |
CN116471024A (zh) | 一种基于dag和分片的区块链异步共识算法 | |
CN110545261A (zh) | 一种应用于区块链网络中的共识算法 | |
Asfia et al. | A blockchain construct for energy trading against sybil attacks | |
CN111865595A (zh) | 一种区块链的共识方法及装置 | |
CN117792608A (zh) | 适用于联盟链的优化异步bft共识实现方法 | |
CN112398930A (zh) | 区块链的共识方法、节点设备、系统以及存储介质 | |
CN112907246A (zh) | 基于BFT协议和PoW机制的区块链共识协议实现方法和系统 | |
CN116389483A (zh) | 一种可监管的区块链动态分片设计方法及系统 | |
Li et al. | Reducing delay and enhancing DoS resistance in multicast authentication through multigrade security |
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 |