一种区块链上基于vrf和实用拜占庭算法的共识方法技术

技术编号:25643057 阅读:72 留言:0更新日期:2020-09-15 21:34
本发明专利技术提供一种区块链上基于vrf和实用拜占庭算法的共识方法,包括以下步骤:步骤0,预计算:对于区块链系统中的每个区块链节点,计算其是否具有出块资格、预投票资格、确定投票资格和异常情况投票资格。步骤1,出块过程;步骤2,预投票过程;步骤3,确定投票过程;步骤4,异常情况投票过程。具有以下优点:1)参与共识的所有区块链节点的时钟不需要严格同步,降低了系统对节点时间管理的负担。2)区块链系统中,只有少量区块链节点进行预投票、确定投票或异常情况投票,从而降低了系统资源开销。

【技术实现步骤摘要】
一种区块链上基于vrf和实用拜占庭算法的共识方法
本专利技术属于区块链
,具体涉及一种区块链上基于vrf和实用拜占庭算法的共识方法。
技术介绍
共识算法是分布式系统中保证系统状态一致性的重要技术,是分布式文件系统、分布式数据库的重要基础。区块链采用分布式共识算法在无中心节点控制,又可能存在破坏节点的环境下确立系统状态,从而建立信任。现有的区块链系统,主要具有以下问题:1)参与共识的所有区块链节点的时钟必须严格同步,系统对节点时间管理的负担较高。2)区块链系统中所有区块链节点,无论在预投票过程,还是确定投票过程,均对区块进行投票,系统资源开销较高。
技术实现思路
针对现有技术存在的缺陷,本专利技术提供一种区块链上基于vrf和实用拜占庭算法的共识方法,可有效解决上述问题。本专利技术采用的技术方案如下:本专利技术提供一种区块链上基于vrf和实用拜占庭算法的共识方法,包括以下步骤:步骤0A,假设本地账本当前存储的区块链共包括h个成链状的区块,按从前向后的顺序,分别为:区块B1,区块B2,…,区块本文档来自技高网...

【技术保护点】
1.一种区块链上基于vrf和实用拜占庭算法的共识方法,其特征在于,包括以下步骤:/n步骤0A,假设本地账本当前存储的区块链共包括h个成链状的区块,按从前向后的顺序,分别为:区块B

【技术特征摘要】
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:<...

【专利技术属性】
技术研发人员:胡建鑫付正陈冬曾凡华
申请(专利权)人:新晨科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1