一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种动态的基于信誉的区块链共识方法和系统

2022-04-14 01:27:59 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,特别涉及一种动态的基于信誉的区块链共识方法和系统。


背景技术:

2.区块链基于去中心化、匿名性、不可篡改性等特征,区块链今年来也逐渐广泛运用于数字货币、金融、物联网、医疗等众多领域。但现有的区块链项目的交易速度不如传统的交易速度。共识机制作为影响区块链技术的重要因素之一,是将多个不可靠的单独节点组建成一个可靠的分布式系统的关键,主要解决如何实现区块链在分布式场景下的一致性。共识机制在维护区块链的安全和效率方面起着至关重要的作用,使用正确的共识机制可以提升系统性能、促进区块链技术得到广泛应用。
3.poa是一种新的拜占庭类共识算法,它将区块的创建限制在一组固定的节点上,poa的核心是指定一个或者一组固定的验证节点,由验证节点对网络中的交易进行验证并打包,其他节点直接从验证节点这里同步数据。与pow算法不同,poa不是资源密集型算法,它是轻量级的,具有更高的吞吐量。poa共识机制不需要竞争记账权,区块链的安全性是由验证节点来保证的,因此poa具有高度的可扩展性。但poa共识机制中由于验证节点固定在一个或一组节点上,权限过高,如果验证节点自己作恶,自己发动对网络的攻击或者篡改账本,就很容易对整个区块链网络造成伤害。综上所述,poa共识机制虽然高效,但存在去中心化问题。


技术实现要素:

4.本发明的目的在于针对poa共识机制的去中心化问题,提供一种动态的基于信誉的区块链共识方法和系统,通过节点行为判别算法来评估验证节点是否正常的完成了共识流程,以及引入信誉评价算法给每个节点赋予和更新信誉值,在每轮共识周期结束前动态更新验证节点及监控节点,从而解决poa共识机制中验证节点权利过大导致的中心化问题。
5.为了实现上述发明目的,本发明实施例提供了以下技术方案:一种动态的基于信誉的区块链共识方法,包括以下步骤:步骤s1,从分布式网络中生成监控群组,所述监控群组中包括多个监控节点;生成监控群组后,从分布式网络中随机选取n%的节点作为验证节点,生成验证群组;步骤s2,设定交易时间,验证群组中最先被选择的验证节点在交易时间内验证并打包生成一个新区块,并将创建的新区块广播至监控群组;若该验证节点在交易时间内未完成创建新区块,则按照验证群组中验证节点的生成顺序由下一个验证节点创建新区块,从而进入下一个共识回合;步骤s3,根据创建的新区块,所有监控节点通过节点行为判别算法分别评估验证节点是否正常的完成了共识流程;如果验证节点正常完成则得到代币奖励,否则该新区块无效,所有监控节点评估完后进入下一个共识回合;
步骤s4,重复步骤s2、步骤s3,直到验证群组中所有的验证节点都完成共识流程;利用信誉评价算法对分布式网络中所有节点进行信誉值动态更新,从而结束本次共识周期;步骤s5,重复步骤s1,得到下一个共识周期的监控节点,并根据步骤s5得到的信誉值,所有节点按照信誉值排序选择前n%的节点作为验证节点,进入下一个共识周期。
6.所述从分布式网络中生成监控群组的步骤,包括:各个节点加入分布式网络时,获得信誉初始值;信誉初始值高于阈值的节点,申请成为监控节点,从而生成监控群组。
7.设定交易时间

t;验证节点检索待确认交易池,选择将要包含进区块的交易,对所选择的交易进行验证并打包;根据区块的容量限制,选择交易的数量由最高值约束;需要验证的交易信息包括交易是否包含有效的输入地址和输出地址、交易的输入总额和输出总额是否合理、是否有重复交易;验证节点完成交易打包后,构造区块头;所述区块头包括前一个区块的哈希值、该验证节点的地址、当前验证群组的集合、merkleroot哈希、时间戳、本区块的哈希值;生成新区块,验证节点将该新区块广播至监控群组。
8.所述根据创建的新区块,所有监控节点通过节点行为判别算法分别评估验证节点是否正常的完成了共识流程的步骤,包括:每个监控节点接收新区块后,核查新区块内的交易及哈希值;若该监控节点核查无误则标记新区块为legal并签名,若该监控节点核查有误则标记新区块为illegal并签名;如果超过2/3的监控节点标记新区块为legal并签名,那么该新区块被确认,且生成该新区块的验证节点被认为完成一次good共识行为并获得代币奖励;做出legal标记的所有监控节点被认为完成了一次good共识行为,做出illegal标记的所有监控节点被认为完成了一次bad共识行为;如果少于2/3的监控节点标记区块为legal并签名,那么认为该新区块非法,且生成该新区块的验证节点被认为完成一次bad共识行为;做出illegal标记的所有监控节点被认为完成了一次good共识行为,做出legal标记的所有监控节点被认为完成了一次bad共识行为。
9.当新区块内的交易是非法或区块头哈希值不正确时,监控节点核查该新区块有误。
10.所述利用信誉评价算法对分布式网络中所有节点进行信誉值动态更新的步骤,包括:节点u的历史信誉评价值为:式(1)中,t表示当前共识周期,k表示当前共识周期之前的第k个共识周期;表示节点u在第k个共识周期的总信誉值;为时间衰减因子,表示第k个共识周期中获得的信誉值对历史信誉评价的影响程度;
节点u的共识信誉评价值为:式(2)中表示节点u在当前共识周期中被定义为good共识行为的次数,表示节点u在当前共识周期中被定义为bad共识行为的次数,表示bad共识行为的权重,表示节点u在当前共识周期中共识行为的总次数;节点u的交易信誉评价值为:在当前共识周期中,式(3)中表示节点u的所有交易总数,表示其它节点对节点u第i笔交易的反馈评价,表示第i笔交易的交易对象,表示节点u的可信程度;节点u在当前共识周期内的总信誉值为:(4)在当前共识周期中,节点u的总信誉值由节点u的历史信誉评价值、共识信誉评价值、交易信誉评价值组成;式(4)中为历史信誉评价值的权重,为共识信誉评价值的权重,为交易信誉评价值的权重。
11.一种动态的基于信誉的区块链共识系统,包括:群组生成模块,用于从分布式网络中生成监控群组和验证群组;区块创建模块,用于使验证群组中的验证节点在交易时间内验证并打包生成一个新区块,并将创建的新区块广播至监控群组;以及判别验证节点在创建新区块时是否在交易时间内完成;共识评估模块,用于使验证节点通过节点行为判别算法评估验证节点是否正常的完成了共识流程,以及利用信誉评价算法对分布式网络中的所有节点进行信誉值动态更新。
12.所述群组生成模块包括监控群组生成单元、验证群组生成单元,其中,所述监控群组生成单元用于根据各个节点加入从分布式网络时获得的信誉初始值,将信誉初始值高于阈值的节点申请成为监控节点,从而生成监控群组;所述验证群组生成单元用于等监控群组生成后,从分布式网络中随机选取n%的节点作为验证节点,从而生成验证群组。
13.所述区块创建模块包括区块创建单元、区块验证单元,其中,所述区块创建单元用于设定交易时间,并使验证群组中最先被选择的验证节点在
交易时间内验证并打包生成一个新区块,并将创建的新区块广播至监控群组;所述区块验证单元用于判断验证节点是否在交易时间内完成创建新区块,若未完成则通知区块创建单元,按验证群组中验证节点的生成顺序使下一个验证节点创建新区块。
14.所述共识评估模块包括核查单元、信誉更新单元,其中,所述核查单元用于使监控节点在接收新区块后核查新区块的交易和哈希值,并根据核查结果对验证节点和监控节点赋予共识行为次数,所述共识行为包括good共识行为、bad共识行为;所述信誉更新单元用于利用信誉评价算法对分布式网络中所有节点进行信誉值动态更新。
15.与现有技术相比,本发明的有益效果:首先本发明在共识周期开始前动态地选择验证节点和监控节点,验证节点通过抵押自己的信誉值来进行新区块打包,监控节点通过节点行为判别算法来评估验证节点是否正常的完成了共识流程;然后以节点的历史信誉为前提,依据节点参与现阶段共识流程的行为提出新的节点信誉评价算法,利用信誉评价算法动态地更新每个节点的信誉值,并更新验证节点与监控节点的选择;此外本发明在不影响poa共识效率的前提下,减小出错节点对共识流程的影响,提高了机制的容错性和安全性,解决了poa共识机制的中心化问题。
附图说明
16.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍, 应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
17.图1为本发明方法流程图。
具体实施方式
18.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性,或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
20.实施例1:本发明通过下述技术方案实现,如图1所示,一种动态的基于信誉的区块链共识方
法,包括以下步骤:步骤s1,从分布式网络中生成监控群组和验证群组。
21.分布式网络中包括若干个节点,各个节点通过网络相互通信,各个节点加入分布式网络时,获得信誉初始值。设置一个阈值,信誉初始值高于阈值的节点则可以申请成为监控节点,从而生成监控群组。如果分布式网络中共有100个节点,信誉初始值高于阈值的节点有10个,那么生成的监控群组中则有10个监控节点。
22.在分布式网络中剩下的90个节点里随机选择n%的节点作为验证节点,从而生成验证群组。假设从分布式网络剩余的节点中随机选择10%的节点作为验证节点,生成验证群组,则验证群组中有9个验证节点。
23.先生成监控群组再从剩余的节点中选择验证节点,是为了防止验证节点可以贿赂其他节点成为监控节点去作恶。在第一次共识周期之前随机选择验证节点是因为共识流程还没有开始,所以进行的随机选择。
24.步骤s2,设定交易时间,验证群组中最先被选择的验证节点在交易时间内验证并打包生成一个新区块,并将创建的新区块广播至监控群组;若该验证节点在交易时间内未完成创建新区块,则按照验证群组中验证节点的生成顺序由下一个验证节点创建新区块,从而进入下一个共识回合。
25.设定交易时间为

t,验证节点检索待确认交易池,选择将要包含进区块的交易,对所选择的交易进行验证并打包。由于区块有容量限制,因此选择交易的数量由最高值约束。需要验证的交易信息包括交易是否包括但不限于有效的输入地址和输出地址、交易的输入总额和输出总额是否合理、是否有重复交易。
26.验证节点完成交易打包后,构造区块头;所述区块头包括六个部分:前一个区块的哈希值、该验证节点的地址、当前验证群组的集合、merkleroot哈希、时间戳、本区块的哈希值。从而生成新区块,验证节点将该新区块广播至监控群组。
27.假设为验证群组中的验证节点按照被选择的顺序进行编号,分别为验证节点1、验证节点2、验证节点3、验证节点4、验证节点5、验证节点6、验证节点7、验证节点8、验证节点9。设定交易时间为

t,最先被选择的验证节点1首先在交易时间

t内验证并打包一个新区块r1,并将该新区块r1广播至监控群组,使得监控群组中10个监控节点都接收到该新区块r1,然后进入步骤s3。
28.接着验证节点2在交易时间

t内验证并打包一个新区块r2,并将该新区块r2广播至监控群组,以此类推,直至10个验证节点都进行新区块的创建操作。
29.但是如果验证节点1在交易时间

t内未能完成创建新区块,则由验证节点2创建新区块r2,说明验证节点1的共识回合结束,进入了下一个共识回合,也就是进入了验证节点2的共识回合。由于一共有9个验证节点,则一个共识周期会进行9次共识回合。
30.步骤s3,根据创建的新区块,所有监控节点通过节点行为判别算法分别评估验证节点是否正常的完成了共识流程;如果验证节点正常完成则得到代币奖励,否则该新区块无效,所有监控节点评估完后进入下一个共识回合。
31.再假设为监控群组中的监控节点进行编号,编号的顺序可以是随机的,也可以是按照初始信誉值的大小顺序进行编号,分别为监控节点1、监控节点2、监控节点3、监控节点4、监控节点5、监控节点6、监控节点7、监控节点8、监控节点9、监控节点10。
32.当验证节点1在交易时间

t内验证并打包一个新区块r1,并将新区块r1广播至监控群组,使得监控群组中10个监控节点都接收到该新区块r1后,10个监控节点不分先后顺序对新区块r1内的交易和哈希值进行核查,如果只有1个监控节点核查的话,安全性很低。
33.若其中7个监控节点i(i=1,2,3,4,8,9,10)核查新区块r1无误,则这7个监控节点分别标记新区块r1为legal并各自签名,但其中3个监控节点j(j=5,6,7)核查新区块r1有误,即新区块r1的交易是非法的或区块头哈希值不正确,则这3个监控节点分别标记新区块r1为illegal并各自签名。
34.可以理解的,监控群组中的监控节点可以对新区块进行核查,也有可能个别监控节点不对新区块进行核查,也不会有签名,但如果监控节点不对新区块进行核查,则认为该监控节点失职。
35.如果超过2/3的监控节点标记新区块为legal并签名,那么该新区块被确认,且生成该新区块的验证节点被认为完成一次good共识行为并获得代币奖励;做出legal标记的所有监控节点被认为完成了一次good共识行为,做出illegal标记或者没有签名的所有监控节点被认为完成了一次bad共识行为。
36.从上述示例中可以看出,已经超过2/3的监控节点标记新区块r1为legal了,则新区块r1被确认。并且验证节点1被认为完成一次good共识行为并获得代币奖励。监控节点i(i=1,2,3,4,8,9,10)被认为完成了一次good共识行为,监控节点j(j=5,6,7)被认为完成了一次bad共识行为。
37.反之,如果少于2/3的监控节点标记区块为legal并签名,那么认为该新区块非法,且生成该新区块的验证节点被认为完成一次bad共识行为;做出illegal标记的所有监控节点被认为完成了一次good共识行为,做出legal标记或者没有签名的所有监控节点被认为完成了一次bad共识行为。
38.对验证节点1完成共识流程的评估后,则完成了本次共识回合,监控群组再对验证节点2创建的新区块r2进行共识流程的评估,从而进入下一个共识回合,以上就是节点行为判别算法。
39.步骤s4,重复步骤s2、步骤s3,直到验证群组中所有的验证节点都完成共识流程;利用信誉评价算法对分布式网络中所有节点进行信誉值动态更新,从而结束本次共识周期。
40.重复步骤s2、步骤s3,直到10个验证节点都完成共识流程,也就是完成了10次共识回合,利用信誉评价算法对分布式网络中所有节点进行信誉值动态更新,从而结束本次共识周期。
41.所述信誉评价算法为:节点u的历史信誉评价值为:式(1)中,t表示当前共识周期,k表示当前共识周期之前的第k个共识周期;表示节点u在第k个共识周期的总信誉值;为时间衰减因子,表示第k个共识周期中获得的信誉值对历史信誉评价的影响程度;
节点u的共识信誉评价值为:式(2)中表示节点u在当前共识周期中被定义为good共识行为的次数,表示节点u在当前共识周期中被定义为bad共识行为的次数,表示bad共识行为的权重,表示节点u在当前共识周期中共识行为的总次数;节点u的交易信誉评价值为:在当前共识周期中,式(3)中表示节点u的所有交易总数,表示其它节点对节点u第i笔交易的反馈评价,表示第i笔交易的交易对象,表示节点u的可信程度;节点u在当前共识周期内的总信誉值为:(4)在当前共识周期中,节点u的总信誉值由节点u的历史信誉评价值、共识信誉评价值、交易信誉评价值组成;式(4)中为历史信誉评价值的权重,为共识信誉评价值的权重,为交易信誉评价值的权重。
42.步骤s5,重复步骤s1,得到下一个共识周期的监控节点,并根据步骤s5得到的信誉值,所有节点按照信誉值排序选择前n%的节点作为验证节点,进入下一个共识周期。
43.可见,在每个共识周期结束时,都动态更新了分布式网络中所有节点的信誉值,也只有第1个共识周期开始前,是在剩余的90个节点中随机选择的10%个节点作为验证节点,从第2个共识周期开始,就是按照信誉值排序选择前10%个节点作为验证节点了。
44.现有的基于信誉的共识机制都是一群节点先生成区块,然后根据信誉评价来竞争区块上链资格。而本方案是先通过信誉值确定了验证节点,验证节点直接生成区块,由监控群组的行为判定来确定区块是否上链。
45.本方案还提出一种动态的基于信誉的区块链共识系统,以实现上述的方案,所述系统包括群组生成模块、区块创建模块、共识评估模块,其中:群组生成模块,用于从分布式网络中生成监控群组和验证群组;区块创建模块,用于使验证群组中的验证节点在交易时间内验证并打包生成一个新区块,并将创建的新区块广播至监控群组;以及判别验证节点在创建新区块时是否在交易时间内完成;共识评估模块,用于使验证节点通过节点行为判别算法评估验证节点是否正常的完成了共识流程,以及利用信誉评价算法对分布式网络中的所有节点进行信誉值动态更
新。
46.更进一步地,所述群组生成模块包括监控群组生成单元、验证群组生成单元,其中,所述监控群组生成单元用于根据各个节点加入从分布式网络时获得的信誉初始值,将信誉初始值高于阈值的节点申请成为监控节点,从而生成监控群组;所述验证群组生成单元用于等监控群组生成后,从分布式网络中随机选取n%的节点作为验证节点,从而生成验证群组。
47.更进一步地,所述区块创建模块包括区块创建单元、区块验证单元,其中,所述区块创建单元用于设定交易时间,并使验证群组中最先被选择的验证节点在交易时间内验证并打包生成一个新区块,并将创建的新区块广播至监控群组;所述区块验证单元用于判断验证节点是否在交易时间内完成创建新区块,若未完成则通知区块创建单元,按验证群组中验证节点的生成顺序使下一个验证节点创建新区块。
48.更进一步地,所述共识评估模块包括核查单元、信誉更新单元,其中,所述核查单元用于使监控节点在接收新区块后核查新区块的交易和哈希值,并根据核查结果对验证节点和监控节点赋予共识行为次数,所述共识行为包括good共识行为、bad共识行为;所述信誉更新单元用于利用信誉评价算法对分布式网络中所有节点进行信誉值动态更新。
49.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献