1.一种用于区块链的拜占庭容错共识优化方法,其特征在于,包括如下步骤:S1:进行投票权值表初始化,即对共识域的每个共识节点赋予对应的投票权值表,并初始化投票权值;
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消息中的投票值进行加权求和,并将得到的结果进行非线性处理,得到非线性处理后结果;
S11:判断非线性处理后结果是否符合判定要求,若是则生成COMMIT消息并对全网内权限值最大的80%的共识节点进行广播,并根据更新准则,进行共识节点投票权值表的更新操作,进入步骤S12,否则返回步骤S10;
S12:进入REPLY阶段,使用上述全网内的共识节点接收COMMIT消息,并对COMMIT消息进行验证,判断是否验证通过,若是则进入步骤S13,否则继续执行步骤S12;
S13:将COMMIT消息验证通过的当前区块写入本地账本,并对客户端进行答复,实现拜占庭容错共识优化。
2.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S4中,对REQUEST消息进行验证,包括:验证客户端的签名是否正确;
验证相关账本操作是否合法;
依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
3.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S6中,对PRE-PREPARE消息进行验证,包括:检查PRE-PREPARE消息签名是否正确,消息摘要签名是否正确;
判定当前节点的视图是否为PRE-PREPARE消息中对应的视图;
检查是否收到过相同的对应的视图和序列号;
判断序列号是否符合规定;
依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
4.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S9和步骤S12中,进行消息的验证,包括:检查当前消息签名是否正确,消息摘要签名是否正确;
判定当前节点的视图是否为当前消息中对应的视图;
检查是否收到过相同的对应的视图和序列号;
验证节点对该事件的投票值是否符合要求;
依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
5.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S10中,非线性处理函数的计算公式为:式中,y为非线性处理函数;d为判定界限;x为横坐标。
6.根据权利要求5所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述判定界限的计算公式为:式中,d为判定界限;AVEq为系统初始化投票权值表中的平均权值;N为共识节点总数。
7.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S11中,判定要求为拜占庭算法判定门限;
将非线性处理后结果归一化至[0,1]之间,若结果大于0.5,则表示满足判定要求,反之则不满足。
8.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S11中,更新准则,包括:若共识节点的投票值与最终通过的一致性结果不相同,则判定该共识节点为拜占庭节点,降低对该共识节点的投票权限值,同时将该共识节点减少的权限值加到行为良好的共识节点身上;
若当前共识节点没有接收到另一共识节点的投票消息,则当前共识节点与另一共识节点的通信不流畅,降低当前共识节点的投票权值表值。