[发明专利]一种基于DPoS高容错分层共识方法有效
申请号: | 201911112959.3 | 申请日: | 2019-11-14 |
公开(公告)号: | CN111010278B | 公开(公告)日: | 2023-04-07 |
发明(设计)人: | 李峰;孙传文;潘雨青;薛惠丹;李博 | 申请(专利权)人: | 江苏大学 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L67/104;H04L67/1042;H04L67/1095;G06Q40/04 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 212013 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 dpos 容错 分层 共识 方法 | ||
1.一种基于DPoS高容错分层共识方法,其特征在于,包括以下步骤:
1)构建区块链网络,所述区块链网络包含N个节点;
2)初始化节点参数,所述节点参数包括节点状态位STATE、共识积分CNS_SCORE、错误计数位ERROR_COUNT;
3)对区块链网络中的节点进行分组,其中,组数为G,每组K个节点,不足K个与前一组合并;
4)利用FINDLEADER选举方法计算每一组的提名节点,提名节点编号记为i;
所述FINDLEADER选举方法包括如下步骤:
4.1)构建每一组的共识积分集合,记为表示编号为i、序号为m的节点共识积分,R表示当前组中节点数上限,N为区块链网络的节点总数,G为第一次分组数,R=N/G;
4.2)计算各个节点共识权重,构建节点权重集合,其中节点共识权重计算公式如下:
各个节点权重集合记为:
表示编号为i、序号为m的节点积分权重;
4.3)对当前节点权重集合中的权重通过asc(arrlist)升序排序函数对集合进行升序排序得到最终权重集合worder:
4.4)计算选举节点编号i,计算公式如下:
其中,getPeerIndex(v)是随机功能函数;
5)核实提名节点,确定决议节点;
所述核实提名节点的方法包括如下步骤:
5.1)组内其他节点对已选出的提名节点进行投票,并将结果发给提名节点和全局缓存栈;
5.2)判断投票结果,如果提名节点收到该组半数以上的赞成票时,该节点通过核实,当选为决议节点,转步骤6);否则,判断选举次数,如果选举次数小于选举失败次数f转步骤5.1),重新投票,否则,转步骤5.3);
5.3)全局缓存栈执行组解散协议解散该组,该组下所有节点不能继续进行此轮共识;
6)利用组内决议节点收集并校验交易列表;
所述利用组内决议节点收集并校验交易列表的方法包括如下步骤:
6.1)组内决议节点收集组内其他节点交易列表m和交易列表摘要S1;
6.2)利用摘要函数digest(m)计算交易列表摘要S2;
6.3)比较交易列表摘要S1和交易列表摘要S2,如果S1=S2则校验通过,将该交易列表暂时存储到全局缓存栈中;否则校验不通过,驳回交易信息,按积分规则扣除共识积分CNS_SCORE,同时ERROR_COUNT加e,并将该交易列表暂时存储到全局缓存栈中;
7)构建议长组,节点服务管理集群根据缓存栈中的信息,按照时间顺序对决议节点进行分组,所述分组方法是:每三个组内决议节点构成一议长组,议长组的总数M=G/h,不足h个与前面的议长组合并,h为议长组内节点个数;
8)议长组内轮番校验,验证被校验节点的全局缓存中的交易签名与进行校验节点重新计算出的节点交易签名的一致性;所述校验过程如下:判断决议节点收到的两个来自其他决议节点的验证结果是否都是否决,如是则该决议节点所在组存在恶意节点,对该组节点进行排查,发现恶意节点并按照节点积分规则扣除积分,并将ERROR_COUNT加e,e为错误步长,转步骤9);否则校验通过,转步骤9);
9)选出组间议长节点,对已通过轮番校验的决议节点,利用FINDLEADER选举方法计算议长节点编号j,议长节点是由该议长组内多数验证结果相同的节点选出,该议长节点收集其他决议节点的交易信息并存入当前议长组的全局缓存栈;
10)议长节点收集交易列表,议长节点收集其他通过校验的决议节点的交易列表,然后对交易打包签名后上传到全局缓存栈;
11)选出最后出块节点,由各个议长节点组成最终决议组,然后在最终决议组中根据积分权重计算出块节点,利用FINDLEADER选举方法计算出块节点编号l;
12)利用出块节点将数据写入到区块链上,由出块该节点收集其他议长节点的交易列表,通过获取前一个区块的哈希对当前所有的交易进行打包出块,并发送确认消息给各个议长节点;
13)判断各个议长节点是否在规定的时间收到确认消息,如在规定的时间收到确认消息则该共识完成,转步骤14);否则各个议长节点向节点服务管理集群发送超时消息,并根据规则处罚出块节点,转步骤11);
14)对节点进行积分奖励,将CNS_SCORE置为cs,然后对完成共识的节点按照奖励规则进行奖励,cs为积分初始值。
2.如权利要求1所述的基于DPoS高容错分层共识方法,其特征在于,所述步骤3)中对区块链网络节点进行分组的方法包括如下步骤:
3.1)设置组数变量G,通过G值来执行分组协议;
3.2)以区块链节点公钥为索引按G值随机对区块链节点公钥进行组合并为每一组分配一小块全局缓存;
3.3)将分组结果暂存到节点服务管理集群中,并将每一组分组列表广播到在列表中的各个节点;
3.4)各个节点接收到分组消息后,按消息中的节点地址进行相互通信进行组网,来完成分组。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江苏大学,未经江苏大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911112959.3/1.html,转载请声明来源钻瓜专利网。