联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

HASH GAME - Online Skill Game ET 300一种Equihash算法的数据处理方法及装置pdf

发布时间:2025-02-08 20:39:21  点击量:

  HASH GAME - Online Skill Game GET 300

HASH GAME - Online Skill Game GET 300一种Equihash算法的数据处理方法及装置pdf

  本申请公开了一种Equihash算法的数据处理方法及装置,包括:预处理模块,根据Equihash算法的计算轮数从存储器中读出包括对应Equihash算法的计算轮数中的指定计算轮数的数据序号的待处理数据;多个Blake计算模块,至少对预处理模块输出的数据序号进行Blake计算得到计算结果;多个用于进行碰撞计算的碰撞处理模块;以及存储处理模块,对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应剩余计算轮数存储碰撞计算得到的中间数据。本申请通过将部分待处理数据转

  (19)中华人民共和国国家知识产权局 (12)发明专利 (10)授权公告号 CN 113721888 B (45)授权公告日 2022.01.25 (21)申请号 5.X G06F 3/06 (2006.01) (22)申请日 2021.11.01 (56)对比文件 (65)同一申请的已公布的文献号 CN 112733163 A,2021.04.30 申请公布号 CN 113721888 A US 2018331832 A1,2018.11.15 审查员 辛小霞 (43)申请公布日 2021.11.30 (73)专利权人 中科声龙科技发展(北京)有限公 司 地址 100080 北京市海淀区北四环西路9号 16层1605 (72)发明人 刘明汪福全 (74)专利代理机构 北京安信方达知识产权代理 有限公司 11262 代理人 李丹栗若木 (51)Int.Cl. G06F 7/58 (2006.01) 权利要求书3页 说明书11页 附图2页 (54)发明名称 一种Equihash算法的数据处理方法及装置 (57)摘要 本申请公开了一种Equihash算法的数据处 理方法及装置,包括:预处理模块,根据Equihash 算法的计算轮数从存储器中读出包括对应 Equihash算法的计算轮数中的指定计算轮数的 数据序号的待处理数据;多个Blake计算模块,至 少对预处理模块输出的数据序号进行Blake计算 得到计算结果;多个用于进行碰撞计算的碰撞处 理模块;以及存储处理模块,对应Equihash算法 的计算轮数中的指定计算轮数存储参与Blake计 算的数据序号、或对应剩余计算轮数存储碰撞计 算得到的中间数据。本申请通过将部分待处理数 据转化为其对应的数据序号进行存储,有效降低 B 了芯片存储容量和通信数据量,进而提高了芯片 8 的计算效率。 8 8 1 2 7 3 1 1 N C CN 113721888 B 权利要求书 1/3页 1.一种Equihash算法的数据处理装置,包括:预处理模块、Blake计算模块、碰撞处理模 块、存储处理模块;其中, 预处理模块,用于根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待 处理数据为对应Equihash算法的计算轮数中的指定计算轮数的数据序号或对应Equihash 算法的计算轮数中的剩余计算轮数的中间数据; 多个Blake计算模块,用于对预先确定的区块链交易数据、随机数nonce以及预处理模 块输出的数据序号进行Blake计算得到计算结果; 多个碰撞处理模块,用于对来自Blake计算模块的计算结果进行碰撞计算,或者对来自 预处理模块的中间数据进行碰撞计算,或者对来自上一级碰撞处理后的结果进行碰撞计 算; 存储处理模块,用于根据Equihash算法的计算轮数分别计算存储地址,按照存储地址, 对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应 Equihash算法的计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。 2.根据权利要求1所述的数据处理装置,其中,所述预处理模块用于: 根据所述Equihash算法的计算轮数,当计算轮数为所述对应Equihash算法的计算轮数 中的指定计算轮数时,将读取的数据序号输出给所述Blake计算模块实时对数据序号进行 计算以将数据序号还原为对应的中间数据;当计算轮数为所述对应Equihash算法的计算轮 数中的除指定计算轮数之外的剩余计算轮数时,将读取的中间数据输出给所述碰撞处理模 块。 3.根据权利要求1或2所述的数据处理装置,其中,对于Equihash(n,k)算法,所述数据 序号为初始化生成数据时,根据 的序号逐步增1由Blake 计算生成的对 应200bit数据的序号; 所述数据序号包括:单个数据序号、和/或由多个数据序号组成的数据序号组合。 4.根据权利要求1所述的数据处理装置,其中, 所述Equihash算法为Equihash(200,9)算法;所述指定计算轮数包括:初始轮数、第一 计算轮数、第二计算轮数、第三计算轮数。 5.根据权利要求4所述的数据处理装置,其中,所述预处理模块中的读出待处理数据包 括: 所述Equihash算法的计算轮数为第一轮数,从所述存储器中读取1个21bit数据序号, 输出给一个所述Blake计算模块以进行数据计算; 所述Equihash算法的计算轮数为第二轮数,从所述存储器中读取2个21bit数据序号, 分别输出给两个所述Blake计算模块以进行数据计算; 所述Equihash算法的计算轮数为第三轮数,从所述存储器中读取4个21bit数据序号, 分别输出给四个Blake计算模块以进行数据计算; 所述Equihash算法的计算轮数为第四轮数至第八轮数,从所述存储器中读取中间数 据,并将读取的中间数据输出给所述碰撞处理模块。 6.根据权利要求4所述的数据处理装置,其中,所述Blake计算模块为Blake 2b数据生 成器;所述Blake计算模块用于: 2 2 CN 113721888 B 权利要求书 2/3页 对来自所述预处理模块输出的21bit位宽的所述数据序号中的高20bit数据、所述区块 链交易数据和所述随机数nonce进行Blake算法计算,得到400bit计算结果; 根据所述预处理模块输出的数据序号的最低位对得到400bit计算结果进行选择,当该 位为0时,选择400bit计算结果的低200bit结果作为所述Blake计算模块的200bit计算结果 输出,当该位为1时,选择400bit计算结果的高200bit结果作为所述Blake计算模块的 200bit计算结果输出。 7.根据权利要求4所述的数据处理装置,其中,所述存储处理模块用于: 初始化数据存储,根据所述Blake计算模块计算得到200bit计算结果的0 19bit计算存~ 储地址,将其对应的21bit数据序号写入所述存储器; 所述Equihash算法的计算轮数为第一轮数,根据所述Blake计算模块计算得到的 200bit计算结果进行碰撞计算的结果的20 39bit计算存储地址,将参与碰撞计算对应的两~ 个21bit数据序号写入存储器; 所述Equihash算法的计算轮数为第二轮数,根据所述Blake计算模块计算得到的 200bit计算结果进行碰撞计算的结果的40 59bit计算存储地址,将参与碰撞计算对应的四~ 个21bit数据序号写入所述存储器; 所述Equihash算法的计算轮数为第三轮数,根据所述Blake计算模块计算得到的 200bit计算结果进行碰撞计算的结果的60 79bit计算存储地址,将碰撞计算的结果的80~ ~ 199bit中间数据写入所述存储器; 所述Equihash算法的计算轮数为第四轮数至第八轮数,针对每一轮,根据上一轮存入 的中间数据进行碰撞计算,并根据碰撞计算结果的后续20bit计算存储地址,将本轮碰撞计 算结果中后续20bit之后的中间数据写入所述存储器。 8.根据权利要求1所述的数据处理装置,其中, 所述Equihash算法为Equihash(144,5)算法;所述指定计算轮数包括:初始轮数、第一 计算轮数、第二计算轮数。 9.根据权利要求1所述的数据处理装置,其中, 所述Blake计算模块为Blake 2b数据生成器; 所述碰撞处理模块为位异或计算器。 10.一种Equihash算法的数据处理方法,包括: 根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处理数据为对应 所述Equihash算法的计算轮数中的指定计算轮数的数据序号或对于Equihash算法的计算 轮数中的剩余计算轮数的中间数据; 对预先确定的区块链交易数据、随机数nonce数据以及读出的数据序号进行Blake计算 得到计算结果; 对得到的计算结果进行碰撞计算或对中间数据进行碰撞计算; 根据Equihash算法的计算轮数分别计算存储地址,对应Equihash算法的计算轮数中的 指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的计算轮数中的剩余 计算轮数存储碰撞计算得到的中间数据。 11.根据权利要求10所述的数据处理方法,其中,所述Equihash算法为Equihash(200, 9)算法;所述指定计算轮数包括:初始轮数、第一计算轮数、第二计算轮数、第三计算轮数; 3 3 CN 113721888 B 权利要求书 3/3页 当所述计算轮数为指定计算轮数时,所述读出待处理数据包括: 所述Equihash算法的计算轮数为第一轮数,读取1个21bit数据序号以进行所述Blake 计算;所述Equihash算法的计算轮数为第二轮数,读取2个21bit数据序号以进行所述Blake 计算;所述Equihash算法的计算轮数为第三轮数,读取4个21bit数据序号以进行所述Blake 计算。 4 4 CN 113721888 B 说明书 1/11页 一种Equihash算法的数据处理方法及装置 技术领域 [0001] 本申请涉及但不限于数据计算技术,尤指一种Equihash算法的数据处理方法及装 置。 背景技术 [0002] Equihash算法的理论依据是一个著名的计算法科学及密码学问题:广义生日悖论 问题。Equihash是一种便携式算法,多用于区块链应用中工作量证明领域。 [0003] Equihash(n,k)算法具有鲜明特点,一方面是记忆性的,另一方面是很容易验证。 广义生日悖论就是在N个n比特的数据样本中找到 个碰撞的样本,Zerocash 工作量证明 算法由n、k两个参数确定,数据样本数目 , 由区块头(block header)和随 机数nonce产生。Zerocash工作量证明算法采用的Equihash算法是由卢森堡大学的安全、可 靠性和信任跨学科中心(SnT)开发的一种以内存为导向的工作证明算法。 [0004] Zerocash的block header包括4个字节的区块版本号(nVersion),用于指示遵从 哪个区块验证规则;32字节的前一区块头的哈希(hashPrevBlock),表示前一区块的block  header的哈希,可以从前一区块获得;32字节的  交易记录的哈希树的值 (hashMerkleRoot),本字段允许调整,比如对包含进区块的交易进行增删或改变顺序,或者 修改交易的输入字段等;32字节的hashReserved,这是保留字段;4个字节的更新时间 (nTime),基本取机器开始哈希block header时的Unix时间戳;4个字节的当前运行难度 个字节的随机值(nNonce), (nBits),由全网算力决定,每产生一个新块都调整一次难度;32 提供 种可能取值,通过改变nonce来改变block header,以最终产生一个小于或等于目 标(target)的哈希。Zerocash的block header中的hashMerkleRoot和nNonce可以预先设 置。 [0005] 一个有效的Equihash解应该满足下列条件:广义生日悖论条件即 个样本异或结 果为0;对于第r轮(0rk) 个样本按字典顺序排列后,每 个样本数据异或后有rn/(k + 1)个导0(leading zeros)。为了找到有效的Equihash解,通常可以采用Wagner算法:在产生 N个 后,对 进行排序,找到所有第一个n/(k+1)比特碰撞的 、 ,然后保存他们之间 的异或结果 ;接着对所有 排序,找到下一个n/(k+1)碰撞的 、 ;重复上述过程 共k‑1轮,直到只有2n/(k+1)比特没有碰撞;最后,找到最后2n/(k+1)比特碰撞的结果X,即 最终Equihash的解。 [0006] 为了获得Equihash的解,需要占用大量存储容量、以及通信数据量,从而会降低芯 片计算效率。 5 5 CN 113721888 B 说明书 2/11页 发明内容 [0007] 本申请提供一种Equihash算法的数据处理方法及装置,能够有效降低芯片存储容 量和通信数据量,进而提高芯片计算效率。 [0008] 本发明实施例提供了一种Equihash算法的数据处理装置,包括:预处理模块、 Blake计算模块、碰撞处理模块、存储处理模块;其中, [0009] 预处理模块,用于根据Equihash算法的计算轮数从存储器中读出待处理数据,其 中,待处理数据为对应Equihash算法的计算轮数中的指定计算轮数的数据序号或对应 Equihash算法的计算轮数中的剩余计算轮数的中间数据; [0010] 多个Blake计算模块,用于对预先确定的区块链交易数据、随机数nonce以及预处 理模块输出的数据序号进行Blake计算得到计算结果; [0011] 多个碰撞处理模块,用于对来自Blake计算模块的计算结果进行碰撞计算,或者对 来自预处理模块的中间数据进行碰撞计算,或者对来自上一级碰撞处理后的结果进行碰撞 计算; [0012] 存储处理模块,用于根据Equihash算法的计算轮数分别计算存储地址,按照存储 地址,对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或 对应Equihash算法的计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。 [0013] 在一种示例性实例中,所述预处理模块用于: [0014] 根据所述Equihash算法的计算轮数,当计算轮数为所述对应Equihash算法的计算 轮数中的指定计算轮数时,将读取的数据序号输出给所述Blake计算模块实时对数据序号 进行计算以将数据序号还原为对应的中间数据;当计算轮数为所述对应Equihash算法的计 算轮数中的除指定计算轮数之外的剩余计算轮数时,将读取的中间数据输出给所述碰撞处 理模块。 [0015] 在一种示例性实例中,对于Equihash(n,k)算法,所述数据序号为初始化生成数据 时,根据 的序号逐步增1由Blake 计算生成的对应200bit数据的序号。 [0016] 在一种示例性实例中,所述数据序号包括:单个数据序号、和/或由多个数据序号 组成的数据序号组合。 [0017] 在一种示例性实例中,所述Equihash算法为Equihash(200,9)算法;所述指定计算 轮数包括:初始轮数、第一计算轮数、第二计算轮数、第三计算轮数; [0018] 所述Equihash算法为Equihash(144,5)算法;所述指定计算轮数包括:初始轮数、 第一计算轮数、第二计算轮数。 [0019] 在一种示例性实例中,所述预处理模块中的读出待处理数据包括: [0020] 所述Equihash算法的计算轮数为第一轮数,从所述存储器中读取1个21bit数据序 号,输出给一个所述Blake计算模块以进行数据计算; [0021] 所述Equihash算法的计算轮数为第二轮数,从所述存储器中读取2个21bit数据序 号,分别输出给两个所述Blake计算模块以进行数据计算; [0022] 所述Equihash算法的计算轮数为第三轮数,从所述存储器中读取4个21bit数据序 号,分别输出给四个Blake计算模块以进行数据计算; [0023] 所述Equihash算法的计算轮数为第四轮数至第八轮数,从所述存储器中读取中间 6 6 CN 113721888 B 说明书 3/11页 数据,并将读取的中间数据输出给所述碰撞处理模块。 [0024] 在一种示例性实例中,所述Blake计算模块为Blake 2b数据生成器;所述Blake计 算模块用于: [0025] 对来自所述预处理模块输出的21bit位宽的所述数据序号中的高20bit数据、所述 区块链交易数据和所述随机数nonce进行Blake算法计算,得到400bit计算结果; [0026] 根据所述预处理模块输出的数据序号的最低位对得到400bit计算结果进行选择, 当该位为0时,选择400bit计算结果的低200bit结果作为所述Blake计算模块的200bit计算 结果输出,当该位为1时,选择400bit计算结果的高200bit结果作为所述Blake计算模块的 200bit计算结果输出。 [0027] 在一种示例性实例中,所述存储处理模块用于: [0028] 初始化数据存储,根据所述Blake计算模块计算得到200bit计算结果的0 19bit计~ 算存储地址,将其对应的21bit数据序号写入所述存储器; [0029] 所述Equihash算法的计算轮数为第一轮数,根据所述Blake计算模块计算得到的 200bit计算结果进行碰撞计算的结果的20 39bit计算存储地址,将参与碰撞计算对应的两~ 个21bit数据序号写入存储器; [0030] 所述Equihash算法的计算轮数为第二轮数,根据所述Blake计算模块计算得到的 200bit计算结果进行碰撞计算的结果的40 59bit计算存储地址,将参与碰撞计算对应的四~ 个21bit数据序号写入所述存储器; [0031] 所述Equihash算法的计算轮数为第三轮数,根据所述Blake计算模块计算得到的 200bit计算结果进行碰撞计算的结果的60 79bit计算存储地址,将碰撞计算的结果的80~ ~ 199bit中间数据写入所述存储器; [0032] 所述Equihash算法的计算轮数为第四轮数至第八轮数,针对每一轮,根据上一轮 存入的中间数据进行碰撞计算,并根据碰撞计算结果的后续20bit计算存储地址,将本轮碰 撞计算结果中后续20bit之后的中间数据写入所述存储器。 [0033] 在一种示例性实例中,所述Blake计算模块为Blake 2b数据生成器; [0034] 所述碰撞处理模块为位异或计算器。 [0035] 本申请实施例还提供一种Equihash算法的数据处理方法,包括: [0036] 根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处理数据为 对应所述Equihash算法的计算轮数中的指定计算轮数的数据序号或对于Equihash算法的 计算轮数中的剩余计算轮数的中间数据; [0037] 对预先确定的区块链交易数据、随机数nonce数据以及读出的数据序号进行Blake 计算得到计算结果; [0038] 对得到的计算结果进行碰撞计算或对中间数据进行碰撞计算; [0039] 根据Equihash算法的计算轮数分别计算存储地址,对应Equihash算法的计算轮数 中的指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的计算轮数中的 剩余计算轮数存储碰撞计算得到的中间数据。 [0040] 在一种示例性实例中,所述Equihash算法为Equihash(200,9)算法;所述指定计算 轮数包括:初始轮数、第一计算轮数、第二计算轮数、第三计算轮数; [0041] 所述数据序号包括:对应所述Equihash算法的计算轮数为第一轮数的1个21bit数 7 7 CN 113721888 B 说明书 4/11页 据序号;对应所述Equihash算法的计算轮数为第二轮数的2个21bit数据序号;对应所述 Equihash算法的计算轮数为第三轮数的4个21bit数据序号。 [0042] 通过本申请实施例提供的Equihash算法的数据处理方法及装置,包括:预处理模 块,用于根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处理数据为对 应Equihash算法的计算轮数中的指定计算轮数的数据序号或对应Equihash算法的计算轮 数中的剩余计算轮数的中间数据;多个Blake计算模块,用于对预先确定的区块链交易数 据、随机数nonce以及预处理模块输出的数据序号进行Blake计算得到计算结果;多个碰撞 处理模块,用于对来自Blake计算模块的计算结果进行碰撞计算,或者对来自预处理模块的 中间数据进行碰撞计算,或者对来自上一级碰撞处理后的结果进行碰撞计算;存储处理模 块,用于根据Equihash算法的计算轮数分别计算存储地址,按照存储地址,对应Equihash算 法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的 计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。本申请实施例通过将部分待处 理数据转化为其对应的数据序号进行存储,有效降低了芯片存储容量和通信数据量,进而 提高了芯片的计算效率。进一步地,通过本申请实施例提供的Equihash算法的数据处理方 法及装置,在初始化数据存储,根据Blake计算得到的200bit中间数据的低20bit(0 19bit)~ 分类存储200bit中间数据对应的21bit数据序号。本申请实施例中存储的是Blake计算得到 的数据对应的数据序号,而不是存储Blake计算得到的数据的高180bit以及数据序号,因 此,本申请实施例的相关内容存储数据量由200bit下降为了21bit,降低了存储量。 [0043] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利 要求书以及附图中所特别指出的结构来实现和获得。 附图说明 [0044] 附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本 申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。 [0045] 图1为本申请实施例中Equihash算法的数据处理装置的组成结构示意图; [0046] 图2为本申请实施例中Equihash(200,9)算法的数据处理装置的实施例的组成结 构示意图; [0047] 图3为本申请实施例中Equihash算法的数据处理方法的流程示意图。 具体实施方式 [0048] 为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请 的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中 的特征可以相互任意组合。 [0049] 为了提高芯片计算效率,降低成本和功耗,本申请发明人提出通过对中间数据进 行压缩,即将部分待处理数据转化为其对应的数据序号进行存储,来有效降低芯片存储量 和通信数据量,进而提高芯片的计算效率。 [0050] 图1为本申请实施例中Equihash算法的数据处理装置的组成结构示意图,如图1所 示,至少包括:预处理模块、Blake计算模块、碰撞处理模块、存储处理模块;其中, 8 8 CN 113721888 B 说明书 5/11页 [0051] 预处理模块,用于根据Equihash算法的计算轮数从存储器中读出待处理数据,其 中,待处理数据为对应所述Equihash算法的计算轮数中的指定计算轮数的数据序号或对于 Equihash算法的计算轮数中的剩余计算轮数的中间数据; [0052] 多个Blake计算模块,用于对预先确定的区块链交易数据、随机数nonce以及预处 理模块输出的数据序号进行Blake计算得到计算结果; [0053] 多个碰撞处理模块,用于对来自Blake计算模块的计算结果进行碰撞计算,或者对 来自预处理模块的中间数据进行碰撞计算,或者对来自上一级碰撞处理后的结果进行碰撞 计算; [0054] 存储处理模块,用于根据Equihash算法的计算轮数分别计算存储地址,对应 Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应 Equihash算法的计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。 [0055] 在一种示例性实例中,数据序号可以包括:单个数据序号,和/或由多个如2个或4 个数据序号组成的数据序号组合;中间数据可以包括碰撞计算结果。 [0056] 在一种示例性实例中,对于Equihash(n,k)算法,数据序号为初始化生成数据时, 根据 (比如:对于Equihash(200,9)算法包括0( ‑1))的序号逐步增1~ 由Blake 2b生成的对应200bit数据的序号。 [0057] 本申请实施例提供的Equihash算法的数据处理装置,通过将部分待处理数据转化 为其对应的数据序号进行存储,有效降低了芯片存储容量和通信数据量,进而提高了芯片 的计算效率。 [0058] 在一种示例性实例中,Blake计算模块可以包括但不限于如:Blake 2b数据生成器 等。 [0059] Blake算法于2008年提出,包含两个版本,一种基于32位字(word)用于产生最长 256位的哈希结果,一种基于64位word用于产生最长512位的哈希结果。Blake算法的核心操 作是不断地将8个散列中间结果和16个输入word进行组合,从而产生下一轮组合的8个中间 结果。按照最终截断的哈希长度,Blake ‑256和Blake ‑224使用32位字分别产生256位和 224位的哈希结果(也称为消息摘要),而Blake ‑512和Blake ‑384使用64位字并产生512位 和384位哈希结果。Blake 2b算法不仅仅只是一个简单的哈希函数而已,Blake 2b算法在目 前的密码学中是属于安全系数最高的存在,随着它被用于越来越多的领域,其安全系数将 会得到进一步的提高和优化。Blake 2有两大主要版本:Blake 2b和Blake 2s。Blake 2b是 Blake的64位版本,它可以生成最高512位的任意长度哈希。Blake 2s是Blake的32位版本, 它可以生成最高256位的任意长度哈希。为了进一步提升哈希计算的速度,Blake的并行版 本Blake 2bp和Blake 2sp可以在多个计算核心上并行运行,而此时的运行效率将是串行运 行的八倍。 [0060] 在一种示例性实例中,碰撞处理模块可以包括但不限于如:位异或计算器。 [0061] 在一种示例性实例中,预处理模块可以用于: [0062] 根据Equihash算法的计算轮数,当计算轮数为对应Equihash算法的计算轮数中的 指定计算轮数时,选择将读取的数据序号输出给Blake计算模块实时对数据序号进行计算 以将数据序号还原为对应的中间数据,或者,当计算轮数为对应Equihash算法的计算轮数 9 9 CN 113721888 B 说明书 6/11页 中的除指定计算轮数之外的剩余计算轮数时,直接将读取的中间数据输出给碰撞处理模 块。 [0063] 在一种示例性实例中,  Equihash(200,9)算法中,是针对 个数(每个数 200bit),从中找到 个数,这些数的异或结果为0,因此,当Equihash算法为Equihash(200, 9)时,指定计算轮数可以包括:初始轮数、第一计算轮数、第二计算轮数、第三计算轮数。 [0064] 在一种示例性实例中,  Equihash(144,5)算法中,是针对 个数(每个数 144bit),从中找到 个数,这些数的异或结果为0,因此,当Equihash算法为Equihash(144, 5)时,指定计算轮数可以包括:初始轮数、第一计算轮数、第二计算轮数。 [0065] 需要说明的时是,对于Equihash(n,k)算法,本申请中的计算轮数从初始轮数开 始,然后是第一计算轮数、第二计算轮数…第(k‑1)计算轮数。初始化轮参与Blake计算时使 用的数据序号,是由0到 轮流增1生成的数据序号。 [0066] 在一种示例性实例中,预处理模块还用于: [0067] 存储有根据200bit中间数据的低20bit分类后存储的200bit中间数据对应的 21bit数据序号。 [0068] 在一种示例性实例中,以Equihash算法为Equihash(200,9)为例,预处理模块具体 可以用于: [0069] Equihash算法的计算轮数为第一轮数,从存储器中读取1个21bit数据序号,将读 取的21bit数据序号输出给一个Blake计算模块(如Blake 2b数据生成器)以进行数据计算, 还原得到200bit生成数据; [0070] Equihash算法的计算轮数为第二轮数,从存储器中读取2个21bit数据序号,并将 读取的2个21bit数据序号分别输出给两个Blake计算模块(如Blake 2b数据生成器)以进行 数据计算,还原得到中间数据; [0071] Equihash算法的计算轮数为第三轮数,从存储器中读取4个21bit数据序号,将读 取的4个21bit数据序号分别输出给四个Blake计算模块(如Blake 2b数据生成器)以进行数 据计算,还原得到中间数据; [0072] Equihash算法的计算轮数为第四轮数至第八轮数,从存储器中读取中间数据,并 将读取的中间数据输出给碰撞处理模块。 [0073] 在一种示例性实例中,Blake计算模块为Blake 2b数据生成器,用于根据预先确定 的外部传入的区块链交易数据、随机数nonce以及预处理模块输出的数据序号,计算得到对 应的200bit有效信息,具体可以包括: [0074] 对来自预处理模块输出的21bit位宽(0x000000 0x1fffff)的数据序号中的的高~ 20bit数据(即1 20bit)、外部传入的区块链交易数据和随机数nonce进行Blake 2b算法计~ 算,得到400bit计算结果; [0075] 根据预处理模块输出的数据序号的最低位对得到400bit计算结果进行选择,当该 位为0时,选择400bit计算结果的低200bit结果作为Blake计算模块的200bit计算结果输 出,当该位为1时,选择400bit计算结果的高200bit结果作为Blake计算模块的200bit计算 结果输出。 10 10 CN 113721888 B 说明书 7/11页 [0076] 在一种示例性实例中,以Equihash算法为Equihash(200,9)为例,存储处理模块具 体用于: [0077] 初始化阶段即初始化数据存储,根据Blake 2b数据生成器计算得到200bit计算结 果的0 19bit计算存储地址,将其对应的21bit数据序号写入存储器;~ [0078] Equihash算法的计算轮数为第一轮数,根据Blake  2b数据生成器计算得到的 200bit计算结果进行碰撞计算的结果的20 39bit计算存储地址,将参与碰撞计算的两个~ 21bit数据序号写入存储器; [0079] Equihash算法的计算轮数为第二轮数,根据Blake  2b数据生成器计算得到的 200bit计算结果进行碰撞计算的结果的40 59bit计算存储地址,将参与碰撞计算的四个~ 21bit数据序号写入存储器; [0080] Equihash算法的计算轮数为第三轮数,根据Blake  2b数据生成器计算得到的 200bit计算结果进行碰撞计算的结果的60 79bit计算存储地址,将碰撞计算的结果的80~ ~ 199bit中间数据写入存储器; [0081] Equihash算法的计算轮数为第四轮数至第八轮数,针对每一轮,根据上一轮存入 的中间数据进行碰撞计算,并根据碰撞计算结果的后续20bit计算存储地址,将本轮碰撞计 算的结果中后续20bit之后的中间数据写入存储器。 [0082] 需要说明的是,对于Equihash算法的计算轮数为第四轮数至第八轮数的情况,针 对每一轮,首先会碰撞计算结果的后续的20bit计算对应存储地址(也就是说,初始化轮按 照200bit生成数据的0 19bit分类,第一轮按照碰撞结果即中间数据20 39bit分类,第二轮~ ~ 按照中间数据的40 59bit分类,第三轮按照中间数据的60 79bit分类,第四轮按照中间数~ ~ 据的80 99bit分类,第五轮按照中间数据的100 119bit分类,第六轮按照中间数据的120~ ~ ~ 139bit分类,第七轮按照中间数据的140 159bit分类,第八轮按照中间数据的160 179bit~ ~ 分类);然后,再将根据上一轮的异或碰撞结果进行异或计算的结果写入存储器(也就是说, 初始化轮存储1个21bit数据序号,第一轮存储2个21bit数据序号,第二轮存储4个21bit数 据序号,第三轮存储80 199bit中间数据,第四轮存储100 199bit中间数据,第五轮存储120~ ~ ~199bit中间数据,第六轮存储140 199bit中间数据,第七轮存储160 199bit中间数据,第~ ~ 八轮存储180 199bit中间数据)。~ [0083] 本申请实施例提供的Equihash算法的数据处理装置中,在初始化数据存储,根据 Blake计算得到的200bit中间数据的低20bit(0 19bit)分类存储200bit中间数据对应的~ 21bit数据序号。本申请实施例中存储的是Blake计算得到的数据对应的数据序号,而不是 存储Blake计算得到的数据的高180bit以及数据序号,因此,本申请实施例的相关内容存储 数据量由200bit下降为了21bit,降低了存储量。 [0084] 图2为本申请实施例中Equihash(200,9)算法的数据处理装置的实施例的组成结 构示意图,如图2所示,本实施例以Equihash算法为Equihash(200,9)为例,Blake计算模块 包括8个Blake 2b数据生成器,碰撞处理模块包括7个位异或计算器。 [0085] 在本实施例中,初始化阶段(即图2中的初始轮),原始数据序号即按照数据生成顺 序(0 ( ‑1))对应的21bit数据序号,经过第一Blake 2b数据生成器计算还原为其对应的~ 中间数据后输出给数据编码模块;Equihash算法的计算轮数为第一轮数即第1轮中,从存储 器中读取1个21bit数据序号,将读取的数据序号输出给第一Blake 2b数据生成器以进行数 11 11 CN 113721888 B 说明书 8/11页 据计算得到计算结果,从存储器中读取另1个相同类型的21bit数据序号,将读取的数据序 号输出给第二Blake 2b数据生成器以进行数据计算得到计算结果;第一Blake 2b数据生成 器的计算结果和第二Blake 2b数据生成器的计算结果输入第一位异或计算器,经过第一位 异或计算器的运算后得到的中间数据输出给数据编码模块;Equihash算法的计算轮数为第 二轮数即第2轮中,从存储器中读取2个21bit数据序号,同时将读取的数据序号分别输出给 第一Blake 2b数据生成器和第二Blake 2b数据生成器以进行数据计算,第一Blake 2b数据 生成器的计算结果和第二Blake 2b数据生成器的计算结果输入第一位异或计算器,经过第 一位异或计算器的运算后得到的中间数据输出给第三位异或计算器;从存储器中读取另2 个相同类型的21bit数据序号,将读取的数据序号分别输出给第三Blake 2b数据生成器和 第四Blake  2b数据生成器以进行数据计算,第三Blake  2b数据生成器的计算结果和第四 Blake 2b数据生成器的计算结果输入第二位异或计算器,经过第二位异或计算器的运算后 得到的中间数据输出给第三位异或计算器;第三位异或计算器对来自第一位异或计算器的 中间数据和来自第二位异或计算器的中间数据运算后得到的中间数据、上述对应的4个 21bit数据序号输出给数据编码模块;Equihash算法的计算轮数为第三轮数即第3轮中,从 存储器中分别读取类型相同的两组4个21bit数据序号,分别经过图2中左右两侧的四个 Blake 2b数据生成器计算,及三个位异或计算器处理后得到的两个中间数据输入第七异位 或计算器,第七位异或计算器对来自第三位异或计算器的中间数据和来自第六位异或计算 器的中间数据运算后得到的中间数据输出给数据编码模块;Equihash算法的计算轮数为第 四轮数 第八轮次即第4 8轮中,将从存储器中读取的中间数据,中间数据输出给第七位异~ ~ 或计算器运算后输出给数据编码模块。 [0086] 对于存储处理模块,初始化阶段,根据读出的待处理数据的低20bit分类存储 200bit数据对应的21bit序号。 [0087] 初始化阶段即初始化数据存储,根据Blake 2b数据生成器计算得到200bit计算结 果的0 19b~ it计算存储地址,将其对应的一个21bit数据序号写入存储器;Equihash算法的 计算轮数为第一轮数,根据Blake 2b数据生成器计算得到200bit计算结果的异或碰撞结果 的20 39bit计算存储地址,将其对应的两个21bit数据序号写入存储器;Equihash算法的计~ 算轮数为第二轮数,根据Blake 2b数据生成器计算得到200bit计算结果的碰撞结果的40~ 59bit计算存储地址,将其对应四个21bit数据序号写入存储器;Equihash算法的计算轮数 为第三轮数,根据Blake 2b数据生成器计算得到的200bit计算结果进行碰撞计算的结果的 60 79bit计算存储地址,将碰撞计算的结果的80 199bit中间数据写入存储器;Equihash算~ ~ 法的计算轮数为第四轮数至第八轮数,针对每一轮,根据上一轮存入的中间数据进行碰撞 计算,并根据碰撞计算结果的后续20bit计算存储地址,将本轮碰撞计算结果中后续20bit 之后的中间数据写入存储器。 [0088] 本申请实施例还提供一种Equihash算法的数据处理方法,包括: [0089] 步骤300:根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处 理数据为对应所述Equihash算法的计算轮数中的指定计算轮数的数据序号或对于 Equihash算法的计算轮数中的剩余计算轮数的中间数据。 [0090] 在一种示例性实例中,数据序号可以包括:单个数据序号、由两个或4个数据序号 组成的数据序号组合;中间数据可以包括中间碰撞结果。 12 12 CN 113721888 B 说明书 9/11页 [0091] 在一种示例性实例中,对于Equihash(n,k)算法,数据序号为初始化生成数据时, 根据 的序号逐步增1由Blake 2b生成的对应200bit数据的序号。 [0092] 在一种示例性实例中,本步骤可以包括: [0093] 根据Equihash算法的计算轮数,当计算轮数为对应Equihash算法的计算轮数中的 指定计算轮数时,选择实时对读取的数据序号进行Blake计算以将数据序号还原为对应的 中间数据,或者,当计算轮数为对应Equihash算法的计算轮数中的除指定计算轮数之外的 剩余计算轮数时,直接对读取的中间数据进行碰撞计算。 [0094] 在一种示例性实例中,以Equihash算法为Equihash(200,9)为例,步骤300可以包 括: [0095] Equihash算法的计算轮数为第一轮数,从存储器中读取1个21bit数据序号,选择 对读取的数据序号进行Blake计算,还原得到200bit生成数据; [0096] Equihash算法的计算轮数为第二轮数,从存储器中读取2个21bit数据序号,选择 对读取的数据序号进行Blake计算,还原得到中间数据; [0097] Equihash算法的计算轮数为第三轮数,从存储器中读取4个21bit数据序号,选择 对读取的数据序号进行Blake计算,还原得到中间数据; [0098] Equihash算法的计算轮数为第四轮数至第八轮数,从存储器中读取中间数据,选 择对读取的中间数据进行碰撞处理。 [0099] 步骤301:对预先确定的区块链交易数据、随机数nonce以及读出的数据序号进行 Blake计算得到计算结果。 [0100] 在一种示例性实例中,本步骤可以包括: [0101] 根据21bit位宽(0x000000 0x1fffff)的数据序号中的1 20bit、外部传入的区块~ ~ 链交易数据和随机数nonce进行Blake计算,得到400bit计算结果; [0102] 根据21bit位宽数据序号的最低位对得到400bit计算结果进行选择,当该位为0 时,选择400bit计算结果的低200bit结果作为Blake计算的200bit计算结果输出,当该位为 1时,选择400bit计算结果的高200bit结果作为Blake计算的200bit计算结果输出。 [0103] 步骤302:对得到的计算结果进行碰撞计算或对中间数据进行碰撞计算。 [0104] 在一种示例性实例中,本步骤是对Blake计算结果两两进行位异或计算,或者对上 一级两次位异或处理后的结果再次进行位异或计算,或者对读取的中间数据进行位异或处 理。 [0105] 步骤303:根据Equihash算法的计算轮数分别计算存储地址,对应Equihash算法的 计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的计算 轮数中的剩余计算轮数存储碰撞计算得到的中间数据。 [0106] 在一种示例性实例中,数据序号可以包括:单个数据序号、由两个或4个数据序号 组成的数据序号组合;中间数据可以包括中间碰撞结果。 [0107] 在一种示例性实例中,以Equihash算法为Equihash(200,9)为例,步骤303可以包 括: [0108] 初始化阶段即初始化数据存储,根据Blake 2b数据生成器计算得到200bit计算结 果的0 19bit计算存~ 储地址,将其对应的21bit数据序号写入存储器; 13 13 CN 113721888 B 说明书 10/11页 [0109] Equihash算法的计算轮数为第一轮数,根据Blake  2b数据生成器计算得到的 200bit计算结果进行碰撞计算的结果的20 39bit计算存储地址,将参与碰撞计算的两个~ 21bit数据序号写入存储器; [0110] Equihash算法的计算轮数为第二轮数,根据Blake  2b数据生成器计算得到的 200bit计算结果进行碰撞计算的结果的40 59bit计算存储地址,将参与碰撞计算的四个~ 21bit数据序号写入存储器; [0111] Equihash算法的计算轮数为第三轮数,根据2b数据生成器计算得到的200bit计算 结果进行碰撞计算结果的60 79b~ it计算存储地址,将碰撞计算的结果的80 199bit中间数~ 据写入存储器; [0112] Equihash算法的计算轮数为第四轮数至第八轮数,针对每一轮,根据上一轮存入 的中间数据进行碰撞计算,并根据Blake 2b数据生成器计算得到的200bit计算结果进行碰 撞计算结果的后续20bit计算存储地址,将本轮碰撞计算的结果中后续20bit之后的中间数 据写入存储器。 [0113] 以Equihash算法为Equihash(200,9)为例,初始化轮按照200bit生成数据的0~ 19bit分类,第一轮按照碰撞结果即中间数据的20 39bit分类,第二轮按照中间数据的40~ ~ 59bit分类,第三轮按照碰撞结果即中间数据的60 79bit分类,第四轮按照中间数据的80~ ~ 99bit分类,第五轮按照中间数据的100 119bit分类,第六轮按照中间数据的120 139bit分~ ~ 类,第七轮按照中间数据的140 159bit分类,第八轮按照中间数据的160 179bit分类;存储~ ~ 处理时,初始化轮存储1个21bit数据序号,第一轮存储2个21bit数据序号,第二轮存储4个 21bit数据序号,第三轮存储80 199bit中间数据,第四轮存储100 199bit中间数据,第五轮~ ~ 存储120 199bit中间数据,第六轮存储140 199bit中间数据,第七轮存储160 199bit中间~ ~ ~ 数据,第八轮存储180 199bit中间数据。~ [0114] 本申请实施例提供的Equihash算法的数据处理方法中,在初始化数据存储,根据 Blake计算得到的200bit中间数据的低20bit(0 19bit)分类存储200bit中间数据对应的~ 21bit数据序号。 [0115] 本申请实施例中存储的是Blake计算得到的数据对应的数据序号,而不是存储 Blake计算得到的数据的高180bit以及数据序号,因此,本申请实施例的相关内容存储数据 量由200bit下降为了21bit,降低了存储量。 [0116] 本申请实施例提供的Equihash算法的数据处理方法中,首次碰撞时,一次读取1个 21bit数据序号,对读取的两个21bit数据序号分别进行Blake计算,将两个计算结果的20~ 200bit进行异或计算得到首次碰撞结果,并根据计算结果的20 39bit数值进行分类存储,~ 存储的内容包括首次碰撞的两个原始数据对应的21bit数据序号。 [0117] 本申请实施例中,首次碰撞的存储数据量由160bit变为了42bit,降低了存储量。 [0118] 本申请实施例提供的Equihash算法的数据处理方法中,第二次碰撞时,一次读取2 个21bit数据序号,对每次读取的2个21bit数据序号分别进行Blake计算,计算得到的两个 数据结果的40 200bit结果进行异或计算得到中间数据,再将两次的中间数据进行碰撞得~ 到二次碰撞结果,并根据计算结果的40 59bit数据进行分类存储,存储的内容包括二次碰~ 撞的四个原始数据对应的21bit数据序号。 [0119] 本申请实施例中,二次碰撞的存储数据量由140bit变为了84bit,降低了存储量。 14 14 CN 113721888 B 说明书 11/11页 [0120] 本申请实施例提供的Equihash算法的数据处理方法中,第三次碰撞时,一次读取4 个21bit数据序号,对每次读取的2个21bit数据序号分别进行Blake计算,计算得到的四个 数据结果的60 200bit结果分别进行两次异或计算得到中间数据,再将两次的中间数据进~ 行碰撞得到三次碰撞结果,并根据计算结果的60 79bit数据进行分类存储,存储的内容包~ 括碰撞中间结果的80bit 199bit。~ [0121] 本申请实施例提供的Equihash算法的数据处理方法中,第四次至第八次碰撞时, 将读取的中间数据直接进行碰撞计算,并根据后续的20bit数据进行分类存储,存储的内容 包括碰撞中间结果。 [0122] 本申请实施例提供的Equihash算法的数据处理方法,通过将部分待处理数据转化 为其对应的数据序号进行存储,有效降低了芯片存储容量和通信数据量,进而提高了芯片 的计算效率。 [0123] 虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的 实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭 露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请 的专利保护范围,仍须以所附的权利要求书所界定的范围为准。 15 15 CN 113721888 B 说明书附图 1/2页 图1 图2 16 16 CN 113721888 B 说明书附图 2/2页 图3 17 17

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: