首页 / 专利库 / 电脑编程 / 算法 / 一种用于区块链的拜占庭容错共识优化方法

一种用于链的拜占庭容错共识优化方法

阅读:6发布:2023-01-26

专利汇可以提供一种用于链的拜占庭容错共识优化方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种用于 区 块 链 的拜占庭容错共识优化方法,包括如下步骤:S1、进行投票权值表初始化;S2、处理交易;S3、选举主 节点 ;S4、验证REQUEST消息;S5、广播PRE‑PREPARE消息;S6、验证PRE‑PREPARE消息;S7、进行投票;S8、广播含有投票值的PREPARE消息;S9、将消息和投票数记录到本地日志中;S10、将投票值进行加权求和,并进行非线性处理;S11、广播COMMIT消息;S12、验证COMMIT消息;S13、将当前区块写入本地账本,并对客户端进行答复;本发明解决了 现有技术 存在的应用场景受限、安全性低以及需要消耗大量的通信资源并且系统资源消耗大的问题。,下面是一种用于链的拜占庭容错共识优化方法专利的具体信息内容。

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消息进行验证,包括:
验证客户端的签名是否正确;
验证相关账本操作是否合法;
依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
3.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S6中,对PRE-PREPARE消息进行验证,包括:
检查PRE-PREPARE消息签名是否正确,消息摘要签名是否正确;
判定当前节点的视图是否为PRE-PREPARE消息中对应的视图;
检查是否收到过相同的对应的视图和序列号;
判断序列号是否符合规定;
依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
4.根据权利要求1所述的用于区块链的拜占庭容错共识优化方法,其特征在于,所述步骤S9和步骤S12中,进行消息的验证,包括:
检查当前消息签名是否正确,消息摘要签名是否正确;
判定当前节点的视图是否为当前消息中对应的视图;
检查是否收到过相同的对应的视图和序列号;
验证节点对事件的投票值是否符合要求;
依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。

说明书全文

一种用于链的拜占庭容错共识优化方法

技术领域

[0001] 本发明属于网络通信技术领域,具体涉及一种用于区块链的拜占庭容错共识优化方法。

背景技术

[0002] 2008年中本聪发表了一篇名为《比特币:一种点对点式的电子现金系统》的文章,宣布了比特币的诞生,其中的关键技术,区块链开始逐渐引起大家的关注。区块链是一项分布式账本技术,数据存储在一系列的区块中,区块根据时间戳连接起来,利用密码学的方式保证数据传输和访问的安全,利用自动化脚本代码形成的智能合约来进行事务。区块链的发展将颠覆传统网络服务形式,使完全的去中心化系统服务成为可能。
[0003] 区块链技术生态中,共识算法是最为关键的一部分。共识是保证互不可信节点之间达成一致性的算法,当各分布式节点的本地账本信息保持一致,分布式系统才能够正常工作。但由于CAP理论,一个分布式系统最多只能同时满足一致性、可用性和分区容错性这三项中的两项。而对于分布式系统,分区容错性不可舍弃,因此只能在分布式一致性和可用性之间进行取舍,很多情况下需要放弃强一致性,取而代之的使用最终一致性。由此产生了应用场景不同,性能各异的多种共识算法。
[0004] 现有技术的区块链系统中最广为人知的共识算法是比特币中所使用的工作量证明(POW),矿工通过解决数学难题生成区块来记账,全网节点进行对该区块进行验证来写入本地账本。POW从经济学的度实现了共识,矿工生成区块会得到比特币奖励,而破坏这样的区块链系统则需要大于50%的算。但工作量证明的缺点在于挖矿需要消耗大量的电力,并且当前挖一个区块的时间大约在十分钟,需要六个区块的确认才能保证交易生效,交易的确认时间过长使得该共识算法的应用场景受限,全网算力的集中也将影响POW系统的安全性。
[0005] 为了解决POW性能差的问题,比特币系统采用了闪电网络技术。闪电网络的原理是在用户之间预开通一个付款通道,并将通道的开放记录到区块链上,之后用户可以通过该通道进行任意次数的交易,最后再把通道上交易的最终状态写入区块链。这样的支付通道使得双方交易在链下进行,交易以闪电般的速度运行。闪电网络弥补了比特币使用POW的性能问题,但在技术上可能形成中心化交易枢纽,带来安全险。
[0006] 现有技术的PBFT共识算法可以在容忍三分之一的拜占庭节点作恶情况下达成共识,拜占庭节点指的是可以产生任意作恶行为的节点。PBFT使得BFT算法的运行时间从指数级别降到多项式级别。PBFT是一种状态机副本复制算法,本质上是利用通信来换取节点间的信任,该算法为了保证容错性与一致性,需要进行两轮的全网节点点对点通信。该算法适用于保证共识节点能够彼此通信的联盟链与私有链当中。
[0007] 综上所述,现有技术存在以下问题:
[0008] (1)现有技术的交易的确认时间过长使得该共识算法的应用场景受限,并且全网算力的集中也将影响系统的安全性;
[0009] (2)现有技术的性能受到节点规模的影响,在大量共识节点的环境下,无法保证共识效率,并且存在拜占庭节点对系统的危害大;
[0010] (3)现有技术需要消耗大量的通信资源,一次共识过程需要20(n2)次的点对点通信,共识对系统资源消耗大,同时整体共识效率依赖于共识节点的性能。

发明内容

[0011] 针对现有技术中的上述不足,本发明提供的一种适用于多应用场景的优化性好、安全性高以及可扩展性好的用于区块链的拜占庭容错共识优化方法,解决了现有技术存在的应用场景受限、安全性低以及需要消耗大量的通信资源并且系统资源消耗大的问题。
[0012] 为了达到上述发明目的,本发明采用的技术方案为:
[0013] 一种用于区块链的拜占庭容错共识优化方法,包括如下步骤:
[0014] S1:进行投票权值表初始化,即对共识域的每个共识节点赋予对应的投票权值表,并初始化投票权值;
[0015] S2:使用客户端将需要共识的交易进行处理,生成REQUEST消息,并发送给共识域,进行共识操作;
[0016] S3:进入REQUEST阶段,使用共识域接收REQUEST消息,并根据共识节点的身份权限值,进行主节点选举;
[0017] S4:使用主节点对REQUEST消息进行验证,判断验证是否通过,若是则生成PRE-PREPARE消息,并进入步骤S5,否则继续执行步骤S4;
[0018] S5:进入PRE-PREPARE阶段,使用主节点将生成的PRE-PREPARE消息进行共识域内的全网广播,并将消息发送给除当前主节点外的所有共识节点;
[0019] S6:进入PREPARE阶段,使用共识节点接收PRE-PREPARE消息,并对PRE-PREPARE消息进行验证,判断验证是否通过,若是则进入步骤S7,否则更新当前权值,并继续执行步骤S6;
[0020] S7:使用当前节点对PRE-PREPARE消息进行一次投票,得到投票值,生成PREPARE消息,并将投票值打包进PREPARE消息;
[0021] S8:使用共识节点将投票权值表按照身份权限值进行降序排序,选择身份权限值最大的共识域内80%的共识节点广播PREPARE消息;
[0022] S9:进入COMMIT阶段,使用步骤S8中的共识域内的共识节点接收PREPARE消息,将消息和投票数记录到本地日志中,并对PREPARE消息进行验证,判断是否验证通过,若是则进入步骤S10,否则继续执行步骤S9;
[0023] S10:将当前共识节点的投票权值表与接收到的PREPARE消息中的投票值进行加权求和,并将得到的结果进行非线性处理,得到非线性处理后结果;
[0024] S11:判断非线性处理后结果是否符合判定要求,若是则生成COMMIT消息并对全网内权限值最大的80%的共识节点进行广播,并根据更新准则,进行共识节点投票权值表的更新操作,进入步骤S12,否则返回步骤S10;
[0025] S12:进入REPLY阶段,使用上述全网内的共识节点接收COMMIT消息,并对COMMIT消息进行验证,判断是否验证通过,若是则进入步骤S13,否则继续执行步骤S12;
[0026] S13:将COMMIT消息验证通过的当前区块写入本地账本,并对客户端进行答复,实现拜占庭容错共识优化。
[0027] 进一步地,步骤S4中,对REQUEST消息进行验证,包括:
[0028] 验证客户端的签名是否正确;
[0029] 验证相关账本操作是否合法;
[0030] 依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
[0031] 进一步地,步骤S6中,对PRE-PREPARE消息进行验证,包括:
[0032] 检查PRE-PREPARE消息签名是否正确,消息摘要签名是否正确;
[0033] 判定当前节点的视图是否为PRE-PREPARE消息中对应的视图;
[0034] 检查是否收到过相同的对应的视图和序列号;
[0035] 判断序列号是否符合规定;
[0036] 依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
[0037] 进一步地,步骤S9和步骤S12中,进行消息的验证,包括:
[0038] 检查当前消息签名是否正确,消息摘要签名是否正确;
[0039] 判定当前节点的视图是否为当前消息中对应的视图;
[0040] 检查是否收到过相同的对应的视图和序列号;
[0041] 验证节点对该事件的投票值是否符合要求;
[0042] 依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
[0043] 进一步地,步骤S10中,非线性处理函数的计算公式为:
[0044]
[0045] 式中,y为非线性处理函数;d为判定界限;x为横坐标。
[0046] 进一步地,判定界限的计算公式为:
[0047]
[0048] 式中,d为判定界限;AVEq为系统初始化投票权值表中的平均权值;N为共识节点总数。
[0049] 进一步地,步骤S11中,判定要求为拜占庭算法判定限;
[0050] 将非线性处理后结果归一化至[0,1]之间,若结果大于0.5,则表示满足判定要求,反之则不满足。
[0051] 进一步地,步骤S11中,更新准则,包括:
[0052] 若共识节点的投票值与最终通过的一致性结果不相同,则判定该共识节点为拜占庭节点,降低对该共识节点的投票权限值,同时将该共识节点减少的权限值加到行为良好的共识节点身上;
[0053] 若当前共识节点没有接收到另一共识节点的投票消息,则当前共识节点与另一共识节点的通信不流畅,降低当前共识节点的投票权值表值。
[0054] 本方案的有益效果为:
[0055] (1)优化性:本发明通过减少共识过程中的多余通信,降低系统损耗,同时能够排除故障节点,优化系统组成结构;
[0056] (2)安全性:本发明在投票共识的过程中利用了节点的投票行为检测,动态更改节点投票权值,降低拜占庭节点对系统的危害;
[0057] (3)可扩展性:本发明所提出的共识优化方法支持节点的动态加入与退出,节点退出共识网络不需要进行任何多余操作,随着共识的进行,退出的节点在共识域内的投票权值不断降低直至该节点不接收任何消息,并且该退出节点的消息被其他节点拒收,节点的加入过程通过在区块链网络中发起一次事务来处理。共识网络中的节点将新加入的节点添加入投票权值表,利用系统赋予的初值,新加入的节点在下一轮正常参与共识。附图说明
[0058] 图1为用于区块链的拜占庭容错共识优化方法步骤S1到S7流程图
[0059] 图2为用于区块链的拜占庭容错共识优化方法步骤S8到S13流程图;
[0060] 图3为通信对比图。

具体实施方式

[0061] 下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
[0062] 一种用于区块链的拜占庭容错共识优化方法,如图1和图2共同所示,包括如下步骤:
[0063] S1:进行投票权值表初始化,即对共识域的每个共识节点赋予对应的投票权值表Weighti,投票权值表包括所有节点的权值信息,并初始化身份权限值value[j],体现节点对系统的贡献程度,初始化节点投票权值的公式为:
[0064] Weighti[j]=value[j],i,j∈1,2,...,N
[0065] 式中,Weighti[j]为节点j的投票权值表;value[j]为节点j的身份权限值;N为共识节点总数;
[0066] S2:使用客户端将需要共识的交易进行处理,生成REQUEST消息,并发送给共识域,进行共识操作;
[0067] S3:进入REQUEST阶段,使用共识域接收REQUEST消息,并根据共识节点的身份权限值,进行主节点选举,选举过程对共识域内各节点的权值表的最大值进行统计,出现次数最多的节点作为主节点,使主节点在共识域拥有最高的信任值,并且身份权限值越大的共识节点,其作恶的概率就越低,降低了主节点出错的概率,提高系统性能;
[0068] S4:使用主节点对REQUEST消息进行验证,判断验证是否通过,若是则生成PRE-PREPARE消息,并进入步骤S5,否则继续执行步骤S4;
[0069] S5:进入PRE-PREPARE阶段,使用主节点将生成的PRE-PREPARE消息进行共识域内的全网广播,并将消息发送给除当前主节点外的所有共识节点;
[0070] S6:进入PREPARE阶段,使用共识节点接收PRE-PREPARE消息,并对PRE-PREPARE消息进行验证,判断验证是否通过,若是则进入步骤S7,否则更新当前权值,并继续执行步骤S6;
[0071] S7:使用当前节点对PRE-PREPARE消息进行一次投票,得到投票值,生成PREPARE消息,并将投票值打包进PREPARE消息;
[0072] S8:使用共识节点将投票权值表按照身份权限值进行降序排序,选择身份权限值最大的共识域内80%的共识节点广播PREPARE消息,共识过程仅需要在各自的可信广播域内进行广播,减少共识系统的通信损耗,优化了共识性能,通信对比图如图3所示,其中图3(a)为现有方法节点通信图,图3(b)为本发明方法节点通信图;
[0073] S9:进入COMMIT阶段,使用步骤S8中的共识域内的共识节点接收PREPARE消息,将消息和投票数记录到本地日志中,并对PREPARE消息进行验证,判断是否验证通过,若是则进入步骤S10,否则继续执行步骤S9;
[0074] S10:将当前共识节点的投票权值表与接收到的PREPARE消息中的投票值进行加权求和,并将得到的结果进行非线性处理,得到非线性处理后结果;
[0075] 非线性处理函数的计算公式为:
[0076]
[0077] 式中,y为非线性处理函数;d为判定界限;x为横坐标;
[0078] 判定界限的计算公式为:
[0079]
[0080] 式中,d为判定界限;AVEq为系统初始化投票权值表中的平均权值;N为共识节点总数;
[0081] S11:判断非线性处理后结果是否符合判定要求;
[0082] 判定要求为拜占庭算法判定门限;
[0083] 将非线性处理后结果归一化至[0,1]之间,若结果大于0.5,则表示满足判定要求,反之则不满足;
[0084] 若是则生成COMMIT消息并对全网内权限值最大的80%的共识节点进行广播,并根据更新准则,进行共识节点投票权值表的更新操作,即更新投票权值表中所有节点的权值,进入步骤S12,否则返回步骤S10;
[0085] S12:进入REPLY阶段,使用上述全网内的共识节点接收COMMIT消息,并对COMMIT消息进行验证,判断是否验证通过,若是则进入步骤S13,否则继续执行步骤S12;
[0086] S13:将COMMIT消息验证通过的当前区块写入本地账本,并对客户端进行答复,实现拜占庭容错共识优化。
[0087] 本实施例中,步骤S4中,对REQUEST消息进行验证,包括:
[0088] 验证客户端的签名是否正确;
[0089] 验证相关账本操作是否合法;
[0090] 依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
[0091] 本实施例中,步骤S6中,对PRE-PREPARE消息进行验证,包括:
[0092] 检查PRE-PREPARE消息签名是否正确,消息摘要签名是否正确;
[0093] 判定当前节点的视图是否为PRE-PREPARE消息中对应的视图;
[0094] 检查是否收到过相同的对应的视图和序列号;
[0095] 判断序列号是否符合规定;
[0096] 依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
[0097] 本实施例中,步骤S9和步骤S12中,进行消息的验证,包括:
[0098] 检查当前消息签名是否正确,消息摘要签名是否正确;
[0099] 判定当前节点的视图是否为当前消息中对应的视图;
[0100] 检查是否收到过相同的对应的视图和序列号;
[0101] 验证节点对该事件的投票值是否符合要求vote∈[0,1];
[0102] 依次进行以上验证步骤,若全部通过,则输出验证通过,否则输出验证不通过。
[0103] 本实施例中,步骤S11中,更新准则,包括:
[0104] 若共识节点的投票值与最终通过的一致性结果不相同,则判定该共识节点为拜占庭节点,降低对该共识节点的投票权限值,同时将该共识节点减少的权限值加到行为良好的共识节点身上,维持系统的稳定性,节点投票权值的降低和节点投票值相关,当节点对共识达成的破坏越大,投票权限值降低越多;
[0105] 若当前共识节点没有接收到另一共识节点的投票消息,则当前共识节点与另一共识节点的通信不流畅,由共识节点通信性能或地理距离导致,降低当前共识节点的投票权值表值。
[0106] 本发明提供的优化性好、安全性高以及可扩展性好的动态权限调整的拜占庭容错共识优化方法,减少了共识过程中的通信损耗,提高共识效率,同时该方法可用于节点拥有不同投票权限的复杂环境,适用于更多的应用场景,根据节点的投票行为和通信能力动态更新节点的投票权限,这个过程由系统自动完成,不需要人为干预。由于投票权限反映出节点的通信性能,使用该共识优化方法的系统会不断优化共识域内的节点设备的通信效率,将性能差的共识节点边缘化,提高共识系统的整体性能,解决了现有技术存在的应用场景受限、安全性低以及需要消耗大量的通信资源并且系统资源消耗大的问题。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈