本技术实施例涉及区块链,尤其涉及一种共识方法、设备及存储介质。
背景技术:
1、随着区块链技术的发展,基于区块链的数据聚合的应用场景越来约多,典型的使用场景包括:链上分布式预言机、链上随机数生成器、链上共识、链上投票等。
2、在实际应用场景中,受限于计算能力、数据覆盖、技术能力,申请方需要从多个非完全可信的计算方中获取数据并聚合。为了避免出现因计算方串通或延迟上报而达到恶意干预出块结果的情况,相关技术下,由申请方向各计算方发起可延迟验证函数(verifiabledelay function,vdf)计算,各计算方求解并提供计算结果和证明,再由申请方对计算结果和证明进行验证,实现安全的数据聚合。
3、然而,vdf是一个基于延迟的计算模型,会出现因为计算超时或网络原因导致无法在指定时间内完成计算或算错的情形;该情形与恶意节点延迟提交计算结果或提供错误计算结果的情况难以区分;而vdf的共识协议针对恶意节点的处理方式是直接踢出共识节点组,这样会导致误将一些非恶意节点踢出计算方组,进而影响数据聚合的效果。
技术实现思路
1、本技术实施例提供了一种共识方法、设备及存储介质,用于合理区分和管理谎报算力的恶意计算方和因突发状况计算错误的非恶意计算方,从而提高数据聚合的效果。
2、一方面,本技术实施例提供了一种共识方法,应用于申请方,包括:
3、获取多个计算方各自在本轮共识过程的共识时段中对应的发送时间槽;
4、针对每个计算方,在到达所述计算方对应的发送时间槽时,将相应的二元组信息发送至所述计算方,所述二元组信息包括:传入参数和时延倍数;以使所述计算方基于所述时延倍数、所述传入参数以及从区块链获取的目标计算次数进行可验证延迟函数计算,获得计算结果,所述目标计算次数是所述计算方与所述申请方协商的单位时间槽内的最大平方计算次数;
5、对接收的所述计算方的计算结果进行验证,获得验证结果;并且,在所述验证结果为不通过时,减小所述计算方对应的时延倍数;
6、当所述计算方对应的时延倍数小于预设阈值时,从共识节点组中剔除所述计算方。
7、一方面,本技术实施例提供了一种共识方法,应用于每个计算方,包括:
8、接收申请方发送的计算方对应的二元组信息,所述二元组信息包括:传入参数和时延倍数,所述二元组信息是所述申请方获取多个计算方各自在本轮共识过程的共识时段中对应的发送时间槽,并在到达所述计算方对应的发送时间槽时发送的;
9、基于所述时延倍数、所述传入参数以及从区块链获取的目标计算次数进行可验证延迟函数计算,获得计算结果,所述目标计算次数是所述计算方与所述申请方协商的单位时间槽内的最大平方计算次数;
10、将所述计算结果发送至所述申请方,以使所述申请方对接收的所述计算方的计算结果进行验证,获得验证结果;并且,在所述验证结果为不通过时,减小所述计算方对应的时延倍数;当所述计算方对应的时延倍数小于预设阈值时,从共识节点组中剔除所述计算方。
11、一方面,本技术实施例提供了一种共识装置,应用于申请方,包括:
12、获取模块,用于获取多个计算方各自在本轮共识过程的共识时段中对应的发送时间槽;
13、第一发送模块,用于针对每个计算方,在到达所述计算方对应的发送时间槽时,将相应的二元组信息发送至所述计算方,所述二元组信息包括:传入参数和时延倍数;以使所述计算方基于所述时延倍数、所述传入参数以及从区块链获取的目标计算次数进行可验证延迟函数计算,获得计算结果,所述目标计算次数是所述计算方与所述申请方协商的单位时间槽内的最大平方计算次数;
14、验证模块,用于对接收的所述计算方的计算结果进行验证,获得验证结果;并且,在所述验证结果为不通过时,减小所述计算方对应的时延倍数;
15、筛选模块,用于当所述计算方对应的时延倍数小于预设阈值时,从共识节点组中剔除所述计算方。
16、可选地,所述共识时段包括多个时间槽;所述获取模块还用于:
17、获取多个计算方各自在共识时段中对应的发送时间槽之前,在所述本轮共识过程中,基于所述多个计算方各自的时延倍数,将所述多个计算方分配至所述多个时间槽中,其中,针对每个计算方,所述计算方的时延倍数与所述计算方占用的时间槽的数量相同,所述计算方占用的最后一个时间槽不超出所述多个时间槽的最后一个时间槽,所述计算方的发送时间槽为所述计算方对应的至少一个时间槽的第一个时间槽。
18、可选地,所述多个时间槽中包含计算方数量最多的时间槽中的计算方数量达到最小值;和/或,
19、针对时延倍数差值小于预设阈值的任意两个计算方,所述两个计算方各自对应的发送时间槽不同。
20、可选地,所述验证模块具体用于:
21、若所述计算方在占用的时间槽内返回计算结果,且计算结果正确,则所述验证结果为通过;
22、若所述计算方未在占用的时间槽内返回计算结果,或者,在占用的时间槽内返回计算结果且计算结果错误,则所述验证结果为不通过。
23、可选地,所述验证模块具体用于:
24、在验证结果为不通过时,将所述计算方对应的时延倍数减半并向下取整,获得更新后的时延参数;
25、在验证结果为通过时,将所述计算方对应的时延倍数加一,获得更新后的时延参数。
26、可选地,所述筛选模块还用于:
27、当所述计算方对应的时延倍数大于等于预设阈值时,基于所述更新后的时延参数执行下一轮共识过程。
28、一方面,本技术实施例提供了一种共识装置,应用于每个计算方,包括:
29、接收模块,用于接收申请方发送的计算方对应的二元组信息,所述二元组信息包括:传入参数和时延倍数,所述二元组信息是所述申请方获取多个计算方各自在本轮共识过程的共识时段中对应的发送时间槽,并在到达所述计算方对应的发送时间槽时发送的;
30、处理模块,用于基于所述时延倍数、所述传入参数以及从区块链获取的目标计算次数进行可验证延迟函数计算,获得计算结果,所述目标计算次数是所述计算方与所述申请方协商的单位时间槽内的最大平方计算次数;
31、第二发送模块,用于将所述计算结果发送至所述申请方,以使所述申请方对接收的所述计算方的计算结果进行验证,获得验证结果;并且,在所述验证结果为不通过时,减小所述计算方对应的时延倍数;当所述计算方对应的时延倍数小于预设阈值时,从共识节点组中剔除所述计算方。
32、可选地,所述处理模块具体用于:
33、基于所述时延倍数和所述目标计算次数,确定总平方计算次数;
34、基于所述传入参数、从所述申请方获得的模数参数以及所述总平方计算次数,进行可验证延迟函数计算,获得计算结果。
35、一方面,本技术实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述共识方法的步骤。
36、一方面,本技术实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述共识方法的步骤。
37、本技术实施例中,针对每个计算方,在到达计算方对应的发送时间槽时,申请方将相应的二元组信息发送至计算方,计算方基于二元组信息以及从区块链获取的目标计算次数进行可验证延迟函数计算,获得计算结果。申请方对接收的计算方的计算结果进行验证,获得验证结果;并且,在验证结果为不通过时,减小计算方对应的时延倍数,在计算方对应的时延倍数小于预设阈值时,从共识节点组中剔除计算方。也就是说,本技术在确定计算方返回的没有验证通过时,并没有直接将计算方踢出共识节点组,而是减小时延倍数(即计算时长)。这样,对于谎报算力的恶意计算方,即使减小计算时长,该恶意计算方也无法按时提交计算结果,因此,在多次共识后,该恶意计算方的时延倍数会小于预设阈值,从而从共识节点组中剔除。对于没有谎报算力但是计算失败的计算方,在减小计算时长,以降低计算难度之后,该计算方会在计算时长内提交正确的计算结果,以逐步增加相应的时延倍数,而不会被踢出共识节点组。这样合理区分和管理谎报算力的恶意计算方和因突发状况计算错误的非恶意计算方,避免了误将一些非恶意计算方踢出共识节点组,起到了优胜劣汰的效果,进而提高数据聚合的效果。