[发明专利]一种用于区块链的拜占庭容错共识优化方法有效
申请号: | 201811094708.2 | 申请日: | 2018-09-19 |
公开(公告)号: | CN109347804B | 公开(公告)日: | 2020-02-07 |
发明(设计)人: | 廖丹;张良嵩;李慧;金海焱;张明 | 申请(专利权)人: | 电子科技大学 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L9/32;H04L29/08;G07C13/00;G06Q40/04;G06Q10/04 |
代理公司: | 51229 成都正华专利代理事务所(普通合伙) | 代理人: | 陈选中;何凡 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 区块 投票 拜占庭容错 验证 广播 系统资源消耗 非线性处理 表初始化 通信资源 应用场景 客户端 主节点 求和 日志 受限 账本 加权 优化 写入 消耗 答复 记录 选举 交易 | ||
1.一种用于区块链的拜占庭容错共识优化方法,其特征在于,包括如下步骤:
S1:进行投票权值表初始化,即对共识域的每个共识节点赋予对应的投票权值表Weighti,投票权值表包括所有节点的权值信息,并初始化身份权限值value[j],体现节点对系统的贡献程度,初始化节点投票权值的公式为:
Weighti[j]=value[j],i,j∈1,2,...,N
式中,Weighti[j]为节点j的投票权值表;value[j]为节点j的身份权限值;N为共识节点总数;
S2:使用客户端将需要共识的交易进行处理,生成REQUEST消息,并发送给共识域,进行共识操作;
S3:进入REQUEST阶段,使用共识域接收REQUEST消息,并根据共识节点的身份权限值,进行主节点选举;
S4:使用主节点对REQUEST消息进行验证,判断验证是否通过,若是则生成PRE-PREPARE消息,并进入步骤S5,否则继续执行步骤S4;
S5:进入PRE-PREPARE阶段,使用主节点将生成的PRE-PREPARE消息进行共识域内的全网广播,并将消息发送给除当前主节点外的所有共识节点;
S6:进入PREPARE阶段,使用共识节点接收PRE-PREPARE消息,并对PRE-PREPARE消息进行验证,判断验证是否通过,若是则进入步骤S7,否则更新当前权值,并继续执行步骤S6;
S7:使用当前节点对PRE-PREPARE消息进行一次投票,得到投票值,生成PREPARE消息,并将投票值打包进PREPARE消息;
S8:使用共识节点将投票权值表按照身份权限值进行降序排序,选择身份权限值最大的共识域内80%的共识节点广播PREPARE消息;
S9:进入COMMIT阶段,使用步骤S8中的共识域内的共识节点接收PREPARE消息,将消息和投票数记录到本地日志中,并对PREPARE消息进行验证,判断是否验证通过,若是则进入步骤S10,否则继续执行步骤S9;
S10:将当前共识节点的投票权值表与接收到的PREPARE消息中的投票值进行加权求和,并将得到的结果进行非线性处理,得到非线性处理后结果;
非线性处理函数的计算公式为:
式中,y为非线性处理函数;d为判定界限;x为横坐标;
判定界限的计算公式为:
式中,d为判定界限;AVEq为系统初始化投票权值表中的平均权值;N为共识节点总数;
S11:判断非线性处理后结果是否符合判定要求,
判定要求为拜占庭算法判定门限;
将非线性处理后结果归一化至[0,1]之间,若结果大于0.5,则表示满足判定要求,反之则不满足;
若是则生成COMMIT消息并对全网内权限值最大的80%的共识节点进行广播,并根据更新准则,进行共识节点投票权值表的更新操作,进入步骤S12,否则返回步骤S10;
更新准则,包括:
若共识节点的投票值与最终通过的一致性结果不相同,则判定该共识节点为拜占庭节点,降低对该共识节点的投票权限值,同时将该共识节点减少的权限值加到行为良好的共识节点身上,维持系统的稳定性,节点投票权值的降低和节点投票值相关,当节点对共识达成的破坏越大,投票权限值降低越多;
若当前共识节点没有接收到另一共识节点的投票消息,则当前共识节点与另一共识节点的通信不流畅,由共识节点通信性能或地理距离导致,降低当前共识节点的投票权值表值;
S12:进入REPLY阶段,使用上述全网内的共识节点接收COMMIT消息,并对COMMIT消息进行验证,判断是否验证通过,若是则进入步骤S13,否则继续执行步骤S12;
S13:将COMMIT消息验证通过的当前区块写入本地账本,并对客户端进行答复,实现拜占庭容错共识优化。
2.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S4中,对REQUEST消息进行验证,包括:
验证客户端的签名是否正确;
验证相关账本操作是否合法;
依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811094708.2/1.html,转载请声明来源钻瓜专利网。