一种基于刚性内存的区块链共识算法的性能评估方法与流程

文档序号:33403232发布日期:2023-03-08 20:05阅读:46来源:国知局
一种基于刚性内存的区块链共识算法的性能评估方法与流程

1.本公开涉及但不限于计算机技术领域,尤其涉及一种基于刚性内存的区块链共识算法的性能评估方法。


背景技术:

2.区块链是一个不断增长且相互独立的链式数据库,各个区块按照时间先后顺序相接,并以密码学方式进行加密,逐步应用于金融、证券保险、能源、公共事务运营和供应链管理等多个行业。区块链技术经过十多年的发展,已从1.0时代的数字货币进化为2.0时代的智能合约。
3.为了打破算力垄断和回归区块链技术去中心化的初衷,产生多种抗专用集成电路(application-specific integrated circuit,asic)性的新型区块链共识协议,如以太坊算法(ethash/etchash)、工作量证明算法(autolykos2)等区块链共识协议,此类区块链共识协议都是基于刚性内存的共识协议算法实现的,共识算法采用一种较难并行处理的哈希函数,并生成占用较大内存的数据集合,在后续计算过程中需要频繁大量随机访问数据集中的数据,整个算法实现过程需要占用大量的内存空间和高频次的内存数据读取。如何评估共识装置的计算性能,是目前需要亟待解决的问题之一。


技术实现要素:

4.本公开提供一种基于刚性内存的区块链共识算法的性能评估方法、共识装置、终端以及计算机可读存储介质,以解决对区块链共识装置的计算性能评估困难的问题。
5.第一方面,本公开提供一种基于刚性内存的区块链共识算法的性能评估方法,包括:获取区块链的区块信息和第一共识装置的硬件参数;根据区块信息,确定第一共识装置的计算内存值,计算内存值为区块链共识算法占用的刚性内存值;根据区块信息和硬件参数,确定第一共识装置对区块链共识算法的计算时长;以及根据计算内存值和计算时长,对第一共识装置的计算性能进行评估。
6.在一些可能的实施方式中,根据区块信息,确定第一共识装置的计算内存值,包括:根据区块信息,确定区块链共识算法的内存增长次数;根据内存增长次数,确定区块链共识算法占用的刚性内存值;以及根据刚性内存值与硬件参数,确定第一共识装置的计算内存值。
7.在一些可能的实施方式中,根据区块信息和硬件参数,确定第一共识装置对区块链共识算法的计算时长,包括:根据区块信息和硬件参数,进行哈希计算,以确定对区块链共识算法生成的数据集的第一计算时长;根据区块信息和硬件参数,进行随机数值(number used once,nonce)遍历哈希计算,以确定nonce遍历哈希计算时长;根据区块信息,进行验证哈希计算,确定验证时长;根据第一计算时长、nonce遍历哈希计算时长和验证时长,以确定第一共识装置对区块链共识算法的计算时长。
8.在一些可能的实施方式中,根据区块信息和硬件参数,进行哈希计算,以确定对区
块链共识算法生成的数据集的第一计算时长,包括:根据区块信息,进行第一哈希计算,以得到种子哈希值与第一哈希计算时长;根据种子哈希值,进行第二哈希计算,以得到第二哈希计算时长;根据区块信息与硬件参数,进行第三哈希计算,以得到第三哈希计算时长;根据第一哈希计算时长、第二哈希计算时长和第三哈希计算时长,确定第一计算时长。
9.在一些可能的实施方式中,硬件参数包括线程参数,根据区块信息与硬件参数,进行第三哈希计算,以得到第三哈希计算时长,包括:根据区块信息,进行第三哈希计算,以得到第四哈希计算时长;以及将线程参数除第四哈希计算时长,以得到第三哈希计算时长。
10.在一些可能的实施方式中,根据第一哈希计算时长、第二哈希计算时长和第三哈希计算时长,确定第一计算时长包括:通过将第一哈希计算时长、第二哈希计算时长和第三哈希计算时长相加,得到第一计算时长。
11.在一些可能的实施方式中,硬件参数包括线程参数,根据区块信息和硬件参数,进行nonce遍历哈希计算,以确定nonce遍历哈希计算时长,包括:根据区块信息,对区块链共识算法生成的数据集进行k轮nonce遍历哈希计算,得到第一遍历时长,其中,k为大于或者等于1的整数;以及通过将线程参数除第一遍历时长,得到nonce遍历哈希计算时长。
12.在一些可能的实施方式中,区块信息包括区块链共识算法中的难度目标值,根据区块信息,进行验证哈希计算,以确定验证时长,包括:对nonce进行第四哈希计算,得到第五哈希计算时长和哈希结果,哈希结果对应于第四哈希计算;将难度目标值与哈希结果进行比较验证,得到比较验证时长;以及根据第五哈希计算时长和比较验证时长,确定验证时长。
13.在一些可能的实施方式中,根据第一计算时长、nonce遍历哈希计算时长和验证时长,确定第一共识装置对区块链共识算法的计算时长,包括:将根据第一计算时长、nonce遍历哈希计算时长和验证时长相加,得到第一共识装置对区块链共识算法的计算时长。
14.在一些可能的实施方式中,区块信息包括出块平均时长,硬件参数包括第一共识装置的内存值,根据计算内存值和计算时长,对第一共识装置的计算性能进行评估,包括:比较计算内存值与第一共识装置的内存值;比较出块平均时长和计算时长;以及响应于计算内存值大于第一共识装置的内存值,且计算时长小于出块平均时长,确定第一共识装置的硬件参数满足对区块链共识算法的计算需求,并将第一共识装置的硬件参数作为期望硬件配置参数输出。
15.在一些可能的实施方式中,将第一共识装置的硬件参数作为期望硬件配置参数输出之后,方法还包括:获取第二共识装置的硬件参数;将期望硬件配置参数除第二共识装置的硬件参数,以得到参数倍数;以及根据参数倍数,确定第二共识装置对区块链共识算法的计算时长。
16.在一些可能的实施方式中,方法还包括:根据第二共识装置的硬件参数和第二共识装置对区块链共识算法的计算时长,对第二共识装置的计算性能进行评估。
17.第二方面,本公开提供一种共识装置,该装置可以为计算机中的芯片或者片上系统,还可以为计算机中用于实现第一方面及其任一种可能的实施方式方法的功能模块。该装置可以实现第一方面及其任一种可能的实施方式计算机所执行的功能,功能可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个上述功能相应的模块。该装置包括:获取模块,用于获取区块链的区块信息和第一共识装置的硬件参数;第一确定模块,用于根据
区块信息,确定第一共识装置的计算内存值,计算内存值为区块链共识算法占用的刚性内存值;第二确定模块,用于根据区块信息和硬件参数,确定第一共识装置对区块链共识算法的计算时长;评估模块,用于根据计算内存值和计算时长,对第一共识装置的计算性能进行评估。
18.第三方面,本公开提供一种终端,包括:用于存储处理器可执行指令的存储器;处理器;其中,处理器被配置为:用于执行可执行指令时,以实现如第一方面及其任一可能的实施方式的方法。
19.第四方面,本公开提供一种计算机可读存储介质,可读存储介质存储有可执行程序,其中,可执行程序被共识装置执行时能够实现如第一方面及其任一种可能的实施方式的方法。
20.本公开提供的技术方案可以包括以下有益效果:
21.在本公开中,通过获取区块链的区块信息和第一共识装置的硬件参数,根据区块信息,确第一共识装置的计算内存值,计算内存值为区块链共识算法占用的刚性内存值,根据区块信息和硬件参数,确定第一共识装置对区块链共识算法的计算时长,根据计算内存值和计算时长,对第一共识装置的计算性能进行评估,如此,通过对区块链共识算法的计算性能的量化,实现对区块链共识装置的计算性能的评估。进一步地,由于仅通过计算内存值以及计算时长便能够对区块链共识算法的计算性能进行评估,大大提高了评估效率。
22.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
23.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
24.图1为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第一种实施例流程示意图;
25.图2为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第二种实施流程示意图;
26.图3为本公开实施例中的内存增长模型的示意图;
27.图4为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第三种实施流程示意图;
28.图5为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第四种实施流程示意图;
29.图6为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第五种实施流程示意图;
30.图7为本公开实施例中的多线程加速处理的实施流程示意图;
31.图8为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第六种实施流程示意图;
32.图9为本公开实施例中的共识装置的一种结构示意图;
33.图10为本公开实施例中的一种终端的结构示意图。
具体实施方式
34.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置的例子。
35.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
36.为了说明本公开所述的技术方案,下面通过具体实施例来进行说明。
37.基于刚性内存的区块链共识协议算法计算性能取决于哈希计算过程中的内存读取数据的时间和读取数据的次数,基本与处理器平台无关,只与计算平台内存大小、内存带宽等参数相关,因此无法通过大规模部署计算设备而实现计算效率的线性增长。在部署计算设备之前进行刚性内存的区块链共识协议计算性能评估,对提高整个硬件系统的算力和计算效率尤为重要,不仅可以节约成本,提高硬件使用效率,而且还可以提升整个区块链局域网的可用性。
38.传统评估基于主要是整个协议在预先配置好的硬件平台上进行全周期计算评估,评估方法依靠硬件平台,导致效率较低,而且只能得到宏观数据,无法精细量化;同时无法实现在节约成本基础上快速完成计算性能评估和指导后期硬件设备配置。
39.为了解决上述问题,本公开实施例提供一种基于刚性内存的区块链共识算法的性能评估方法,以解决对区块链共识装置的计算性能评估困难的问题。
40.需要说明的是,本公开实施例中提及的共识装置可以为区块链中的共识节点,共识节点可以运行有共识算法。在实际应用中,共识算法的分类方式有很多,比如在性能层面:从数据一致性的角度将共识算法分为强一致性共识算法、弱一致性(最终一致性)共识算法;从拜占庭容错的角度将共识算法分为拜占庭容错共识算法、非拜占庭容错共识算法。在应用层面:可以将共识算法分为适用于公链、联盟链、私链的共识算法。从共识过程出发,按照主节点的产生方式将共识算法分为竞争类、选举类、随机类以及其他类型。
41.图1为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第一种实施例流程示意图,参见图1所示,该方法可以包括:
42.s101,获取区块链的区块信息和第一共识装置的硬件参数。
43.可以理解的,第一共识装置在评估计算区块链共识协议所占用的数据集的计算性能时,先获取当前计算的区块链的区块信息和第一共识装置的硬件参数。
44.需要说明的是,区块链的区块信息可以包括:区块高度信息和区块的nonce值、通过区块链共识协议获取的内存增长模型、通过区块链共识协议获取的当前区块用到的哈希计算的哈希函数、通过区块链共识协议获取的哈希计算结果字节数、通过区块链共识协议获取的区块链的头部数据、区块链共识算法中的难度目标值以及通过区块链共识协议获取的出块平均时长等。第一共识装置的硬件参数可以包括:第一共识装置正常运作时的内存使用效率(内存使用效率一般为70%~90%,本公开实施例对此不作限定)、第一共识装置
的硬件处理器可支持的最大线程数、第一共识装置的内存值(也可以理解为内存大小)。
45.在一些可能的实施方式中,第一共识装置可以根据区块信息中的区块高度信息计算出当前区块高度所处的纪元。
46.可以理解的,在区块链中,固定数量的区块高度组成一个纪元,其中,纪元为定义区块链中特定事件发生的时间纪元,在区块当前高度、区块初始高度以及固定数量已知时,第一共识装置可以计算出当前区块高度所处的纪元,计算公式(1)如下:
[0047][0048]
式中,epoch为当前区块高度所处的纪元,height为当前的区块高度,h0为区块的初始高度,l为固定数量值,固定数量l的区块高度组成一个纪元。
[0049]
s102,根据区块信息,确定第一共识装置的计算内存值。
[0050]
其中,计算内存值为区块链共识算法占用的刚性内存值,也可以说,计算内存值是计算区块链共识协议中的数据集时,要占用的内存大小。
[0051]
可以理解的,第一共识装置可以获取到当前区块的区块信息后,可以进一步确定计算区块链共识算法生成的数据集所需要的计算内存值。
[0052]
在一些可能的实施方式中,上述s102可以包括s201至s203的实施流程,图2为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第二种实施流程示意图,参见图2所示,s102可以包括:
[0053]
s201,根据区块信息,确定区块链共识算法的内存增长次数。
[0054]
可以理解的,从初始区块高度h0开始,每经历一定数量(记为h
l
)的区块或者纪元,区块链共识算法生成的占用刚性内存的数据集的数据量就会增加。根据区块信息中的区块链共识协议中的内存增长模型、区块高度等信息,可以确定区块链共识算法生成的数据集的内存增长次数。
[0055]
需要说明的是,内存增长模型一般为线性增长模型或指数增长模型。图3为本公开实施例中的内存增长模型的示意图,参见图3所示,线性增长模型中,区块高度和内存大小为线性关系,内存大小是线性增长的;而指数增长模型中,随着区块高度的增加,内存的大小开始呈现指数增长趋势。
[0056]
在一实施例中,区块链共识协议的内存增长模型为线性增长时,计算内存增长次数的公式(2)如下:
[0057][0058]
式中,r为内存增长次数,height为当前的区块高度,h0为区块的初始高度,h
l
为固定数量值,每经历h
l
个区块或者纪元,区块链共识协议中占用刚性内存的数据集的数据量就会增加。
[0059]
在另一实施例中,区块链共识协议的内存增长模型为指数增长时,计算内存增长次数的公式(3)如下:
[0060]
[0061]
式中,r为内存增长次数,epoch为当前区块高度所处的纪元,l为固定数量值,固定数量l的区块高度组成一个纪元,h
l
为固定数量值,每经历h
l
个区块或者纪元,区块链共识协议中占用刚性内存的数据集的数据量就会增加。
[0062]
s202,根据内存增长次数,确定区块链共识算法占用的刚性内存值。
[0063]
可以理解的,第一共识装置可以根据s201中获取的内存增长次数,可以进一步确定计算区块链共识算法所占用的刚性内存的大小。
[0064]
在一实施例中,区块链共识协议的内存增长模型为线性增长时,每经过固定数量的区块高度,内存增长的数量为d,那么,确定区块链共识算法占用的刚性内存值的公式(4)如下:
[0065]
n=n0+r
×dꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0066]
式中,n为区块链共识算法占用的刚性内存值,n0为区块链共识算法占用的刚性内存的初始值,r为内存增长次数,d为每经过固定数量的区块高度,内存增长的数量。
[0067]
在另一实施例中,区块链共识协议的内存增长模型为指数增长时,每经过固定数量的区块高度,增长百分比为q的内存,那么,确定区块链共识算法占用的刚性内存值的公式(5)如下:
[0068]
n=n0×
(1+q)rꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0069]
式中,n为区块链共识算法占用的刚性内存值,n0为区块链共识算法占用的刚性内存的初始值,r为内存增长次数,q为内存增长百分比。
[0070]
s203,根据刚性内存值与硬件参数,确定第一共识装置的计算内存值。
[0071]
可以理解的,第一共识装置可以根据s202中获得的刚性内存值以及硬件参数中的内存使用效率,可以确定第一共识装置计算区块链共识算法生成的数据集时,所用到的计算内存值。
[0072]
在一些可能的实施方式中,确定第一共识装置的计算内存值的计算公式(6)如下:
[0073]nl
=n/η
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0074]
式中,n
l
为第一共识装置的计算内存值,n为区块链共识算法占用的刚性内存值,η为第一共识装置的内存使用效率
[0075]
s103,根据区块信息和硬件参数,确定第一共识装置对区块链共识算法的计算时长。
[0076]
可以理解的,第一共识装置可以根据获取的区块信息和硬件参数,可以确定计算区块链共识算法生成的数据集时,所用的计算时长。
[0077]
在一些可能的实施方式中,上述s103可以包括s401至s404的实施流程,图4为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第三种实施流程示意图,参见图4所示,s103可以包括:
[0078]
s401,根据区块信息和硬件参数,进行哈希计算,以确定对区块链共识算法生成的数据集的第一计算时长。
[0079]
需要说明的是,在s401中,用到的区块信息包括:根据区块链共识协议获取的当前区块用到的哈希计算、一次组合哈希计算结果字节数;在s401中,用到的硬件参数包括:硬件处理器可支持的最大线程数;然后,根据上述区块信息和硬件参数,确定计算占用刚性内存的数据集的计算时长(即第一计算时长)。
[0080]
在一些可能的实施方式中,上述s401可以包括s501至s504,图5为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第四种实施流程示意图,参见图5所示,s401可以包括:
[0081]
s501,根据区块信息,进行第一哈希计算,以得到种子哈希值与第一哈希计算时长。
[0082]
需要说明的是,占用刚性内存的数据集是经过多轮组合哈希计算得到的,其中,组合哈希计算是指采用多个不同的哈希函数逐步计算,从而得到最终哈希结果的组合运算。
[0083]
可以理解的,第一共识装置可以根据区块信息中的哈希计算结果字节数,计算出数据集中的数据个数,再通过对区块信息中的当前区块链的头部数据(header)和nonce进行哈希计算(即第一哈希计算),得到一个种子哈希值和该计算步骤的计算时长(即第一计算时长)。
[0084]
示例性的,对区块链的header和nonce进行哈希计算(即第一哈希计算)可以得到一个种子哈希值,hash1的计算时长记为ts(即第一计算时长)。
[0085]
s502,根据种子哈希值,进行第二哈希计算,以得到第二哈希计算时长。
[0086]
在一些可能的实施方式中,在数据集中,一次组合哈希计算结果字节数已知,那么,数据集中的数据个数可以通过公式(7)计算得到:
[0087][0088]
式中,m为数据集中的数据个数,n为区块链共识算法占用的刚性内存值,node为一次组合哈希计算结果字节数。
[0089]
进一步地,数据集的数据个数为m,也就是说,数据集中的数据是由m个哈希值组成的,数据集可以表示为:dagset={hash(m0)hash(m1)

hash(mi)

hash(mm)}。
[0090]
在一些可能的实施方式中,第一共识装置得到种子哈希值后,可以对种子哈希值进行多轮组合哈希计算(即第二哈希计算)得到缓存和每一轮的组合哈希计算的计算时长,将每一轮的组合哈希计算的计算时长相加可以得到第二哈希计算时长。
[0091]
示例性的,假设对种子哈希值进行了m轮组合哈希计算,通过这m轮组合哈希计算可以得到一个缓存(cache)和每一轮的组合哈希计算的计算时长,每一轮的组合哈希计算的计算时长记为tmi,那么这m轮的组合哈希计算的计算时长(记为tm)的表达式为
[0092]
s503,根据区块信息与硬件参数,进行第三哈希计算,以得到第三哈希计算时长。
[0093]
可以理解的,第一共识装置可以根据区块信息和硬件参数,进行多轮组合哈希计算(即第三哈希计算),可以得到该多轮组合哈希计算的第三哈希计算时长。
[0094]
在一些可能的实施方式中,上述s503可以包括s601至s602的实施流程,图6为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第五种实施流程示意图,参见图6所示,s503可以包括:
[0095]
s601:根据区块信息,进行第三哈希计算,以得到第四哈希计算时长。
[0096]
可以理解的,第一共识装置可以根据区块信息进行多轮组合哈希计算(即第三哈
希计算),得到该多轮组合哈希计算的计算时长(即第四哈希计算时长)。
[0097]
在一些可能的实施方式中,第一共识装置可以根据区块信息中的区块高度信息对数据集中消耗较大内存空间的数据进行多轮组合哈希计算,得到该多轮组合哈希计算的计算时长。
[0098]
示例性的,假设第一共识装置对数据集中消耗较大内存空间的数据进行r轮组合哈希计算,每一轮的计算时长为trj,那么,r轮组合哈希计算的计算时长(即第四哈希计算时长,记为tr)的表达式为
[0099]
s602:将线程参数除第四哈希计算时长,以得到第三哈希计算时长。
[0100]
需要说明的是,在第一共识装置对数据集中消耗较大内存空间的数据进行第三哈希计算时,得到的第四哈希计算时长与数据集占用内存的大小、数据集的更新频率、内存读取数据的次数和内存带宽相关联。可以结合第一共识装置的硬件处理器的特性(即硬件参数),进行多线程加速处理,从而提高第三哈希计算的计算效率,并缩短计算时长,提高第一共识装置的系统算力。
[0101]
在一些可能的实施方式中,获取硬件参数中的第一共识装置的硬件处理器可支持的最大线程数,对数据集中消耗较大内存空间的数据进行分批处理。
[0102]
在一实施例中,假设第一共识装置的硬件处理器可支持的最大线程数为threads,分批的总数为batch,第三哈希计算的计算结果的字节大小为hashbytes,那么,分批的总数可以通过以下公式(8)计算得到:
[0103][0104]
式中,n为区块链共识算法占用的刚性内存值,threads为第一共识装置的硬件处理器可支持的最大线程数,hashbytes为第三哈希计算的计算结果的字节大小。
[0105]
在另一实施例中,通过公式(8)计算得到的分批的总数不是整数,也就是说,threads
×
hashbytes不能整除n,此时,计算结果只保留整数部分,批数加1,意味着单独起线程处理尾部剩余部分,公式(9)如下:
[0106][0107]
式中,n为区块链共识算法占用的刚性内存值,threads为第一共识装置的硬件处理器可支持的最大线程数,hashbytes为第三哈希计算的计算结果的字节大小。
[0108]
在一些可能的实施方式中,第一共识装置计算出上述多线程加速处理的批数后,可以进一步计算出第三哈希计算时长,计算公式(10)如下:
[0109][0110]
式中,td为第三哈希计算时长,tr为第四哈希计算时长,threads为第一共识装置的硬件处理器可支持的最大线程数。
[0111]
需要说明的是,图7为本公开实施例中的多线程加速处理的实施流程示意图,参见图7所示,多线程加速处理在分批处理数据之后,会将这多个批次的处理结果按照顺序拼接
在一起,形成最终的处理结果。
[0112]
s504,根据第一哈希计算时长、第二哈希计算时长和第三哈希计算时长,确定第一计算时长。
[0113]
可以理解的,第一共识装置执行s501中s503后,可以得到第一哈希计算时长、第二哈希计算时长和第三哈希计算时长,将第一哈希计算时长、第二哈希计算时长和第三哈希计算时长相加可以得到对整个数据集的计算时长(即第一计算时长)。
[0114]
示例性的,计算第一计算时长的表达式(11)如下:
[0115]
t
dag
=ts+tm+tdꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(11)
[0116]
式中,t
dag
为第一计算时长,ts为第一哈希计算时长,tm为第二哈希计算时长,td为第三哈希计算时长。
[0117]
s402,根据区块信息和硬件参数,进行nonce遍历哈希计算,以确定nonce遍历哈希计算时长。
[0118]
可以理解的,第一共识装置可以根据通过区块链共识协议获取区块信息中的header和nonce进行nonce遍历哈希计算,再结合硬件参数中的第一共识装置的硬件处理器可支持的最大线程数,可以计算出在多线程加速处理下的nonce遍历哈希计算时长。
[0119]
在一些可能的实施方式中,上述s302可以包括:第一共识装置根据区块信息,对区块链共识算法生成的数据集进行k轮nonce遍历哈希计算,得到第一遍历时长,其中,k为大于或者等于1的正整数;通过将线程参数除第一遍历时长,得到nonce遍历哈希计算时长。
[0120]
需要说明的是,nonce遍历哈希计算是指对区块链共识协议中的nonce信息,逐个遍历进行多轮组合哈希计算,从nonce
start
遍历至nonce
end
。每一次遍历的时长记为t
noncei
,其中,i∈[nonce
start
,nonce
end
]。
[0121]
示例性的,第一共识装置可以通过区块链共识协议获取区块信息中的header和nonce,再对header和nonce进行哈希计算,得到一个初始值(记为mixhash0),根据mixhash0生成索引值(记为indexk),再根据indexk访问数据集中的数据,并进行k轮组合哈希计算,每一轮组合哈希计算都会生成一个索引值,根据该索引值随机访问数据集中的数据,可以得到每一轮组合哈希计算的时长(记为t
ki
),那么,k轮组合哈希计算的时长的表达式就为此时,对nonce信息,逐个遍历进行k轮组合哈希计算(即k轮nonce遍历哈希计算),从nonce
start
遍历至nonce
end
,得到第一遍历时长,计算第一遍历时长的公式(12)如下:
[0122][0123]
式中,t
nonce
为第一遍历时长,t
ki
为每一轮组合哈希计算的时长,k代表进行组合哈希计算的次数(即进行了k轮组合哈希计算),t
noncei
为每一次遍历的时长,nonce
start
为遍历过程的初始nonce,nonce
end
为遍历过程的最后一个nonce。
[0124]
进一步地,根据上述公式(12)得到第一遍历时长,由于在上述nonce遍历哈希计算过程中可以采用多线程加速处理,那么,此时根据第一共识装置的硬件处理器可支持的最大线程数,可以计算出在多线程加速处理的条件下,nonce遍历哈希计算过程所用的时间(即nonce遍历哈希计算时长),所用到的公式(13)如下:
[0125][0126]
式中,t'
nonce
为多线程加速处理条件下的nonce遍历哈希计算过程所用的时间,threads为第一共识装置的硬件处理器可支持的最大线程数,t
nonce
为第一遍历时长,t
ki
为每一轮组合哈希计算的时长,k代表进行组合哈希计算的次数(即进行了k轮组合哈希计算),t
noncei
为每一次遍历的时长,nonce
start
为遍历过程的初始nonce,nonce
end
为遍历过程的最后一个nonce。
[0127]
需要说明的是,第一共识装置在执行s402的过程中,即对区块信息中的header和nonce进行nonce遍历哈希计算的过程中,需要随机访问数据集中的数据,筛选出符合预设规则的nonce信息。在执行s403的过程中,会用到上述nonce信息。
[0128]
s403,根据区块信息,进行验证哈希计算,以确定验证时长。
[0129]
在一些可能的实施方式中,上述s403包括s801至s803的实施流程,图8为本公开实施例中的基于刚性内存的区块链共识算法的性能评估方法的第六种实施流程示意图,参见图8所示,s403可以包括:
[0130]
s801,对nonce进行第四哈希计算,得到第五哈希计算时长和哈希结果,哈希结果对应于第四哈希计算。
[0131]
需要说明的是,第一共识装置在执行上述s402的过程中,从nonce
start
遍历到nonce
end
的过程中,每一次的多轮组合哈希计算都会生成一个哈希计算结果(记为mixhash)。
[0132]
可以理解的,第一共识装置可以通过执行s402,得到符合预设规则的nonce信息和多个mixhash,对上述nonce信息和多个mixhash进行多轮组合哈希计算,得到第五哈希计算时长和对应于此次多轮组合哈希计算的哈希结果(记为hasheresult)。
[0133]
s802,将难度目标值与哈希结果进行比较验证,得到比较验证时长。
[0134]
可以理解的,第一共识装置将难度目标值与s801中的哈希结果进行比较,当哈希结果小于难度目标值时,符合计算要求,存储s801中的nonce并提交;当哈希结果大于难度目标值时,丢弃此次计算结果,对下一个nonce的哈希结果进行比较,直至哈希结果小于难度目标值;逐个进行比较,直至最后一个nonce的哈希结果,比较验证的过程结束,这个比较验证过程的时长为比较验证时长。
[0135]
s803,根据第五哈希计算时长和比较验证时长,确定验证时长。
[0136]
可以理解的,第一共识装置可以在执行s801和s802之后,得到第五哈希计算时长和比较验证时长,将第五哈希计算时长和比较验证时长相加,得到验证时长。
[0137]
示例性的,第一共识装置将s402中得到的h个符合预设规则的nonce分别和mixhash进行多轮组合哈希计算,得到的哈希结果记为hasheresult(相应的,hasheresult的数量也为h个),计算时长为t
result
(即第五哈希计算时长);获取难度目标值(记为targetdiff),将hasheresult和targetdiff进行比较验证,如果hasheresult小于targetdiff,符合计算要求,将该hasheresult对应的nonce存储并提交,并进行选取下一个hasheresult进行比较验证;如果hasheresult大于targetdiff,则丢弃该hasheresult,继续选取下一个hasheresult进行比较验证;直至将h个hasheresult都进行了比较验证,对这
h个hasheresult的比较验证过程的时长为比较验证时长,记为t
cmp
;将t
result
和t
cmp
相加得到验证时长,验证时长可以记为t
prov

[0138]
s404,根据第一计算时长、nonce遍历哈希计算时长和验证时长,确定第一共识装置对区块链共识算法的计算时长。
[0139]
在一些可能的实施方式中,s404可以包括:第一共识装置将第一计算时长、nonce遍历哈希计算时长和验证时长相加,得到第一共识装置对区块链共识算法的计算时长。
[0140]
示例性的,第一共识装置对区块链共识算法生成的数据集的计算时长的计算公式(14)如下:
[0141]
t=t
dag
+t'
nonce
+t
prov
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(14)
[0142]
式中,t为第一共识装置对区块链共识算法的计算时长,t
dag
为第一共识装置的第一计算时长,t'
nonce
为第一共识装置在多线程加速计算条件下的nonce遍历哈希计算过程所用的时间,t
prov
为第一共识装置的验证时长。
[0143]
s104,根据计算内存值和计算时长,对第一共识装置的计算性能进行评估。
[0144]
可以理解的,通过s101至s103得到的计算内存值和计算时长,可以对第一共识装置的计算性能进行评估。
[0145]
在一些可能的实施方式中,s104可以包括:第一共识装置比较计算内存值与第一共识装置的内存值;比较出块平均时长和计算时长;以及响应于计算内存值大于第一共识装置的内存值,且计算时长小于出块平均时长,确定第一共识装置的硬件参数满足对区块链共识算法的计算需求,并将第一共识装置的硬件参数作为期望硬件配置参数输出。
[0146]
可以理解的,第一共识装置比较计算内存值与第一共识装置的内存值,并比较出块平均时长与计算时长,响应于计算内存值大于第一共识装置的内存值,且计算时长小于出块平均时长,可以确定第一共识装置的硬件参数满足对区块链共识算法的计算需求;并将第一共识装置的硬件参数作为期望硬件配置参数输出。
[0147]
需要说明的是,期望硬件配置参数可以直接用于评估除第一共识装置以外的其它共识装置(即第二共识装置)的计算性能,如此,不需要再如s101至s104进行一系列的计算,直接将期望硬件配置参数与第二共识装置的硬件参数做比较,就可以确定第二共识装置是否满足对区块链共识算法的计算性能要求,达到节省评估时间的效果,并且操作简便。
[0148]
在一些可能的实施方式中,将第一共识装置的硬件参数作为期望硬件配置参数输出之后,该方法还包括:获取第二共识装置的硬件参数;将期望硬件配置参数除第二共识装置的硬件参数,以得到参数倍数;根据参数倍数,确定第二共识装置对区块链共识算法的计算时长。
[0149]
示例性的,第一共识装置可以获取第二共识装置的中央处理器(central processing unit,cpu)主频、内存带宽、支持的最大线程数(即硬件参数),将上述第二共识装置的cpu主频、内存带宽和支持的最大线程数分别除期望硬件配置参数中的cpu主频、内存带宽和支持的最大线程数,得到参数倍数。假设,第二共识装置的cpu主频为f0,内存带宽为hw0,支持的最大线程数为threads0;期望硬件配置参数中的cpu主频为f,内存带宽为hw,支持的最大线程数为threads。那么,参数倍数的计算公式(15)如下:
[0150][0151]
式中,bf为cpu主频的参数倍数,b
hw
为内存带宽的参数倍数,b
thd
为支持的最大线程数的参数倍数。
[0152]
进一步地,根据上述参数倍数,可以计算出第二共识装置对区块链共识算法的计算时长,该计算时长的公式(16)如下:
[0153]
t
t
=t
dagt
+t'
noncet
+t
provt
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(16)
[0154]
式中,t
t
为第二共识装置对区块链共识算法的计算时长,t
dagt
为第二共识装置的第一计算时长,t'
noncet
为第二共识装置在多线程加速处理条件下的nonce遍历哈希计算过程所用的时间,t
provt
为第二共识装置的验证时长。
[0155]
上述公式(16)中的t
dagt
、t'
noncet
和t
provt
的计算公式(17)如下:
[0156][0157]
式中,ts为第一共识装置的第一哈希计算时长,tm为第一共识装置的第二哈希计算时长,td为第一共识装置的第三哈希计算时长,t
noncei
为第一共识装置每一次遍历的时长,nonce
start
为第一共识装置遍历过程的初始nonce,nonce
end
为第一共识装置遍历过程的最后一个nonce,t
result
为第一共识装置的第五哈希计算时长,t
cmp
为第一共识装置的比较验证时长。
[0158]
在一些可能的实施方式中,第一共识装置确定第二共识装置对区块链共识算法的计算时长之后,可以根据第二共识装置的硬件参数和第二共识装置对区块链共识算法的计算时长,对第二共识装置的计算性能进行评估。
[0159]
可以理解的,第一共识装置根据第二共识装置的硬件参数中的内存值和第二共识装置对区块链共识算法的计算时长,可以对第二共识装置的计算性能进行评估。
[0160]
示例性的,第一共识装置将第二共识装置的内存值与s203中得到的计算内存值进行比较,并比较出块平均时长和上述第二共识装置对区块链共识算法的计算时长;当计算内存值大于第二共识装置的内存值,且第二共识装置对区块链共识算法的计算时长小于出块平均时长时,确定第二共识装置的硬件参数满足对区块链共识算法的计算需求。
[0161]
上述通过与第一共识装置的硬件参数进行类比,实现对第二共识装置的计算性能的评估,简化了对第二共识装置的计算性能评估的方法,使得成本有效降低并缩短对第二共识装置的计算性能的评估时间。
[0162]
需要说明的是,组合哈希计算是指采用多个不同的哈希函数逐步计算得到最终哈希结果的组合运算,本公开实施例中在多处出现的组合哈希计算所用到的哈希函数是不同的,也就是说,在多处出现的组合哈希计算是不同的。上述实施流程中所用到的组合哈希计算的哈希函数可以从区块链共识协议中获取。
[0163]
在本公开实施例中,通过获取区块链的区块信息和第一共识装置的硬件参数,根据区块信息,确定第一共识装置的计算内存值,计算内存值为区块链共识算法占用的刚性内存值,根据区块信息和硬件参数,确定第一共识装置对区块链共识算法的计算时长,根据计算内存值和计算时长,对第一共识装置的计算性能进行评估,如此,通过对区块链共识算法的计算性能的量化,实现对区块链共识装置的计算性能的评估。进一步地,由于仅通过计算内存值以及计算时长便能够对区块链共识算法的计算性能进行评估,大大提高了评估效率。
[0164]
基于相同的发明构思,本公开实施例还提供一种共识装置,该装置可以为计算机中的芯片或者片上系统,还可以为计算机中用于实现第一方面及其任一种可能的实施方式方法的功能模块。该装置可以实现第一方面及其任一种可能的实施方式计算机所执行的功能,功能可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个上述功能相应的模块。图9为本公开实施例中共识装置的一种结构示意图,参见图9所示,该装置包括:获取模块901,可以用于获取区块链的区块信息和第一共识装置的硬件参数;第一确定模块902,可以用于根据区块信息,确定第一共识装置的计算内存值,计算内存值为区块链共识算法占用的刚性内存值;第二确定模块903,可以用于根据区块信息和硬件参数,确定第一共识装置对区块链共识算法的计算时长;评估模块904,可以用于根据计算内存值和计算时长,对第一共识装置的计算性能进行评估。
[0165]
在一些可能的实施方式中,第一确定模块902,具体可以用于:根据区块信息,确定区块链共识算法的内存增长次数;根据内存增长次数,确定区块链共识算法占用的刚性内存值;根据刚性内存值与硬件参数,确定第一共识装置的计算内存值。
[0166]
在一些可能的实施方式中,第二确定模块903,具体可以用于:根据区块信息和硬件参数,进行哈希计算,确定对区块链共识算法生成的数据集的第一计算时长;根据区块信息和硬件参数,进行随机数值nonce遍历哈希计算,确定nonce遍历哈希计算时长;根据区块信息,进行验证哈希计算,确定验证时长;根据第一计算时长、nonce遍历哈希计算时长和验证时长,确定第一共识装置对区块链共识算法的计算时长。
[0167]
在一些可能的实施方式中,第二确定模块903,具体可以用于:根据区块信息,进行第一哈希计算,以得到种子哈希值与第一哈希计算时长;根据种子哈希值,进行第二哈希计算,以得到第二哈希计算时长;根据区块信息与硬件参数,进行第三哈希计算,以得到第三哈希计算时长;根据第一哈希计算时长、第二哈希计算时长和第三哈希计算时长,确定第一计算时长。
[0168]
在一些可能的实施方式中,硬件参数包括线程参数,第二确定模块903,具体可以用于:根据区块信息,进行第三哈希计算,得到第四哈希计算时长;将线程参数除第四哈希计算时长,以得到第三哈希计算时长。
[0169]
在一些可能的实施方式中,第二确定模块903,具体可以用于:通过将第一哈希计算时长、第二哈希计算时长和第三哈希计算时长相加,得到第一计算时长。
[0170]
在一些可能的实施方式中,硬件参数包括线程参数,第二确定模块903,具体可以用于:根据区块信息,对区块链共识算法生成的数据集进行k轮nonce遍历哈希计算,得到第一遍历时长,其中,k为大于或者等于1的正整数;通过将线程参数除第一遍历时长,得到nonce遍历哈希计算时长。
[0171]
在一些可能的实施方式中,区块信息包括区块链共识算法中的难度目标值,第二确定模块903,具体可以用于:对nonce进行第四哈希计算,得到第五哈希计算时长和哈希结果,哈希结果对应于第四哈希计算;将难度目标值与哈希结果进行比较验证,得到比较验证时长;根据第五哈希计算时长和比较验证时长,确定验证时长。
[0172]
在一些可能的实施方式中,第二确定模块903,具体可以用于:将第一计算时长、nonce遍历哈希计算时长和验证时长相加,得到第一共识装置对区块链共识算法的计算时长。
[0173]
在一些可能的实施方式中,区块信息包括出块平均时长,硬件参数包括第一共识装置的内存值,评估模块904,具体可以用于:比较计算内存值与第一共识装置的内存值;比较出块平均时长和计算时长;响应于计算内存值大于第一共识装置的内存值,且计算时长小于出块平均时长,确定第一共识装置的硬件参数满足对区块链共识算法的计算需求,并将第一共识装置的硬件参数作为期望硬件配置参数输出。
[0174]
在一些可能的实施方式中,获取模块901,还可以用于:获取第二共识装置的硬件参数;确定模块,还用于:将期望硬件配置参数除第二共识装置的硬件参数,得到参数倍数;根据参数倍数,确定第二共识装置对区块链共识算法的计算时长。
[0175]
在一些可能的实施方式中,评估模块904,还可以用于:根据第二共识装置的硬件参数和第二共识装置对区块链共识算法的计算时长,对第二共识装置的计算性能进行评估。
[0176]
需要说明的是,上述获取模块901、第一确定模块902、第二确定模块903和评估模块904的具体实现过程可参考图1至图8实施例的详细描述,为了说明书的简洁,这里不再赘述。
[0177]
本公开实施例中提到的获取模块901、第一确定模块902、第二确定模块903和评估模块904可以为一个或者多个处理器。
[0178]
基于相同的发明构思,本公开实施例提供一种终端,该终端可以应用上述一个或者多个实施例中所述的数据传输的装置。图10为本公开实施例中的一种终端的结构示意图,参见图10所示,终端1000,可以采用通用的计算机硬件,包括处理器1001、存储器1002。
[0179]
在一些可能的实施方式中,至少一个处理器1001可以构成具有对一个或多个输入执行逻辑运算的电路的任何物理设备。例如,至少一个处理器可以包括一个或多个集成电路(integrated circuit,ic),包括专用集成电路(application specific integrated circuit,asic)、微芯片、微控制器、微处理器、中央处理单元(central processing unit,cpu)的全部或部分、图形处理单元(graphics processing unit,gpu)、数字信号处理器(digital signal process,dsp)、现场可编程门阵列(field programmable gate array,fpga)或者适于执行指令或执行逻辑运算的其它电路。由至少一个处理器执行的指令可以例如被预加载到与控制器集成的或嵌入在控制器中的存储器中,或者可以存储在分离的存储器中。存储器可以包括随机存取存储器(random access memory,ram)、只读存储器
(read-only memory,rom)、硬盘、光盘、磁介质、闪存,其它永久、固定或易失性存储器,或者能够存储指令的任何其它机制。在一些实施例中,至少一个处理器可以包括多于一个处理器。每个处理器可以具有相似的结构,或者处理器可以具有彼此电连接或断开的不同构造。例如,处理器可以是分离的电路或集成在单个电路中。当使用多于一个处理器时,处理器可以被配置为独立地或协作地操作。处理器可以以电、磁、光学、声学、机械或通过允许它们交互的其它手段来耦合。根据本公开的一个实施例,本公开还提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行上述标定方法的步骤。存储器1002可以包括以易失性和/或非易失性存储器形式的计算机存储媒体,如只读存储器和/或随机存取存储器。存储器1002可以存储操作系统、应用程序、其他程序模块、可执行代码、程序数据、用户数据等。
[0180]
此外,上述存储器1002中存储有用于实现图9中的获取模块901、第一确定模块902、第二确定模块903和评估模块904的功能的计算机执行指令。图9中的获取模块901、第一确定模块902、第二确定模块903和评估模块904的功能/实现过程均可以通过图10中的处理器1001调用存储器1002中存储的计算机执行指令来实现,具体实现过程和功能参考上述相关实施例。
[0181]
基于相同的发明构思,本公开实施例提供一种终端,包括:存储器,存储有计算机可执行指令;处理器,与存储器相连,用于通过执行计算机可执行指令,并能够实现如上述一个或者多个实施例所述的数据传输的方法。
[0182]
基于相同的发明构思,本公开实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令被处理器执行后,能够实现如上述一个或者多个实施例所述的数据传输的方法。
[0183]
本领域技术人员可以理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
[0184]
以上所述实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的精神和范围,均应包含在本公开的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1