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

基于芯片的工作量证明方法和用于工作量证明的芯片与流程

2021-12-01 01:05:00 来源:中国专利 TAG:


1.本发明涉及区块链技术领域,尤其涉及一种基于芯片的工作量证明方法和用于工作量证明的芯片。


背景技术:

2.equihash是由卢森堡大学的安全、可靠性和信任跨学科中心(snt)开发的一种以内存为导向的工作证明算法。equihash算法的理论依据是一个著名的计算法科学及密码学问题——广义生日悖论问题。采用equihash算法作为工作量证明机制,产生新的区块,equihash算法需要利用blake 2算法产生2百万个200比特的原始数据, blake2算法包括blake2b算法和blake2s算法两种,其中blake2b算法为64位版本,可以生成最高512位的任意长度哈希值;blake2s算法为32位版本,可以生成最高256位的哈希值。下面以blake 2b算法产生2百万个200比特的原始数据为例进行说明。
3.blake 2b算法一次可以产生1个400比特的数据,分为2个200比特的数据,因此blake2b算法需要运行一百万次,才能产生2百万个200比特的原始数据。当equihash算法的输入数据是108字节的区块头和32字节的随机数据(nonce)时,每次blake2b算法计算,在140字节后面需要再拼接一个不同的4字节的计数器数据,并将144字节的数据划分为2部分,第一部分为128字节,包括108字节的区块头和20字节的nonce,第二部分为16字节,包括12字节的nonce和4字节的私有数据,再在第二部分的16字节后面拼接数字0,将第二部分补齐到128字节。blake 2b算法的计算方法,都是先计算第一部分数据,得到第一部分数据的哈希值;再使用第一部分数据的哈希值,计算第二部分数据,从而得到2个200比特的原始数据。对于一组区块头和nonce,blake2b算法计算一百万次,每次第一部分数据不变,计算结果也不变,因此第一部分数据只需要计算一次,而每次第二部分数据会改变,因此第二部分数据需要计算一百万次。
4.目前采用equihash算法进行工作量证明, blake2算法计算一百万次是通过软件实现,这样会造成处理时间较长,导致新区块的生成效率较低。


技术实现要素:

5.本发明提供一种基于芯片的工作量证明方法和用于工作量证明的芯片,通过硬件结构实现了equihash算法数据的全流水产生,可以提高equihash算法的算力,尽快产生2百万个原始数据,从而提高新区块生成的效率。
6.第一方面,本发明提供一种基于芯片的工作量证明方法,所述芯片包括处理模块、第一计算模块和第二计算模块,所述第二计算模块包括串行连接的第一数量的计算子模块,所述方法包括:响应于芯片接收到输入数据,所述处理模块对所述输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,并将所述第一输入数据输入所述第一计算模块,所述第二输入数据输入所述第二计算模块;
响应于接收到所述第一输入数据,所述第一计算模块根据预设算法对所述第一输入数据进行运算,得到具有第二字节数的第一输出数据,并将所述第一输出数据输入所述第二计算模块;响应于接收到所述第一输出数据和所述第二输入数据,所述第二计算模块将所述第一输出数据和所述第二输入数据输入所述串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据;其中,每个所述计算子模块包括第二数量的混合函数计算单元,所述第二数量的混合函数计算单元形成第一预设等级的串行运算,同一等级内的各混合函数计算单元并行运算;所述计算子模块的输入数据经过各等级混合函数计算单元依次进行运算,得到所述计算子模块的输出数据。
7.根据本发明提供的一种基于芯片的工作量证明方法,所述第二计算模块将所述第一输出数据和所述第二输入数据输入所述串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据,包括:所述第二计算模块将64字节的第一输出数据和128字节的第二输入数据输入串行连接的12个计算子模块,经过12个计算子模块依次进行运算,输出50字节的第二输出数据。
8.根据本发明提供的一种基于芯片的工作量证明方法,所述第一预设等级为2级,每个所述计算子模块包括8个混合函数计算单元, 8个混合函数计算单元以4个混合函数计算单元为一级,形成2级的串行运算,同一级内的4个混合函数计算单元并行运算,所述计算子模块的输入数据经过2级混合函数计算单元依次进行运算,得到所述计算子模块的输出数据。
9.根据本发明提供的一种基于芯片的工作量证明方法,所述第一预设等级为8级,每个所述计算子模块包括8个混合函数计算单元, 8个混合函数计算单元以每个混合函数计算单元为一级,形成8级的串行运算,所述计算子模块的输入数据经过8级混合函数计算单元依次进行运算,得到所述计算子模块的输出数据。
10.根据本发明提供的一种基于芯片的工作量证明方法,所述将所述第一输出数据和所述第二输入数据输入所述串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据,包括:对所述第一输出数据与预设常数向量进行运算,得到具有第一字节数的第三输入数据;将所述第三输入数据和所述第二输入数据输入所述串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有第一字节数的第三输出数据;对所述第一输出数据和所述第三输出数据进行运算,得到所述具有目标字节数的第二输出数据。
11.根据本发明提供的一种基于芯片的工作量证明方法,还包括:每个所述混合函数计算单元,根据第二预设等级,选取所述第三输入数据中第三数量的第一目标数据和所述第二输入数据中第四数量的第二目标数据,进行运算;根据运算结果更新所述第三输入数据中的所述第一目标数据;其中,所述第一目标数据和所述第二目标数据具有第三字节数。
12.根据本发明提供的一种基于芯片的工作量证明方法,所述每个所述混合函数计算
单元,根据第二预设等级,选取所述第三输入数据中第三数量的第一目标数据和所述第二输入数据中第四数量的第二目标数据,进行运算,包括:每个所述混合函数计算单元,根据2级运算,选取所述第三输入数据中4个64比特的第一目标数据和所述第二输入数据中2个64比特的第二目标数据,进行运算;其中,第三数量为4个64比特,第四数量为2个64比特;所述根据运算结果更新所述第三输入数据中的所述第一目标数据,包括:根据运算结果更新所述第三输入数据中4个64比特的第一目标数据。
13.根据本发明提供的一种基于芯片的工作量证明方法,所述对所述输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,包括:根据所述第一字节数将所述输入数据划分为所述第一输入数据和第四输入数据;在所述第四输入数据的后面,根据计数器数据对所述第四输入数据进行字节补齐,得到第五输入数据;在所述第五输入数据的后面,根据零值对所述第五输入数据进行字节补齐,得到所述第二输入数据。
14.第二方面,本发明还提供一种用于工作量证明的芯片,包括:处理模块,用于响应于芯片接收到输入数据,对所述输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,并将所述第一输入数据输入第一计算模块,所述第二输入数据输入第二计算模块;第一计算模块,用于响应于接收到所述第一输入数据,根据预设算法对所述第一输入数据进行运算,得到具有第二字节数的第一输出数据,并将所述第一输出数据输入所述第二计算模块;第二计算模块,用于响应于接收到所述第一输出数据和所述第二输入数据,将所述第一输出数据和所述第二输入数据输入所述串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据;其中,每个所述计算子模块包括第二数量的混合函数计算单元,所述第二数量的混合函数计算单元形成第一预设等级的串行运算,同一等级内的各混合函数计算单元并行运算;所述计算子模块的输入数据经过各等级混合函数计算单元依次进行运算,得到所述计算子模块的输出数据。
15.第三方面,本发明还提供一种区块链系统的区块生成方法,所述区块链系统采用如上述任一种所述基于芯片的工作量证明方法进行工作证明,生成新区块。
16.本发明提供的基于芯片的工作量证明方法和用于工作量证明的芯片,利用第一数量的计算子模块串行连接,计算子模块中的混合函数计算单元以第一预设等级串行连接,通过硬件结构实现了equihash算法数据的全流水产生,可以提高equihash算法的算力,尽快产生2百万个原始数据,可以达到每个时钟周期产生2个200比特的原始数据,从而提高新区块生成的效率。
附图说明
17.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一
些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1是本发明提供的基于芯片的工作量证明方法的流程示意图;图2是本发明提供的串行连接的计算子模块进行运算的流程示意图;图3是本发明提供的计算子模块中混合函数计算单元进行运算的流程示意图;图4是本发明提供的对输入数据进行处理的流程示意图;图5是本发明提供的基于芯片的工作量证明方法一种应用场景的流程示意图;图6是本发明通过12个计算子模块串行连接生成数据的示意图;图7是本发明每个计算子模块中8个混合函数计算单元g形成2级串行连接的示意图;图8是本发明提供的用于工作量证明的芯片的结构示意图;图9是本发明提供的电子设备的实体结构示意图。
具体实施方式
19.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.下面结合图1

图7描述本发明的基于芯片的工作量证明方法。
21.请参阅图1,图1是本发明提供的基于芯片的工作量证明方法的流程示意图,其中,芯片包括处理模块、第一计算模块和第二计算模块,第二计算模块包括串行连接的第一数量的计算子模块,如图1所示,该基于芯片的工作量证明方法至少包括:101,响应于芯片接收到输入数据,处理模块对输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,并将第一输入数据输入第一计算模块,第二输入数据输入第二计算模块。
22.在本发明实施例中,在采用equihash算法作为工作量证明机制时,equihash算法的输入数据可以包括区块头和nonce等,本发明实施例对equihash算法的输入数据的组成不作限定。
23.在本发明实施例中,在equihash算法利用预设算法产生工作量证明的一定数量的原始数据时,由于需要进行多次计算,可以根据输入数据的特点,将equihash算法的输入数据划分为第一输入数据和第二输入数据两部分,并使这两部分输入数据具有相同的第一字节数。通过使第一输入数据不变,第二输入数据改变,使第一输入数据的计算结果参与到第二输入数据的计算中,可以只对第一输入数据进行一次计算,而对第二输入数据进行多次计算来产生一定数量的原始数据,以简化equihash算法产生原始数据的计算过程。例如预设算法可以为blake 2b算法等,本发明实施例对预设算法的类型和对输入数据划分后得到的两部分输入数据的字节数不作限定。
24.102,响应于接收到第一输入数据,第一计算模块根据预设算法对第一输入数据进行运算,得到具有第二字节数的第一输出数据,并将第一输出数据输入第二计算模块。
25.在本发明实施例中,在将equihash算法的输入数据划分为具有第一字节数的第一
输入数据和第二输入数据后,可以利用预设算法对第一输入数据的字节进行运算,得到具有第二字节数的第一输出数据,使所得到的具有第二字节数的第一输出数据参与到第二输入数据的计算中。例如,预设算法可以为blake 2b算法,第一输入数据可以为128字节,第一输出数据可以为64字节的哈希数据。本发明实施例对根据预设算法对第一输入数据进行运算得到的第一输出数据的字节数不作限定。
26.103,响应于接收到第一输出数据和第二输入数据,第二计算模块将第一输出数据和第二输入数据输入串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据;其中,每个计算子模块包括第二数量的混合函数计算单元,第二数量的混合函数计算单元形成第一预设等级的串行运算,同一等级内的各混合函数计算单元并行运算;计算子模块的输入数据经过各等级混合函数计算单元依次进行运算,得到计算子模块的输出数据。
27.在本发明实施例中,在根据预设算法对第一输入数据进行运算得到具有第二字节数的第一输出数据后,可以通过每个计算子模块对第一输出数据和第二输入数据进行一轮运算,通过将第一数量的计算子模块串行连接形成流水线,对第一输出数据和第二输入数据进行与计算子模块数量相同轮的运算,得到具有目标字节数的第二输出数据。例如,可以通过将12个计算子模块串行连接形成流水线,对第一输出数据和第二输入数据进行12轮的运算,得到50字节的第二输出数据。本发明实施例对第一输出数据和第二输入数据进行运算的串行连接的计算子模块的数量不作限定。
28.在本发明实施例中,每个计算子模块包括第二数量的混合函数计算单元,混合函数计算单元用于对第一输出数据和第二输入数据进行混合,第二数量的混合函数计算单元完成对第一输出数据和第二输入数据的一次混合,其中,每个混合函数计算单元对第一输出数据中一定数量的字节数和第二输入数据中一定数量的字节数进行一次混合,通过每个混合函数计算单元进行混合的第一输出数据的字节数和第二输入数据的字节数可以相同,也可以不同,本发明实施例对此不作限定。在每个计算子模块中,通过将第二数量的混合函数计算单元以一定数量的混合函数计算单元为一级,将各级的混合函数计算单元串行连接,形成具有第一预设等级的流水线,对第一输出数据和第二输入数据进行第一预设等级的运算,其中,在同一等级内的各混合函数计算单元进行并行运算。
29.例如,第一预设等级为2级,每个计算子模块可以包括8个混合函数计算单元;8个混合函数计算单元可以以4个混合函数计算单元为一级,形成2级的串行运算流水线,同一级内的4个混合函数计算单元并行运算;或者,第一预设等级为8级,8个混合函数计算单元可以以每个混合函数计算单元为一级,形成8级的串行运算流水线;又或者,第一预设等级为1级,8个混合函数计算单元可以以8个混合函数计算单元为一级,形成1级的串行运算流水线,也就是8个混合函数计算单元并行运算。本发明实施例对每个计算子模块包括的混合函数计算单元的数量和连接方式不作限定。
30.本发明实施例提供的基于芯片的工作量证明方法,利用第一数量的计算子模块串行连接,计算子模块中的混合函数计算单元以第一预设等级串行连接,通过硬件结构实现了equihash算法数据的全流水产生,可以提高equihash算法的算力,尽快产生2百万个原始数据,可以达到每个时钟周期产生2个200比特的原始数据,从而提高新区块生成的效率。
31.图2是本发明提供的串行连接的计算子模块进行运算的流程示意图,如图2所示,
将第一输出数据和第二输入数据输入串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据,至少包括:201,对第一输出数据与预设常数向量进行运算,得到具有第一字节数的第三输入数据。
32.在本发明实施例中,在将具有第二字节数的第一输出数据输入串行连接的计算子模块之前,可以对第一输出数据与预设常数向量进行运算,得到具有第一字节数的第三输入数据。
33.例如,第一输出数据可以为64字节的哈希数据h,预设常数向量iv可以根据blake2b算法确定,根据64字节的哈希数据与预设常数向量iv进行如下运算,可以得到128字节的第三输入数据v。运算方法如下:v_init[0:7]=h_1st[0:7];v_init[8:11]=iv[0:3];v_init[12]=iv[4]^64’h100;v_init[13]=iv[5];v_init[14]=~iv[6];v_init[15]=iv[7];其中,h_1st为第一输出数据,为512bit,即8个64bit;v为1024bit,即16个64bit;iv为8维的常数向量,每一维为256bit,即4个64bit,^为按bit异或,~为按bit取反。
[0034]
202,将第三输入数据和第二输入数据输入串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有第一字节数的第三输出数据。
[0035]
在本发明实施例中,在根据第一输出数据得到第三输入数据后,可以将第三输入数据和第二输入数据输入串行连接的计算子模块,通过计算子模块中的混合函数计算单元对第三输入数据和第二输入数据进行混合。其中,每个计算子模块通过混合函数计算单元对第二输入数据和输入的第三输入数据进行运算,并根据运算的结果更新输入的第三输入数据,同时输出更新后第三输入数据,将更新后第三输入数据作为下一个计算子模块输入的第三输入数据,通过混合函数计算单元与第二输入数据进行运算,将最后一个计算子模块输出的更新后第三输入数据作为第三输出数据。
[0036]
例如,第二输入数据m和第三输入数据v均为128字节,即16个64bit,将第二输入数据m和第三输入数据v输入12个串行连接的计算子模块进行12轮的运算,每一轮运算输出更新后的第三输入数据v,将更新后第三输入数据v作为下一轮运算输入的第三输入数据v,将最后一轮输出的更新后第三输入数据v作为第三输出数据v。
[0037]
203,对第一输出数据和第三输出数据进行运算,得到具有目标字节数的第二输出数据。
[0038]
在本发明实施例中,在串行连接的计算子模块中最后一个计算子模块输出第三输出数据后,可以对第一输出数据和第三输出数据进行运算,得到具有目标字节数的第二输出数据。
[0039]
例如,第一输出数据可以为64字节的哈希数据h,第三输出数据v可以为128字节,根据64字节的哈希数据h和128字节的第三输出数据v进行如下原酸,可以得到50字节的第二输出数据h_result。运算方法如下:
h_result [0] = h_1st[0] ^ v_out[0] ^ v_out[8];h_result [1] = h_1st[1] ^ v_out[1] ^ v_out[9];h_result [2] = h_1st[2] ^ v_out[2] ^ v_out[10];h_result [3] = h_1st[3] ^ v_out[3] ^ v_out[11];h_result [4] = h_1st[4] ^ v_out[4] ^ v_out[12];h_result [5] = h_1st[5] ^ v_out[5] ^ v_out[13];h_result [6] = h_1st[6] ^ v_out[6] ^ v_out[14];h_result [7] = h_1st[7] ^ v_out[7] ^ v_out[15];blake2b_data[399:0] = h_result[399:0];其中,h_1st为第一输出数据h,v_out为第三输出数据v,h_result为8个64bit,输出400bit的数据,每个400bit的数据可以拆成2个200bit的数据。
[0040]
图3是本发明提供的计算子模块中混合函数计算单元进行运算的流程示意图,如图3所示,至少包括:301,每个混合函数计算单元,根据第二预设等级,选取第三输入数据中第三数量的第一目标数据和第二输入数据中第四数量的第二目标数据,进行运算。
[0041]
302,根据运算结果更新第三输入数据中的第一目标数据;其中,第一目标数据和第二目标数据具有第三字节数。
[0042]
在本发明实施例中,计算子模块中的每个混合函数计算单元可以根据时钟频率的高低和资源消耗量,采用m级流水线的方式实现对输入数据的混合,其中m的取值可以是1级到8级中的任意数值。
[0043]
例如,每个混合函数计算单元g根据2级运算,可以选取第三输入数据v中4个64bit的第一目标数据a、b、c、d和第二输入数据m中2个64bit的第二目标数据x、y,进行运算,并根据运算结果更新第三输入数据v中4个64bit的第一目标数据a、b、c、d,其中,第三数量为4个64比特,第四数量为2个64比特。例如,a、b、c、d分别为0、4、8、12,分别表示v中的第0个、第4个、第8个和第12个64bit的数据,x、y分别表示m中的第0个和第1个64bit的数据。其中,混合函数计算单元g进行运算的原理如下:function g ( v[ 0..15 ], a, b, c, d, x, y )v[a] := (v[a] v[b] x)v[d] := (v[d] ^ v[a] ) >>>r1v[c] := (v[c] v[d] x)v[b] := (v[b] ^ v[c] ) >>>r2v[a] := (v[a] v[b] y)v[d] := (v[d] ^ v[a] ) >>>r3v[c] := (v[c] v[d] x)v[b] := (v[b] ^ v[c] ) >>>r4return v[ 0..15 ]end function.其中,“>>>”为循环右移,将右边移出的bit放在左边的高位,实现对第三输入数据v的更新。
[0044]
图4是本发明提供的对输入数据进行处理的流程示意图,如图4所示,对输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,至少包括:401,根据第一字节数将输入数据划分为第一输入数据和第四输入数据。
[0045]
402,在第四输入数据的后面,根据计数器数据对第四输入数据进行字节补齐,得到第五输入数据。
[0046]
403,在第五输入数据的后面,根据零值对第五输入数据进行字节补齐,得到二输入数据。
[0047]
在本发明实施例中,当equihash算法的输入数据包括区块头和nonce时,通常直接对equihash算法的输入数据进行划分无法得到具有第一字节数的第一输入数据和第二输入数据,此时,可以通过对equihash算法的输入数据进行划分,得到具有第一字节数的第一输入数据,和具有第四字节数的第四输入数据,根据计数器数据和零值,通过对第四输入数据进行字节补齐,得到具有第一字节数的第二输入数据。
[0048]
例如,equihash算法的输入数据可以包括108字节的区块头和32字节的nonce,根据128字节可以将输入数据划分为128字节的第一输入数据和12字节的第四输入数据,根据计数器数据对第四输入数据补齐4字节,得到16字节的第五输入数据;在16字节的第五输入数据后面用零值补齐,得到128字节的第二输入数据。
[0049]
请参阅图5,图5是本发明提供的基于芯片的工作量证明方法一种应用场景的流程示意图,如图5所示,该基于芯片的工作量证明方法至少包括:501,根据128字节将108字节的区块头和32字节的随机数据划分为128字节的第一输入数据和12字节的第四输入数据。
[0050]
502,根据计数器数据对第四输入数据补齐4字节,得到16字节的第五输入数据;在16字节的第五输入数据后面用零值补齐,得到128字节的第二输入数据。
[0051]
503,根据blake 2b算法对128字节的第一输入数据进行运算,得到64字节的第一输出数据。
[0052]
504,对64字节的第一输出数据与预设常数向量进行运算,得到128节数的第三输入数据。
[0053]
505,将128字节的第三输入数据和128字节的第二输入数据输入串行连接的12个计算子模块,经过12个计算子模块依次进行运算,输出128字节的第三输出数据。
[0054]
如图6和图7所示,图6是本发明通过12个计算子模块串行连接生成数据的示意图,图7是本发明每个计算子模块中8个混合函数计算单元g形成2级串行连接的示意图。
[0055]
其中,12个计算子模块分别为g_round1至g_round12,每个计算子模块包括8个混合函数计算单元g_0至g_7,8个混合函数计算单元g以4个混合函数计算单元g_0至g_3、g_4至g_7为一级,形成2级混合函数计算单元g串行连接,其中,位于第一级内的前4个混合函数计算单元g_0至g_3之间的输入和输出数据之间没有相关性,因此前4个混合函数计算单元g_0至g_3可以进行并行运算。位于第二级内的后4个混合函数计算单元g_4至g_7之间的输入和输出数据之间也没有相关性,因此后4个混合函数计算单元g_4至g_7也可以进行并行运算。并且前4个混合函数计算单元g_0至g_3的运算结果,作为后4个混合函数计算单元g_4至g_7的输入,因此前4个混合函数计算单元g_0至g_3和后4个混合函数计算单元g_4至g_7之间形成流水线。
[0056]
每个混合函数计算单元g,根据2级运算,选取第三输入数据v中4个64bit的第一目标数据和第二输入数据m中2个64bit的第二目标数据,进行运算,根据运算结果更新第三输入数据v中4个64bit的第一目标数据。
[0057]
每个计算子模块中2级混合函数计算单元g串行连接进行运算的原理如下:for i = 0 to 11s[0..15] := sigma[i][0..15]v := g( v, 0, 4, 8, 12, m[s[ 0]], m[s[ 1]] )v := g( v, 1, 5, 9, 13, m[s[ 2]], m[s[ 3]] )v := g( v, 2, 6, 10, 14, m[s[ 4]], m[s[ 5]] )v := g( v, 3, 7, 11, 15, m[s[ 6]], m[s[ 7]] )v := g( v, 0, 5, 10, 15, m[s[ 8]], m[s[ 9]] )v := g( v, 1, 6, 11, 12, m[s[10]], m[s[11]] )v := g( v, 2, 7, 8, 13, m[s[12]], m[s[13]] )v := g( v, 3, 4, 9, 14, m[s[14]], m[s[15]] )end for.其中,m的取值根据s确定,s为根据sigma矩阵确定的常量,sigma矩阵为12*16的常数矩阵,每个常数的取值为0~15,sigma中的第10行和第11行分别与第0行和第1行相同。常数矩阵sigma的形式如下:const unit 8_t sigma [12] [16] ={{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},{14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},{11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},{7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},{9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},{2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},{12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},{13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},{6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},{10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0},{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},{14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3}};506,对64字节第一输出数据和128字节的第三输出数据进行运算,得到128字节的第二输出数据。
[0058]
下面对本发明提供的用于工作量证明的芯片进行描述,下文描述的用于工作量证明的芯片与上文描述的基于芯片的工作量证明方法可相互对应参照。
[0059]
请参阅图8,图8是本发明提供的用于工作量证明的芯片的结构示意图,图8所示的用于工作量证明的芯片可用来执行图1的基于芯片的工作量证明方法,如图8所示,该用于工作量证明的芯片800至少包括:
处理模块810,用于响应于芯片接收到输入数据,对输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,并将第一输入数据输入第一计算模块,第二输入数据输入第二计算模块。
[0060]
第一计算模块820,用于响应于接收到第一输入数据,根据预设算法对第一输入数据进行运算,得到具有第二字节数的第一输出数据,并将第一输出数据输入第二计算模块。
[0061]
第二计算模块830,用于响应于接收到第一输出数据和第二输入数据,将第一输出数据和第二输入数据输入串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据。
[0062]
其中,每个计算子模块包括第二数量的混合函数计算单元,第二数量的混合函数计算单元形成第一预设等级的串行运算接,同一等级内的各混合函数计算单元并行运算;计算子模块的输入数据经过各等级混合函数计算单元依次进行运算,得到计算子模块的输出数据。
[0063]
可选地,第二计算模块830,用于将64字节的第一输出数据和128字节的第二输入数据输入串行连接的12个计算子模块,经过12个计算子模块依次进行运算,输出50字节的第二输出数据。
[0064]
可选地,第一预设等级为2级,第二计算模块830中的每个计算子模块包括8个混合函数计算单元,8个混合函数计算单元以4个混合函数计算单元为一级,形成2级的串行运算,同一级内的4个混合函数计算单元并行运算,计算子模块的输入数据经过2级混合函数计算单元依次进行运算,得到计算子模块的输出数据。
[0065]
可选地,第一预设等级为8级,第二计算模块830中的每个计算子模块包括8个混合函数计算单元,8个混合函数计算单元以每个混合函数计算单元为一级,形成8级的串行运算,计算子模块的输入数据经过8级混合函数计算单元依次进行运算,得到计算子模块的输出数据。
[0066]
可选地,第二计算模块830,还包括:预处理模块,用于对第一输出数据与预设常数向量进行运算,得到具有第一字节数的第三输入数据。
[0067]
计算模块,用于将第三输入数据和第二输入数据输入串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有第一字节数的第三输出数据;后处理模块,用于对第一输出数据和第三输出数据进行运算,得到具有目标字节数的第二输出数据。
[0068]
可选地,串行连接的计算子模块中的每个混合函数计算单元,用于根据第二预设等级,选取第三输入数据中第三数量的第一目标数据和第二输入数据中第四数量的第二目标数据,进行运算;以及根据运算结果更新第三输入数据中的所述第一目标数据;其中,第一目标数据和第二目标数据具有第三字节数。
[0069]
可选地,串行连接的计算子模块中的每个混合函数计算单元,用于根据2级运算,选取第三输入数据中4个64比特的第一目标数据和第二输入数据中2个64比特的第二目标数据,进行运算;其中,第三数量为4个64比特,第四数量为2个64比特;以及根据运算结果更新第三输入数据中4个64比特的第一目标数据。
[0070]
可选地,处理模块810,包括:
划分模块,用于根据第一字节数将输入数据划分为第一输入数据和第四输入数据。
[0071]
补齐模块,用于在第四输入数据的后面,根据计数器数据对第四输入数据进行字节补齐,得到第五输入数据;在第五输入数据的后面,根据零值对第五输入数据进行字节补齐,得到第二输入数据。
[0072]
本技术实施例还提供了一种区块链系统中的区块生成方法,区块链系统采用上述任一方法实施例所述基于芯片的工作量证明方法进行工作证明,生成新区块。
[0073]
图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(communications interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行基于芯片的工作量证明方法,其中芯片包括处理模块、第一计算模块和第二计算模块,第二计算模块包括串行连接的第一数量的计算子模块,该方法,包括:响应于芯片接收到输入数据,所述处理模块对所述输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,并将所述第一输入数据输入所述第一计算模块,所述第二输入数据输入所述第二计算模块;响应于接收到所述第一输入数据,所述第一计算模块根据预设算法对所述第一输入数据进行运算,得到具有第二字节数的第一输出数据,并将所述第一输出数据输入所述第二计算模块;响应于接收到所述第一输出数据和所述第二输入数据,所述第二计算模块将所述第一输出数据和所述第二输入数据输入所述串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据;其中,每个所述计算子模块包括第二数量的混合函数计算单元,所述第二数量的混合函数计算单元形成第一预设等级的串行运算,同一等级内的各混合函数计算单元并行运算;所述计算子模块的输入数据经过各等级混合函数计算单元依次进行运算,得到所述计算子模块的输出数据。
[0074]
此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0075]
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的基于芯片的工作量证明方法,其中芯片包括处理模块、第一计算模块和第二计算模块,第二计算模块包括串行连接的第一数量的计算子模块,该方法包括:
响应于芯片接收到输入数据,所述处理模块对所述输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,并将所述第一输入数据输入所述第一计算模块,所述第二输入数据输入所述第二计算模块;响应于接收到所述第一输入数据,所述第一计算模块根据预设算法对所述第一输入数据进行运算,得到具有第二字节数的第一输出数据,并将所述第一输出数据输入所述第二计算模块;响应于接收到所述第一输出数据和所述第二输入数据,所述第二计算模块将所述第一输出数据和所述第二输入数据输入所述串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据;其中,每个所述计算子模块包括第二数量的混合函数计算单元,所述第二数量的混合函数计算单元形成第一预设等级的串行运算,同一等级内的各混合函数计算单元并行运算;所述计算子模块的输入数据经过各等级混合函数计算单元依次进行运算,得到所述计算子模块的输出数据。
[0076]
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的基于芯片的工作量证明方法,其中芯片包括处理模块、第一计算模块和第二计算模块,第二计算模块包括串行连接的第一数量的计算子模块,该方法包括:响应于芯片接收到输入数据,所述处理模块对所述输入数据进行处理,得到具有第一字节数的第一输入数据和第二输入数据,并将所述第一输入数据输入所述第一计算模块,所述第二输入数据输入所述第二计算模块;响应于接收到所述第一输入数据,所述第一计算模块根据预设算法对所述第一输入数据进行运算,得到具有第二字节数的第一输出数据,并将所述第一输出数据输入所述第二计算模块;响应于接收到所述第一输出数据和所述第二输入数据,所述第二计算模块将所述第一输出数据和所述第二输入数据输入所述串行连接的第一数量的计算子模块,经过各计算子模块依次进行运算,输出具有目标字节数的第二输出数据;其中,每个所述计算子模块包括第二数量的混合函数计算单元,所述第二数量的混合函数计算单元形成第一预设等级的串行运算,同一等级内的各混合函数计算单元并行运算;所述计算子模块的输入数据经过各等级混合函数计算单元依次进行运算,得到所述计算子模块的输出数据。
[0077]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0078]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该
计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0079]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献