CN113721888B - 一种Equihash算法的数据处理方法及装置 - Google Patents
一种Equihash算法的数据处理方法及装置 Download PDFInfo
- Publication number
- CN113721888B CN113721888B CN202111279405.XA CN202111279405A CN113721888B CN 113721888 B CN113721888 B CN 113721888B CN 202111279405 A CN202111279405 A CN 202111279405A CN 113721888 B CN113721888 B CN 113721888B
- Authority
- CN
- China
- Prior art keywords
- calculation
- data
- algorithm
- equihash
- rounds
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000004364 calculation method Methods 0.000 claims abstract description 458
- 238000007781 pre-processing Methods 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 5
- 238000013500 data storage Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 abstract description 7
- 230000009467 reduction Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种Equihash算法的数据处理方法及装置,包括:预处理模块,根据Equihash算法的计算轮数从存储器中读出包括对应Equihash算法的计算轮数中的指定计算轮数的数据序号的待处理数据;多个Blake计算模块,至少对预处理模块输出的数据序号进行Blake计算得到计算结果;多个用于进行碰撞计算的碰撞处理模块;以及存储处理模块,对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应剩余计算轮数存储碰撞计算得到的中间数据。本申请通过将部分待处理数据转化为其对应的数据序号进行存储,有效降低了芯片存储容量和通信数据量,进而提高了芯片的计算效率。
Description
技术领域
本申请涉及但不限于数据计算技术,尤指一种Equihash算法的数据处理方法及装置。
背景技术
Equihash算法的理论依据是一个著名的计算法科学及密码学问题:广义生日悖论问题。Equihash是一种便携式算法,多用于区块链应用中工作量证明领域。
Equihash(n,k)算法具有鲜明特点,一方面是记忆性的,另一方面是很容易验证。广义生日悖论就是在N个n比特的数据样本中找到个碰撞的样本,Zerocash 工作量证明算法由n、k两个参数确定,数据样本数目,由区块头(block header)和随机数nonce产生。Zerocash工作量证明算法采用的Equihash算法是由卢森堡大学的安全、可靠性和信任跨学科中心(SnT)开发的一种以内存为导向的工作证明算法。
Zerocash的block header包括4个字节的区块版本号(nVersion),用于指示遵从哪个区块验证规则;32字节的前一区块头的哈希(hashPrevBlock),表示前一区块的blockheader的哈希,可以从前一区块获得;32字节的 交易记录的哈希树的值(hashMerkleRoot),本字段允许调整,比如对包含进区块的交易进行增删或改变顺序,或者修改交易的输入字段等;32字节的hashReserved,这是保留字段;4个字节的更新时间(nTime),基本取机器开始哈希block header时的Unix时间戳;4个字节的当前运行难度(nBits),由全网算力决定,每产生一个新块都调整一次难度;32个字节的随机值(nNonce),提供种可能取值,通过改变nonce来改变block header,以最终产生一个小于或等于目标(target)的哈希。Zerocash的block header中的hashMerkleRoot和nNonce可以预先设置。
一个有效的Equihash解应该满足下列条件:广义生日悖论条件即个样本异或结果为0;对于第r轮(0<r<k)个样本按字典顺序排列后,每个样本数据异或后有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的解。
为了获得Equihash的解,需要占用大量存储容量、以及通信数据量,从而会降低芯片计算效率。
发明内容
本申请提供一种Equihash算法的数据处理方法及装置,能够有效降低芯片存储容量和通信数据量,进而提高芯片计算效率。
本发明实施例提供了一种Equihash算法的数据处理装置,包括:预处理模块、Blake计算模块、碰撞处理模块、存储处理模块;其中,
预处理模块,用于根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处理数据为对应Equihash算法的计算轮数中的指定计算轮数的数据序号或对应Equihash算法的计算轮数中的剩余计算轮数的中间数据;
多个Blake计算模块,用于对预先确定的区块链交易数据、随机数nonce以及预处理模块输出的数据序号进行Blake计算得到计算结果;
多个碰撞处理模块,用于对来自Blake计算模块的计算结果进行碰撞计算,或者对来自预处理模块的中间数据进行碰撞计算,或者对来自上一级碰撞处理后的结果进行碰撞计算;
存储处理模块,用于根据Equihash算法的计算轮数分别计算存储地址,按照存储地址,对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。
在一种示例性实例中,所述预处理模块用于:
根据所述Equihash算法的计算轮数,当计算轮数为所述对应Equihash算法的计算轮数中的指定计算轮数时,将读取的数据序号输出给所述Blake计算模块实时对数据序号进行计算以将数据序号还原为对应的中间数据;当计算轮数为所述对应Equihash算法的计算轮数中的除指定计算轮数之外的剩余计算轮数时,将读取的中间数据输出给所述碰撞处理模块。
在一种示例性实例中,所述数据序号包括:单个数据序号、和/或由多个数据序号组成的数据序号组合。
在一种示例性实例中,所述Equihash算法为Equihash(200,9)算法;所述指定计算轮数包括:初始轮数、第一计算轮数、第二计算轮数、第三计算轮数;
所述Equihash算法为Equihash(144,5)算法;所述指定计算轮数包括:初始轮数、第一计算轮数、第二计算轮数。
在一种示例性实例中,所述预处理模块中的读出待处理数据包括:
所述Equihash算法的计算轮数为第一轮数,从所述存储器中读取1个21bit数据序号,输出给一个所述Blake计算模块以进行数据计算;
所述Equihash算法的计算轮数为第二轮数,从所述存储器中读取2个21bit数据序号,分别输出给两个所述Blake计算模块以进行数据计算;
所述Equihash算法的计算轮数为第三轮数,从所述存储器中读取4个21bit数据序号,分别输出给四个Blake计算模块以进行数据计算;
所述Equihash算法的计算轮数为第四轮数至第八轮数,从所述存储器中读取中间数据,并将读取的中间数据输出给所述碰撞处理模块。
在一种示例性实例中,所述Blake计算模块为Blake 2b数据生成器;所述Blake计算模块用于:
对来自所述预处理模块输出的21bit位宽的所述数据序号中的高20bit数据、所述区块链交易数据和所述随机数nonce进行Blake算法计算,得到400bit计算结果;
根据所述预处理模块输出的数据序号的最低位对得到400bit计算结果进行选择,当该位为0时,选择400bit计算结果的低200bit结果作为所述Blake计算模块的200bit计算结果输出,当该位为1时,选择400bit计算结果的高200bit结果作为所述Blake计算模块的200bit计算结果输出。
在一种示例性实例中,所述存储处理模块用于:
初始化数据存储,根据所述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之后的中间数据写入所述存储器。
在一种示例性实例中,所述Blake计算模块为Blake 2b数据生成器;
所述碰撞处理模块为位异或计算器。
本申请实施例还提供一种Equihash算法的数据处理方法,包括:
根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处理数据为对应所述Equihash算法的计算轮数中的指定计算轮数的数据序号或对于Equihash算法的计算轮数中的剩余计算轮数的中间数据;
对预先确定的区块链交易数据、随机数nonce数据以及读出的数据序号进行Blake计算得到计算结果;
对得到的计算结果进行碰撞计算或对中间数据进行碰撞计算;
根据Equihash算法的计算轮数分别计算存储地址,对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。
在一种示例性实例中,所述Equihash算法为Equihash(200,9)算法;所述指定计算轮数包括:初始轮数、第一计算轮数、第二计算轮数、第三计算轮数;
所述数据序号包括:对应所述Equihash算法的计算轮数为第一轮数的1个21bit数据序号;对应所述Equihash算法的计算轮数为第二轮数的2个21bit数据序号;对应所述Equihash算法的计算轮数为第三轮数的4个21bit数据序号。
通过本申请实施例提供的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,降低了存储量。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例中Equihash算法的数据处理装置的组成结构示意图;
图2为本申请实施例中Equihash(200,9)算法的数据处理装置的实施例的组成结构示意图;
图3为本申请实施例中Equihash算法的数据处理方法的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
为了提高芯片计算效率,降低成本和功耗,本申请发明人提出通过对中间数据进行压缩,即将部分待处理数据转化为其对应的数据序号进行存储,来有效降低芯片存储量和通信数据量,进而提高芯片的计算效率。
图1为本申请实施例中Equihash算法的数据处理装置的组成结构示意图,如图1所示,至少包括:预处理模块、Blake计算模块、碰撞处理模块、存储处理模块;其中,
预处理模块,用于根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处理数据为对应所述Equihash算法的计算轮数中的指定计算轮数的数据序号或对于Equihash算法的计算轮数中的剩余计算轮数的中间数据;
多个Blake计算模块,用于对预先确定的区块链交易数据、随机数nonce以及预处理模块输出的数据序号进行Blake计算得到计算结果;
多个碰撞处理模块,用于对来自Blake计算模块的计算结果进行碰撞计算,或者对来自预处理模块的中间数据进行碰撞计算,或者对来自上一级碰撞处理后的结果进行碰撞计算;
存储处理模块,用于根据Equihash算法的计算轮数分别计算存储地址,对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。
在一种示例性实例中,数据序号可以包括:单个数据序号,和/或由多个如2个或4个数据序号组成的数据序号组合;中间数据可以包括碰撞计算结果。
在一种示例性实例中,对于Equihash(n,k)算法,数据序号为初始化生成数据时,根据(比如:对于Equihash(200,9)算法包括0~(-1))的序号逐步增1由Blake 2b生成的对应200bit数据的序号。
本申请实施例提供的Equihash算法的数据处理装置,通过将部分待处理数据转化为其对应的数据序号进行存储,有效降低了芯片存储容量和通信数据量,进而提高了芯片的计算效率。
在一种示例性实例中,Blake计算模块可以包括但不限于如:Blake 2b数据生成器等。
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可以在多个计算核心上并行运行,而此时的运行效率将是串行运行的八倍。
在一种示例性实例中,碰撞处理模块可以包括但不限于如:位异或计算器。
在一种示例性实例中,预处理模块可以用于:
根据Equihash算法的计算轮数,当计算轮数为对应Equihash算法的计算轮数中的指定计算轮数时,选择将读取的数据序号输出给Blake计算模块实时对数据序号进行计算以将数据序号还原为对应的中间数据,或者,当计算轮数为对应Equihash算法的计算轮数中的除指定计算轮数之外的剩余计算轮数时,直接将读取的中间数据输出给碰撞处理模块。
在一种示例性实例中, Equihash(200,9)算法中,是针对个数(每个数200bit),从中找到个数,这些数的异或结果为0,因此,当Equihash算法为Equihash(200,9)时,指定计算轮数可以包括:初始轮数、第一计算轮数、第二计算轮数、第三计算轮数。
在一种示例性实例中, Equihash(144,5)算法中,是针对个数(每个数144bit),从中找到个数,这些数的异或结果为0,因此,当Equihash算法为Equihash(144,5)时,指定计算轮数可以包括:初始轮数、第一计算轮数、第二计算轮数。
需要说明的时是,对于Equihash(n,k)算法,本申请中的计算轮数从初始轮数开始,然后是第一计算轮数、第二计算轮数…第(k-1)计算轮数。初始化轮参与Blake计算时使用的数据序号,是由0到轮流增1生成的数据序号。
在一种示例性实例中,预处理模块还用于:
存储有根据200bit中间数据的低20bit分类后存储的200bit中间数据对应的21bit数据序号。
在一种示例性实例中,以Equihash算法为Equihash(200,9)为例,预处理模块具体可以用于:
Equihash算法的计算轮数为第一轮数,从存储器中读取1个21bit数据序号,将读取的21bit数据序号输出给一个Blake计算模块(如Blake 2b数据生成器)以进行数据计算,还原得到200bit生成数据;
Equihash算法的计算轮数为第二轮数,从存储器中读取2个21bit数据序号,并将读取的2个21bit数据序号分别输出给两个Blake计算模块(如Blake 2b数据生成器)以进行数据计算,还原得到中间数据;
Equihash算法的计算轮数为第三轮数,从存储器中读取4个21bit数据序号,将读取的4个21bit数据序号分别输出给四个Blake计算模块(如Blake 2b数据生成器)以进行数据计算,还原得到中间数据;
Equihash算法的计算轮数为第四轮数至第八轮数,从存储器中读取中间数据,并将读取的中间数据输出给碰撞处理模块。
在一种示例性实例中,Blake计算模块为Blake 2b数据生成器,用于根据预先确定的外部传入的区块链交易数据、随机数nonce以及预处理模块输出的数据序号,计算得到对应的200bit有效信息,具体可以包括:
对来自预处理模块输出的21bit位宽(0x000000~0x1fffff)的数据序号中的的高20bit数据(即1~20bit)、外部传入的区块链交易数据和随机数nonce进行Blake 2b算法计算,得到400bit计算结果;
根据预处理模块输出的数据序号的最低位对得到400bit计算结果进行选择,当该位为0时,选择400bit计算结果的低200bit结果作为Blake计算模块的200bit计算结果输出,当该位为1时,选择400bit计算结果的高200bit结果作为Blake计算模块的200bit计算结果输出。
在一种示例性实例中,以Equihash算法为Equihash(200,9)为例,存储处理模块具体用于:
初始化阶段即初始化数据存储,根据Blake 2b数据生成器计算得到200bit计算结果的0~19bit计算存储地址,将其对应的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之后的中间数据写入存储器。
需要说明的是,对于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中间数据)。
本申请实施例提供的Equihash算法的数据处理装置中,在初始化数据存储,根据Blake计算得到的200bit中间数据的低20bit(0~19bit)分类存储200bit中间数据对应的21bit数据序号。本申请实施例中存储的是Blake计算得到的数据对应的数据序号,而不是存储Blake计算得到的数据的高180bit以及数据序号,因此,本申请实施例的相关内容存储数据量由200bit下降为了21bit,降低了存储量。
图2为本申请实施例中Equihash(200,9)算法的数据处理装置的实施例的组成结构示意图,如图2所示,本实施例以Equihash算法为Equihash(200,9)为例,Blake计算模块包括8个Blake 2b数据生成器,碰撞处理模块包括7个位异或计算器。
在本实施例中,初始化阶段(即图2中的初始轮),原始数据序号即按照数据生成顺序(0~(-1))对应的21bit数据序号,经过第一Blake 2b数据生成器计算还原为其对应的中间数据后输出给数据编码模块;Equihash算法的计算轮数为第一轮数即第1轮中,从存储器中读取1个21bit数据序号,将读取的数据序号输出给第一Blake 2b数据生成器以进行数据计算得到计算结果,从存储器中读取另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轮中,将从存储器中读取的中间数据,中间数据输出给第七位异或计算器运算后输出给数据编码模块。
对于存储处理模块,初始化阶段,根据读出的待处理数据的低20bit分类存储200bit数据对应的21bit序号。
初始化阶段即初始化数据存储,根据Blake 2b数据生成器计算得到200bit计算结果的0~19bit计算存储地址,将其对应的一个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之后的中间数据写入存储器。
本申请实施例还提供一种Equihash算法的数据处理方法,包括:
步骤300:根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处理数据为对应所述Equihash算法的计算轮数中的指定计算轮数的数据序号或对于Equihash算法的计算轮数中的剩余计算轮数的中间数据。
在一种示例性实例中,数据序号可以包括:单个数据序号、由两个或4个数据序号组成的数据序号组合;中间数据可以包括中间碰撞结果。
在一种示例性实例中,本步骤可以包括:
根据Equihash算法的计算轮数,当计算轮数为对应Equihash算法的计算轮数中的指定计算轮数时,选择实时对读取的数据序号进行Blake计算以将数据序号还原为对应的中间数据,或者,当计算轮数为对应Equihash算法的计算轮数中的除指定计算轮数之外的剩余计算轮数时,直接对读取的中间数据进行碰撞计算。
在一种示例性实例中,以Equihash算法为Equihash(200,9)为例,步骤300可以包括:
Equihash算法的计算轮数为第一轮数,从存储器中读取1个21bit数据序号,选择对读取的数据序号进行Blake计算,还原得到200bit生成数据;
Equihash算法的计算轮数为第二轮数,从存储器中读取2个21bit数据序号,选择对读取的数据序号进行Blake计算,还原得到中间数据;
Equihash算法的计算轮数为第三轮数,从存储器中读取4个21bit数据序号,选择对读取的数据序号进行Blake计算,还原得到中间数据;
Equihash算法的计算轮数为第四轮数至第八轮数,从存储器中读取中间数据,选择对读取的中间数据进行碰撞处理。
步骤301:对预先确定的区块链交易数据、随机数nonce以及读出的数据序号进行Blake计算得到计算结果。
在一种示例性实例中,本步骤可以包括:
根据21bit位宽(0x000000~0x1fffff)的数据序号中的1~20bit、外部传入的区块链交易数据和随机数nonce进行Blake计算,得到400bit计算结果;
根据21bit位宽数据序号的最低位对得到400bit计算结果进行选择,当该位为0时,选择400bit计算结果的低200bit结果作为Blake计算的200bit计算结果输出,当该位为1时,选择400bit计算结果的高200bit结果作为Blake计算的200bit计算结果输出。
步骤302:对得到的计算结果进行碰撞计算或对中间数据进行碰撞计算。
在一种示例性实例中,本步骤是对Blake计算结果两两进行位异或计算,或者对上一级两次位异或处理后的结果再次进行位异或计算,或者对读取的中间数据进行位异或处理。
步骤303:根据Equihash算法的计算轮数分别计算存储地址,对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。
在一种示例性实例中,数据序号可以包括:单个数据序号、由两个或4个数据序号组成的数据序号组合;中间数据可以包括中间碰撞结果。
在一种示例性实例中,以Equihash算法为Equihash(200,9)为例,步骤303可以包括:
初始化阶段即初始化数据存储,根据Blake 2b数据生成器计算得到200bit计算结果的0~19bit计算存储地址,将其对应的21bit数据序号写入存储器;
Equihash算法的计算轮数为第一轮数,根据Blake 2b数据生成器计算得到的200bit计算结果进行碰撞计算的结果的20~39bit计算存储地址,将参与碰撞计算的两个21bit数据序号写入存储器;
Equihash算法的计算轮数为第二轮数,根据Blake 2b数据生成器计算得到的200bit计算结果进行碰撞计算的结果的40~59bit计算存储地址,将参与碰撞计算的四个21bit数据序号写入存储器;
Equihash算法的计算轮数为第三轮数,根据2b数据生成器计算得到的200bit计算结果进行碰撞计算结果的60~79bit计算存储地址,将碰撞计算的结果的80~199bit中间数据写入存储器;
Equihash算法的计算轮数为第四轮数至第八轮数,针对每一轮,根据上一轮存入的中间数据进行碰撞计算,并根据Blake 2b数据生成器计算得到的200bit计算结果进行碰撞计算结果的后续20bit计算存储地址,将本轮碰撞计算的结果中后续20bit之后的中间数据写入存储器。
以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中间数据。
本申请实施例提供的Equihash算法的数据处理方法中,在初始化数据存储,根据Blake计算得到的200bit中间数据的低20bit(0~19bit)分类存储200bit中间数据对应的21bit数据序号。
本申请实施例中存储的是Blake计算得到的数据对应的数据序号,而不是存储Blake计算得到的数据的高180bit以及数据序号,因此,本申请实施例的相关内容存储数据量由200bit下降为了21bit,降低了存储量。
本申请实施例提供的Equihash算法的数据处理方法中,首次碰撞时,一次读取1个21bit数据序号,对读取的两个21bit数据序号分别进行Blake计算,将两个计算结果的20~200bit进行异或计算得到首次碰撞结果,并根据计算结果的20~39bit数值进行分类存储,存储的内容包括首次碰撞的两个原始数据对应的21bit数据序号。
本申请实施例中,首次碰撞的存储数据量由160bit变为了42bit,降低了存储量。
本申请实施例提供的Equihash算法的数据处理方法中,第二次碰撞时,一次读取2个21bit数据序号,对每次读取的2个21bit数据序号分别进行Blake计算,计算得到的两个数据结果的40~200bit结果进行异或计算得到中间数据,再将两次的中间数据进行碰撞得到二次碰撞结果,并根据计算结果的40~59bit数据进行分类存储,存储的内容包括二次碰撞的四个原始数据对应的21bit数据序号。
本申请实施例中,二次碰撞的存储数据量由140bit变为了84bit,降低了存储量。
本申请实施例提供的Equihash算法的数据处理方法中,第三次碰撞时,一次读取4个21bit数据序号,对每次读取的2个21bit数据序号分别进行Blake计算,计算得到的四个数据结果的60~200bit结果分别进行两次异或计算得到中间数据,再将两次的中间数据进行碰撞得到三次碰撞结果,并根据计算结果的60~79bit数据进行分类存储,存储的内容包括碰撞中间结果的80bit~199bit。
本申请实施例提供的Equihash算法的数据处理方法中,第四次至第八次碰撞时,将读取的中间数据直接进行碰撞计算,并根据后续的20bit数据进行分类存储,存储的内容包括碰撞中间结果。
本申请实施例提供的Equihash算法的数据处理方法,通过将部分待处理数据转化为其对应的数据序号进行存储,有效降低了芯片存储容量和通信数据量,进而提高了芯片的计算效率。
虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (11)
1.一种Equihash算法的数据处理装置,包括:预处理模块、Blake计算模块、碰撞处理模块、存储处理模块;其中,
预处理模块,用于根据Equihash算法的计算轮数从存储器中读出待处理数据,其中,待处理数据为对应Equihash算法的计算轮数中的指定计算轮数的数据序号或对应Equihash算法的计算轮数中的剩余计算轮数的中间数据;
多个Blake计算模块,用于对预先确定的区块链交易数据、随机数nonce以及预处理模块输出的数据序号进行Blake计算得到计算结果;
多个碰撞处理模块,用于对来自Blake计算模块的计算结果进行碰撞计算,或者对来自预处理模块的中间数据进行碰撞计算,或者对来自上一级碰撞处理后的结果进行碰撞计算;
存储处理模块,用于根据Equihash算法的计算轮数分别计算存储地址,按照存储地址,对应Equihash算法的计算轮数中的指定计算轮数存储参与Blake计算的数据序号、或对应Equihash算法的计算轮数中的剩余计算轮数存储碰撞计算得到的中间数据。
2.根据权利要求1所述的数据处理装置,其中,所述预处理模块用于:
根据所述Equihash算法的计算轮数,当计算轮数为所述对应Equihash算法的计算轮数中的指定计算轮数时,将读取的数据序号输出给所述Blake计算模块实时对数据序号进行计算以将数据序号还原为对应的中间数据;当计算轮数为所述对应Equihash算法的计算轮数中的除指定计算轮数之外的剩余计算轮数时,将读取的中间数据输出给所述碰撞处理模块。
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计算模块用于:
对来自所述预处理模块输出的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)算法;所述指定计算轮数包括:初始轮数、第一计算轮数、第二计算轮数、第三计算轮数;
当所述计算轮数为指定计算轮数时,所述读出待处理数据包括:
所述Equihash算法的计算轮数为第一轮数,读取1个21bit数据序号以进行所述Blake计算;所述Equihash算法的计算轮数为第二轮数,读取2个21bit数据序号以进行所述Blake计算;所述Equihash算法的计算轮数为第三轮数,读取4个21bit数据序号以进行所述Blake计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111279405.XA CN113721888B (zh) | 2021-11-01 | 2021-11-01 | 一种Equihash算法的数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111279405.XA CN113721888B (zh) | 2021-11-01 | 2021-11-01 | 一种Equihash算法的数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113721888A CN113721888A (zh) | 2021-11-30 |
CN113721888B true CN113721888B (zh) | 2022-01-25 |
Family
ID=78686234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111279405.XA Active CN113721888B (zh) | 2021-11-01 | 2021-11-01 | 一种Equihash算法的数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113721888B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733163A (zh) * | 2021-01-04 | 2021-04-30 | 北京航空航天大学 | 基于离散对数相等性证明的可监管零知识证明方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9100184B2 (en) * | 2011-12-22 | 2015-08-04 | Intel Corporation | Instructions processors, methods, and systems to process BLAKE secure hashing algorithm |
WO2017079652A1 (en) * | 2015-11-05 | 2017-05-11 | Pulsifer Allen | Cryptographic transactions system |
CN110109913B (zh) * | 2018-01-15 | 2021-05-04 | 北京比特大陆科技有限公司 | 一种zerocash挖矿算法的硬件实现方法及装置 |
US11349639B2 (en) * | 2018-12-28 | 2022-05-31 | ePIC Blockchain Technologies Inc. | Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms |
CN110109926B (zh) * | 2019-04-25 | 2021-03-16 | 杭州德旺信息技术有限公司 | 一种Equihash算法数据的排序装置和排序方法 |
-
2021
- 2021-11-01 CN CN202111279405.XA patent/CN113721888B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112733163A (zh) * | 2021-01-04 | 2021-04-30 | 北京航空航天大学 | 基于离散对数相等性证明的可监管零知识证明方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113721888A (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11750400B2 (en) | Blockchain post-quantum signature scheme | |
US11770262B2 (en) | Odd index precomputation for authentication path computation | |
CN111698094B (zh) | 一种基于区块链系统的共识方法及区块链系统 | |
CN112152786A (zh) | 无签名扩展的快速xmss签名验证和临时数采样过程 | |
CN110109926B (zh) | 一种Equihash算法数据的排序装置和排序方法 | |
CN112464296B (zh) | 一种用于同态加密技术的大整数乘法器硬件电路 | |
CN107579811A (zh) | 一种基于sm3密码杂凑算法的硬件优化方法 | |
CN101296079A (zh) | 基于嵌入式混沌映射的单向散列函数的构造方法和系统 | |
CN112152784A (zh) | 用于基于散列的签名算法的并行处理技术 | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
CN110543291A (zh) | 有限域大整数乘法器及基于ssa算法的大整数乘法的实现方法 | |
CN112491560A (zh) | 一种支持批验证的sm2数字签名方法及介质 | |
CN102546293B (zh) | 基于哈希比特串复用的高速网络流量网络地址测量方法 | |
CN113721888B (zh) | 一种Equihash算法的数据处理方法及装置 | |
Abdelrahman et al. | Analysis on the aes implementation with various granularities on different gpu architectures | |
CN115765975B (zh) | Sha-256算法的低功耗实现方法、芯片、服务器及存储介质 | |
CN111460364A (zh) | 使用退火解决多元二次问题的方法、可读存储介质及系统 | |
Kahri et al. | An FPGA implementation of the SHA-3: The BLAKE hash function | |
CN106301764B (zh) | 基于路径散列的消息摘要方法和系统 | |
US11658807B2 (en) | Circuit for performing hash algorithm, computing chip, data processing device and method | |
CN107566123A (zh) | Pptp vpn口令校验方法及计算机可读存储介质 | |
CN112988235A (zh) | 一种高效率第三代安全散列算法的硬件实现电路及方法 | |
CN113721986A (zh) | 一种数据压缩方法、装置及电子设备和存储介质 | |
CN113505383A (zh) | 一种ecdsa算法执行系统及方法 | |
Tanygin et al. | The Method for Reducing Memory Costs for Messages Processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240308 Address after: 10 Jialeng Road, Singapore # 09-11 Patentee after: Shenglong (Singapore) Pte. Ltd. Country or region after: Singapore Address before: 1605, floor 16, No. 9, North Fourth Ring West Road, Haidian District, Beijing 100080 Patentee before: SUNLUNE TECHNOLOGY DEVELOPMENT (BEIJING) Co.,Ltd. Country or region before: China |