基于可验证随机选择的区块链共识方法、装置及系统

文档序号:37112262发布日期:2024-02-22 21:11阅读:15来源:国知局
基于可验证随机选择的区块链共识方法、装置及系统

本发明属于区块链共识,具体涉及一种基于可验证随机选择的区块链共识方法、装置及系统。


背景技术:

1、目前,区块链技术发展迅速,作为一种去中心化的分布式数据库技术,区块链使用共识机制来确保区块链网络中节点的一致性,因此共识算法能够影响整个区块链网络系统实现统一性的速率。公有区块链为了减少系统分叉情况的发生,采用如:工作量证明(pow,proof of work)和权益证明(pos,proof of stake)等证明类共识算法来竞争出块,但这些共识算法存在共识速度慢、资源开销极高的缺点;而联盟链常用的共识机制则有:实用拜占庭容错协议(practical byzantine fault tolerance,简称pbft)、raft(reliable,replicated,redundant,and fault-tolerant)共识协议和paxos算法等,这些算法虽然相比公有链共识算法,在效率上有一定程度的提升,但是为了保证系统的安全性,共识所需的通信复杂度高、资源开销较大,不能支持大规模数量的共识节点。其次,公有链和联盟链所使用的共识算法对运行介质要求较高,需要强大的算力或足够迅速的带宽去满足共识所需的要求,这使得低算力、低网络设备因硬件条件不足而无法参与共识。

2、为了实现低资源开销、支持大规模节点、低通信复杂度的共识的技术目标,现有技术提出了轮次流拜占庭容错协议(rotation practical byzantine fault tolerance,简称rpbft),即随机选取部分节点作为“共识委员节点”参与每轮次pbft共识。由于共识委员节点数目固定,与节点规模无关,因此rpbft共识算法可扩展性更强。但是其本质还是pbft,只是从大规模节点中选出了“共识委员节点”参与共识,通信复杂度仍然很高,且选出“共识委员节点”会使共识中心化,容易造成系统不安全。


技术实现思路

1、为了解决现有技术中所存在的上述问题,本发明提供了一种基于可验证随机选择的区块链共识方法、装置及系统。

2、本发明要解决的技术问题通过以下技术方案实现:

3、第一方面,本发明提供了一种基于可验证随机选择的区块链共识方法,包括:

4、s1、利用节点创建创世文件,并在到达unix时间戳之前,启动共识;其中,创世文件中包含:unix时间戳、出块时间以及请求选举交易,每个节点创建的创世文件相同;

5、s2、通过节点读取请求选举交易,并按照预设规则对请求选举交易排序,得到节点打包出块顺序;

6、s3、节点利用节点打包出块顺序获取当前轮次的出块节点;

7、s4、当前轮次的出块节点按照自身账本内容进行分叉选择计算,得到新区块的构造块,并且当前轮次的非出块节点同步按照出块时间广播自身请求选举交易;

8、s5、当前轮次的出块节点对非出块节点的请求选举交易进行验证,并将验证通过的请求选举交易打包进入新区块的构造块,生成打包构造块;

9、s6、将当前轮次的轮次数加1,加1之后作为当前轮次的轮次数,并将当前轮次之前预设轮次数所打包的请求选举交易,按照s2的预设规则进行排序,得到当前轮次的节点打包出块顺序;

10、s7、循环执行步骤s3-s6直到预设轮次数。

11、可选地,利用节点创建创世文件,并在到达unix时间戳之前,启动共识之后,基于可验证随机选择的区块链共识方法,还包括:

12、所有节点通过ssl握手的双向认证连接方式进行认证连接。

13、可选地,通过节点读取请求选举交易,并按照预设规则对请求选举交易排序,得到节点打包出块顺序,包括:

14、节点读取请求选举交易,并将请求选举交易生成第一预设列表;

15、节点根据第一预设列表检查发起节点的被惩罚状态;

16、当发起节点处于被惩罚状态,则将发起节点从第一预设列表中剔除,得到第二预设列表;

17、通过第二预设列表中的随机数,对第二预设列表进行降序排列,得到节点打包出块顺序。

18、可选地,当前轮次的出块节点按照自身账本内容进行分叉选择计算,得到新区块的构造块,包括:

19、获取当前轮次的出块节点,所对应的账本内容中高度最高的区块列表;

20、从账本内容中高度最高的区块列表,索引得到索引值最大的区块组成的列表,得到第三列表;

21、判断第三列表中的区块数量;

22、当第三列表中的区块数量为1时,则将索引值最大的区块作为新区块的构造块。

23、可选地,判断第三列表中的区块数量之后,基于可验证随机选择的区块链共识方法,还包括:

24、当第三列表中的区块数量不为1时,则通过vrf算法随机选择一个区块作为新区块的构造块。

25、可选地,循环执行步骤s3-s6直到预设轮次数之后,基于可验证随机选择的区块链共识方法,还包括:

26、判断预设轮次数中所生成的打包构造块中,索引值最大的打包构造块的数量;

27、当打包构造块的数量为1时,则确认达到预设轮次数时所有的打包构造块满足确定性判断;其中满足确定性判断的打包构造块,不再产生回滚处理。

28、可选地,在当前轮次的出块节点对非出块节点的请求选举交易进行验证之后,基于可验证随机选择的区块链共识方法还包括:

29、当前轮次的出块节点对没有通过验证的非出块节点的请求选举交易进行惩罚,使得没有通过验证的非出块节点,在当前轮次和当前轮次之后的预设轮次中不允许出块。

30、第二方面,本发明提供了一种基于可验证随机选择的区块链共识装置,包括:创建单元、排序单元、获取单元、计算单元、验证单元以及循环单元;

31、s1、创建单元用于,利用节点创建创世文件,并在到达unix时间戳之前,启动共识;其中,创世文件中包含:unix时间戳、出块时间以及请求选举交易,每个节点创建的创世文件相同;

32、s2、排序单元用于,通过节点读取请求选举交易,并按照预设规则对请求选举交易排序,得到节点打包出块顺序;

33、s3、获取单元用于,利用节点打包出块顺序获取当前轮次的出块节点;

34、s4、计算单元用于,使当前轮次的出块节点按照自身账本内容进行分叉选择计算,得到新区块的构造块,并且当前轮次的非出块节点同步按照出块时间广播自身请求选举交易;

35、s5、验证单元用于,利用当前轮次的出块节点对非出块节点的请求选举交易进行验证,并将验证通过的请求选举交易打包进入新区块的构造块,生成打包构造块;

36、s6、排序单元还用于,将当前轮次的轮次数加1,加1之后作为当前轮次的轮次数,并将当前轮次之前预设轮次数所打包的请求选举交易,按照s2的预设规则进行排序,得到当前轮次的节点打包出块顺序;

37、s7、循环单元用于,循环执行步骤s3-s6直到预设轮数。

38、第三方面,本发明提供一种基于可验证随机选择的区块链共识系统,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当系统运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行上述第一方面方法的步骤。

39、第四方面,本发明提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述第一方面方法的步骤。

40、本发明提供的一种基于可验证随机选择的区块链共识方法、装置及系统,包括:s1、利用节点创建创世文件,并在到达unix时间戳之前,启动共识;其中,创世文件中包含:unix时间戳、出块时间以及请求选举交易,每个节点创建的创世文件相同;s2、通过节点读取请求选举交易,并按照预设规则对请求选举交易排序,得到节点打包出块顺序;s3、节点利用节点打包出块顺序获取当前轮次的出块节点;s4、当前轮次的出块节点按照自身账本内容进行分叉选择计算,得到新区块的构造块,并且当前轮次的非出块节点同步按照出块时间广播自身请求选举交易;s5、当前轮次的出块节点对非出块节点的请求选举交易进行验证,并将验证通过的请求选举交易打包进入新区块的构造块,生成打包构造块;s6、将当前轮次的轮次数加1,加1之后作为当前轮次的轮次数,并将当前轮次之前预设轮次数所打包的请求选举交易,按照s2的预设规则进行排序,得到当前轮次的节点打包出块顺序;s7、循环执行步骤s3-s6直到预设轮次数。通过计算得到节点打包出块顺序,并按照节点打包出块顺序获取当前轮次的出块节点,使得网络中分布式节点无需多轮通信进行信息交换,也无需消耗过多资源竞争出块。此外,通过分叉选择计算,得到新区块的构造块,保证了网络中的分布式节点能够以相同的规则选择区块,使区块链共识并收敛,降低了资源开销,提高了支持节点的数量。

41、以下将结合附图及实施例对本发明做进一步详细说明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1