一种区块链投票数据缓存方法、设备及介质与流程

文档序号:32348053发布日期:2022-11-26 12:00阅读:39来源:国知局
一种区块链投票数据缓存方法、设备及介质与流程

1.本技术涉及区块链技术领域,尤其涉及一种区块链投票数据缓存方法、设备及介质。


背景技术:

2.区块链技术的本质是具备容错性的复制状态机,历史证明是目前部分公链的创新时间系统。历史证明机制使用哈希函数来测量时间的流逝,并确定网络上发生的各种事件(例如事务请求)的日期。使用历史证明的链节点通过寄存器,既可以了解经过的时间,又可以了解网络上发生的事件的时间顺序。
3.当至少有超过节点数三分之二的非拜占庭节点在同一视图时,如果不能及时的执行请求,则必须移动到一个新的视图中,最大化这段时间,并在这段时间中,时间呈指数级增长,直到请求被执行,容易造成网络节点执行缓慢,不能连续发射新的请求,区块链的延迟性高,不能及时有效的处理请求信息。


技术实现要素:

4.本技术实施例提供了一种区块链投票数据缓存的方法、设备及介质,用于解决如下技术问题:现有的区块链的网络节点在大量接收请求信息时,容易造成寄存器饱和,不利于连续发射数据信息,具有较高的延迟性,效率比较低。
5.本技术实施例采用下述技术方案:
6.一方面,本技术实施例提供了一种区块链投票数据缓存方法,其特征在于,所述方法包括:将从各个区块链节点中获取的投票数据存储到当前校验节点的缓存队列中;其中,所述投票数据包括新增投票数据以及历史投票数据;将所述新增投票数据添加到投票栈中,并更新部分历史投票数据的锁定延迟时间;其中,所述历史投票数据为在所述新增投票数据之前入栈的投票数据;根据所述投票栈中的投票数据的投票时间以及锁定延迟时间,确定所述投票数据的锁定过期时间;判断所述投票栈中投票数据的锁定过期时间是否小于等于当前时间;若是,则将所述投票数据及所述投票数据之后入栈的投票数据全部进行出栈处理;若否,则在所述缓存队列中的投票数据的数量大于等于第一预设阈值后,将所述缓存队列中大于等于第一预设阈值的投票数据进行出列处理;将所述当前校验节点与其他校验节点进行同步处理,并将出栈处理的投票数据以及出列处理的投票数据广播到其他校验节点中。
7.本技术实施例通过对缓存队列中投票数据的合理调度,解决了在大量网络节点接收请求消息时,寄存器容易过饱和的问题,提高了连续发射数据信息的可行性,使延迟能够大幅度降低,具有更高的处理效率。
8.在一种可行的实施方式中,将从各个区块链节点中获取的投票数据存储到当前校验节点的缓存队列中,具体包括:通过所述各个区块链节点对应的客户端,生成所述投票数据;其中,所述投票数据中包括时间戳;遍历区块链中所有的校验节点,得到最新空闲节点;
将所述投票数据发送到所述最新空闲节点的所述缓存队列中,得到所述新增投票数据。
9.在一种可行的实施方式中,遍历区块链中所有的校验节点,得到最新空闲节点,具体包括:遍历所有校验节点,并计算每个校验节点的最小集群提交的临界值深度;在所述临界值深度满足临界值规则的校验节点中,筛选总集群锁定时间大于第二预设阈值的校验节点作为目标校验节点;其中,所述临界值规则为:所述校验节点的最小集群提交的临界值深度大于等于50%;获取所述新增投票数据的时间戳,并将所述时间戳与所述目标校验节点的最新出栈时间进行差值计算,若计算出的差值小于第三预设阈值,则将所述目标校验节点确定为最新空闲节点。
10.在一种可行的实施方式中,根据所述投票栈中投票数据的投票时间以及锁定延迟时间,确定所述投票数据的锁定过期时间,具体包括:根据所述投票数据的时间戳,确定所述投票数据的投票时间;将更新后的所述历史投票数据的锁定延迟时间,以及其余投票数据的原始锁定延迟时间,确定为所述投票数据的最终锁定延迟时间;将所述投票时间与所述最终锁定延迟时间相加,得到所述锁定过期时间。
11.本技术实施例利用锁定延迟时间迫使校验节点将机会成本提交给特定的节点,锁定延迟是在时间单位槽位中测量的,因此校验节点需要等待一个实时的强制延迟,才能打破对其他节点的提交。
12.在一种可行的实施方式中,将所述新增投票数据添加到投票栈中,并更新部分历史投票数据的锁定延迟时间,具体包括:判断所述历史投票数据与所述投票栈的栈顶距离;若所述栈顶距离大于所述历史投票数据中的历史栈顶距离最大值,则对所述历史投票数据的锁定延迟时间进行翻倍处理;若所述栈顶距离小于等于所述历史投票数据中的所述历史栈顶距离最大值,则所述历史投票数据的锁定延迟时间不变。
13.在一种可行的实施方式中,判断所述投票栈中投票数据的锁定过期时间是否小于等于当前时间;若是,则将所述投票数据及所述投票数据之后入栈的投票数据全部进行出栈处理,具体包括:比较所述历史投票数据中的所述锁定过期时间与所述新增投票数据的入栈时间值的大小;其中,新增投票数据的入栈时间为所述当前时间;若所述历史投票数据中的所述锁定过期时间小于等于所述新增投票数据的入栈时间值,则将所述历史投票数据以及在所述历史投票数据之后入栈的投票数据全部进行出栈处理。
14.在一种可行的实施方式中,将所述当前校验节点与其他校验节点进行同步处理,具体包括:控制所述当前校验节点向所述其他校验节点发送校验状态包;其中,所述校验状态包中包括所述当前校验节点的区块哈希值以及区块高度值;若所述当前校验节点的区块高度高于所述其他校验节点的区块高度,则将所述当前校验节点高于所述其他校验节点的区块高度部分进行分批打包,并通过所述校验状态包,对所述其他校验节点进行补齐,得到补齐校验节点;若所述当前校验节点的区块高度不高于所述其他校验节点的区块高度,则将所述其他校验节点确定为共识校验节点;通过所述补齐校验节点与所述共识校验节点,组成同步处理后的其他校验节点。
15.在一种可行的实施方式中,将出栈处理的投票数据以及出列处理的投票数据广播到其他校验节点中,具体包括:对同步处理后的其他校验节点的区块头数据进行区块哈希计算,并根据计算结果,对同步处理后的每个其他校验节点进行共识验证,得到验证结果;其中,所述计算结果由共识节点索引与区块签名组成;若所述验证结果为通过时,则将所述
出栈处理的投票数据以及出列处理的投票数据进行区块广播,以实现所述投票数据广播到更新后的所述其他校验节点中。
16.本技术实施例通过同步处理,可以使网络中每个节点都可以知道其他节点的状态,而无需与他们通信,类似于异步共识,实现将投票数据进行区块广播,有利于更加高效的处理数据信息,并且能够连续的发射数据信息,延迟性更低。
17.第二方面,本技术实施例还提供了一种区块链投票数据缓存设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能够被所述至少一个处理器执行的指令,以使所述至少一个处理器能够执行上述任一实施方式所述的一种区块链投票数据缓存方法。
18.第三方面,本技术实施例还提供了一种非易失性计算机存储介质,所述存储介质为非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有至少一个程序,每个所述程序包括指令,所述指令当被终端执行时,使所述终端执行上述任一实施方式所述的一种区块链投票数据缓存方法。
19.本技术实施例提供了一种区块链投票数据缓存方法、设备及介质,能够在实用拜占庭容错时,让指数级增长的延时可在历史证明中计算并强制执行,加强了活性而非一致性,解决了在大量网络节点接收请求消息时,寄存器容易过饱和的问题,提高了连续发射数据信息的可行性,使延迟能够大幅度降低,具有更高的处理效率。
附图说明
20.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
21.图1为本技术实施例提供的一种区块链投票数据缓存方法流程图;
22.图2为本技术实施例提供的一种区块链投票数据缓存设备的结构示意图。
具体实施方式
23.为了使本技术领域的人员更好地理解本技术中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
24.本技术实施例提供了一种区块链投票数据缓存方法,如图1所示,区块链投票数据缓存方法具体包括步骤s101-s106:
25.s101、将从各个区块链节点中获取的投票数据存储到当前校验节点的缓存队列中。
26.具体地,通过各个区块链节点对应的客户端,生成投票数据。其中,投票数据中包括时间戳。遍历所有校验节点,并计算每个校验节点的最小集群提交的临界值深度。在临界值深度满足临界值规则的校验节点中,筛选总集群锁定时间大于第二预设阈值的校验节点
作为目标校验节点。其中,临界值规则为:校验节点的最小集群提交的临界值深度大于等于50%。获取新增投票数据的时间戳,并将时间戳与目标校验节点的最新出栈时间进行差值计算,若计算出的差值小于第三预设阈值,则将目标校验节点确定为最新空闲节点。
27.在一个实施例中,在投票栈索引7处,锁定延迟时间为256个时间单位。当索引7在集群中提交的临界值深度小于50%时,校验节点可以拒绝投票并让栈中索引为0至7的投票过期。每个校验节点独立控制提交给校验节点的风险,使更高频率的节点将允许校验节点获得更多奖励。
28.作为一种可行的实施方式,首先根据各个改进的实用拜占庭容错区块链节点对应的客户端,生成投票数据,然后对区块链中所有的校验节点进行遍历,计算每个校验节点的最小集群提交的临界值深度,并在临界规则下,对临界值深度进行筛选,选出总集群锁定时间大于第二预设阈值的校验节点作为目标校验节点,然后将新增投票数据的时间戳与目标校验节点的最新出栈时间进行差值计算,确定出差值并与第三预设阈值进行比较,当小于第三预设阈值时,该目标验证节点则为最新空闲节点。
29.进一步地,将投票数据发送到最新空闲节点的缓存队列中,得到新增投票数据。
30.s102、将新增投票数据添加到投票栈中,并更新部分历史投票数据的锁定延迟时间。
31.具体地,判断历史投票数据与投票栈的栈顶距离。若栈顶距离大于历史投票数据中的历史栈顶距离最大值,则对历史投票数据的锁定延迟时间进行翻倍处理;其中,投票数据新入栈时,它的锁定延迟时间为2个时间单位槽位。若栈顶距离小于等于历史投票数据中的历史栈顶距离最大值,则历史投票数据的锁定延迟时间不变。
32.票序投票时间锁定延迟锁定过期时间

426

347

2810

11617
33.表1
34.票序投票时间锁定延迟锁定过期时间

9211

2810

11617
35.表2
36.票序投票时间锁定延迟锁定过期时间

10212

9413

2810

11617
37.表3
38.在一个实施例中,表1为投票栈初始状态表,表2为在单位时间9(即当前时间为9)
时投票数据

的入栈表,表3为在单位时间为10(即当前时间为10)时投票数据

的入栈表。如表1、表2和表3所示,当新增投票数据入栈后,把新增投票数据添加到该当前校验节点的缓存队列的投票栈中,当

入栈后,此时

与栈顶的距离为0,对应的锁定延迟时间为2,当

入栈后,也就是在单位时间为10时,

与栈顶的距离变成了历史新高:1,所以锁定延迟时间加倍,由单位时间2变为单位时间4,根据表1可得,



,由于到栈顶的距离没有达到历史新高,所对应的锁定延迟也不会改变。
39.s103、根据投票栈中的投票数据的投票时间以及锁定延迟时间,确定投票数据的锁定过期时间。
40.具体地,根据投票数据的时间戳,确定投票数据的投票时间。将更新后的历史投票数据的锁定延迟时间,以及其余投票数据的原始锁定延迟时间,确定为投票数据的最终锁定延迟时间。将投票时间与最终锁定延迟时间相加,得到锁定过期时间。
41.作为一种可行的实施方式,首先对投票数据的投票时间进行确定,然后将更新后的历史投票数据的锁定延迟时间,以及其余投票数据的原始锁定延迟时间,统一确定为投票数据的锁定延迟时间,即最终锁定延迟时间,然后将投票时间与最终锁定延迟时间相加,得到锁定过期时间。
42.在一个实施例中,如表2和表3所示,锁定过期时间都是由锁定延迟时间以及投票时间相加所得到的,也就是更新后的历史投票数据的锁定延迟时间,以及其余投票数据的原始锁定延迟时间,统一确定为投票数据的锁定延迟时间,依然满足上述锁定过期时间。
43.s104、判断投票栈中投票数据的锁定过期时间是否小于等于当前时间;若是,则将投票数据及投票数据之后入栈的投票数据全部进行出栈处理。
44.具体地,比较历史投票数据中的锁定过期时间与新增投票数据的入栈时间值的大小。其中,新增投票数据的入栈时间为当前时间。若历史投票数据中的锁定过期时间小于等于新增投票数据的入栈时间值,则将历史投票数据以及在历史投票数据之后入栈的投票数据全部进行出栈处理。
45.作为一种可行的实施方式,对历史投票数据中的锁定过期时间与新增投票数据的入栈时间值的大小进行比较,也就是,将历史投票数据中的锁定过期时间与当前时间进行比较,当历史投票数据中有锁定过期时间小于等于新增投票数据的入栈时间值,则将该历史投票数据以及,在该历史投票数据之后入栈的新增投票数据进行出栈处理,并且不因新入栈的新增投票数据的锁定过期时间的大小所影响。
46.票序投票时间锁定延迟锁定过期时间

11213

11617
47.表4
48.在一个实施例中,表4为单位时间为10(即当前时间为10)时投票数据

入栈表。结合表2和表1中的内容,当单位时间为9时,

入栈后,此时



的锁定过期时间分别为6和7,所以,它们的锁定过期时间要小于时间单位为9时的情况,将



进行出栈处理,由于

的锁定过期时间依然大于单位时间9,所以

留在栈中。
49.在一个实施例中,结合表3和表4所示,当时间单位为10时,

入栈,而此时虽然



的锁定过期时间要大于单位时间10,但是

的锁定过期时间为10,已经不满足在栈中
的条件,所以要将





进行出栈处理,也就是,最后得到如表4所示的只保留了




50.s105、若投票栈中投票数据的锁定过期时间大于当前时间,则在缓存队列中的投票数据的数量大于等于第一预设阈值后,将缓存队列中大于等于第一预设阈值的投票数据进行出列处理。
51.具体地,当缓存队列的投票数据的数量大于等于第一预设阈值,将大于等于第一预设阈值的投票数据都要进行出列处理,也就是,当缓存队列中的投票栈已经存满时,将所有的投票数据全部进行出列,不保留任何投票数据。
52.作为一种可行的实施例,当投票栈到达32个投票时,可以认为该投票栈处于最大锁定状态,当任何锁定值等于或大于1《《32时,符合上述条件的投票数据都会出列。
53.s106、将当前校验节点与其他校验节点进行同步处理,并将出栈处理的投票数据以及出列处理的投票数据广播到其他校验节点中。
54.具体地,控制当前校验节点向其他校验节点发送校验状态包;其中,校验状态包中包括当前校验节点的区块哈希值以及区块高度值。若当前校验节点的区块高度高于其他校验节点的区块高度,则将当前校验节点高于其他校验节点的区块高度部分进行分批打包,并通过校验状态包,对其他校验节点进行补齐,得到补齐校验节点。若当前校验节点的区块高度不高于其他校验节点的区块高度,则将其他校验节点确定为共识校验节点。通过补齐校验节点与共识校验节点,组成同步处理后的其他校验节点。
55.作为一种可行的实施方式,当前校验节点向其他校验节点发送校验状态包,来实现对其他校验节点的同步处理,通过对当前校验节点的区块高度与其他校验节点的区块高度的判断,实现对其他校验节点的同步处理,将当前校验节点高于其他校验节点的区块高度部分进行分批打包,得到补齐校验节点,当前校验节点的区块高度不高于其他校验节点的区块高度时,将其他校验节点确定为共识校验节点,最后将补齐校验节点与共识校验节点共同组成同步处理后的其他校验节点。
56.进一步地,对同步处理后的其他校验节点的区块头数据进行区块哈希计算,并根据计算结果,对同步处理后的每个其他校验节点进行共识验证,得到验证结果。其中,计算结果由共识节点索引与区块签名组成。若验证结果为通过时,则将出栈处理的投票数据以及出列处理的投票数据进行区块广播,以实现投票数据广播到更新后的其他校验节点中。
57.作为一种可行的实施方式,通过对同步处理后的其他校验节点的区块头数据进行区块哈希计算,对同步处理后的每个其他校验节点进行共识验证,然后根据验证结果,实现对出栈及出列的投票数据进行签名验证,来实现将验证通过后的投票数据广播到改进的实用拜占庭容错区块链中的各个区块中,最后执行来自客户端的请求操作消息的操作。
58.另外,本技术实施例还提供了一种区块链投票数据缓存设备,如图2所示,设备具体200包括:
59.至少一个处理器201,以及,与至少一个处理器201通信连接的存储器202。其中,存储器202存储有能够被至少一个处理器201执行的指令,以使至少一个处理器201能够执行:
60.将从各个区块链节点中获取的投票数据存储到当前校验节点的缓存队列中;其中,投票数据包括新增投票数据以及历史投票数据;
61.将新增投票数据添加到投票栈中,并更新部分历史投票数据的锁定延迟时间;其
中,历史投票数据为在新增投票数据之前入栈的投票数据;
62.根据投票栈中的投票数据的投票时间以及锁定延迟时间,确定投票数据的锁定过期时间;
63.判断投票栈中投票数据的锁定过期时间是否小于等于当前时间;若是,则将投票数据及投票数据之后入栈的投票数据全部进行出栈处理;
64.若否,则在缓存队列中的投票数据的数量大于等于第一预设阈值后,将缓存队列中大于等于第一预设阈值的投票数据进行出列处理;
65.将当前校验节点与其他校验节点进行同步处理,并将出栈处理的投票数据以及出列处理的投票数据广播到其他校验节点中。
66.本技术实施例还提供了一种可读性存储介质一种非易失性计算机存储介质,其特征在于,所述存储介质为非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有至少一个程序,每个所述程序包括指令,所述指令当被终端执行时,使所述终端执行:
67.将从各个区块链节点中获取的投票数据存储到当前校验节点的缓存队列中;其中,投票数据包括新增投票数据以及历史投票数据;将新增投票数据添加到投票栈中,并更新部分历史投票数据的锁定延迟时间;其中,历史投票数据为在新增投票数据之前入栈的投票数据;根据投票栈中的投票数据的投票时间以及锁定延迟时间,确定投票数据的锁定过期时间;判断投票栈中投票数据的锁定过期时间是否小于等于当前时间;若是,则将投票数据及投票数据之后入栈的投票数据全部进行出栈处理;若否,则在缓存队列中的投票数据的数量大于等于第一预设阈值后,将缓存队列中大于等于第一预设阈值的投票数据进行出列处理;将当前校验节点与其他校验节点进行同步处理,并将出栈处理的投票数据以及出列处理的投票数据广播到其他校验节点中。
68.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
69.本技术提出了一种区块链投票数据缓存的方法、设备及介质,使用历史证明作为实用拜占庭容错区块链共识算法的网络时钟,能够在节点在拜占庭容错时,让指数级增长的延时可在历史证明中计算并强制执行,加强了活性而非一致性,解决了在大量网络节点接收请求消息时,寄存器容易过饱和的问题,提高了连续发射数据信息的可行性,使延迟能够大幅度降低,具有更高的处理效率。
70.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
71.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
72.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术的实施例可以有各种更改和变化。凡在本技术实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1