CN113704362A - 一种实现Equihash算法的芯片及方法 - Google Patents

一种实现Equihash算法的芯片及方法 Download PDF

Info

Publication number
CN113704362A
CN113704362A CN202111279378.6A CN202111279378A CN113704362A CN 113704362 A CN113704362 A CN 113704362A CN 202111279378 A CN202111279378 A CN 202111279378A CN 113704362 A CN113704362 A CN 113704362A
Authority
CN
China
Prior art keywords
memory
round
nonce
ping
sequence number
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.)
Pending
Application number
CN202111279378.6A
Other languages
English (en)
Inventor
刘明
汪福全
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenglong Singapore Pte Ltd
Original Assignee
Sunlune Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sunlune Technology Beijing Co Ltd filed Critical Sunlune Technology Beijing Co Ltd
Priority to CN202111279378.6A priority Critical patent/CN113704362A/zh
Publication of CN113704362A publication Critical patent/CN113704362A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/16Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Read Only Memory (AREA)

Abstract

一种实现Equihash算法的芯片及方法;所述芯片包括:pingpong结构数据存储器,包括ping存储器和pong存储器;处理模块,用于在对每个nonce进行处理的过程中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号;第一存储器为ping存储器,第二存储器为pong存储器;或第一存储器为pong存储器,第二存储器为ping存储器;本申请实施例可以使得Equihash算法按照流水线方式实现,提高了Equihash算法的处理效率。

Description

一种实现Equihash算法的芯片及方法
技术领域
本文涉及加密算法与芯片设计领域,尤其涉及一种实现Equihash算法的芯片及方法。
背景技术
区块链作为一个共享数据库,存储于其中的数据或信息,具有“不可伪造”、“全程留痕”、“可以追溯”、“公开透明”、“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。Equihash算法是由卢森堡大学的安全、可靠性和信任跨学科中心(SnT)开发的一种以内存为导向的应用于区块链中的工作证明算法,其理论依据是一个著名的计算法科学及密码学问题:广义生日悖论问题;Equihash算法的实现过程是先构造输入条件,即区块链中当前最后一个区块的区块头和各项参数,然后将输入条件转化成广义生日悖论问题的一般形式,解析该问题并对获得的解进行难度判断,同时满足算法条件和难度条件则判定求解成功,完成工作证明,生成新的区块;否则调整参数重新运算。
Equihash(n,k)算法具有其鲜明特点:它一方面是记忆性的,另一方面很容易验证。广义生日悖论就是在N个n比特的数据样本中找到2k个碰撞的数据样本,数据样本数目N=2n/(k+1)+1,数据样本X1 ..N由区块头block header和nonce产生;其中nonce是一个只被使用一次的任意或非重复的随机数值。
在一个示例中,block header包括4个字节的区块版本号nVersion,它指示遵从哪个区块验证规则;32字节的hashPrevBlock,它表示前一区块的区块头block header;32字节的 hashMerkleRoot,该字段允许调整,通过对包含进区块的交易进行增删,或改变顺序,或者修改Coinbase交易的输入字段而产生变化;32字节的hashReserved,这是保留字段;4个字节的nTime,一般取机器开始哈希header时候的Unix时间戳;4个字节的nBits,它由全网算力决定,每产生一个新块都调整一次难度;32个字节的nNonce,提供2256种可能取值,通过改变nNonce来改变block header以最终产生一个小于或等于目标target的哈希。所以hashMerkleRoot和nNonce是发挥自由度的两个字段。
一个有效的Equihash解应该满足下列条件: A:广义生日悖论条件即2k个样本异或结果为0;B:对于第r轮(0<r<k)2k个数据样本按字典顺序排列后每2r个样本数据异或后有rn/(k +1)个导0(leading zeros)。
为了找到有效的Equihash解,一般采用Wagner算法:在产生N个Xi后,对Xi进行排序,找到所有第一个n/(k+1)比特碰撞的Xi、Xj,然后保存他们之间的异或结果Xij;接着对所有Xij排序,找到下一个n/(k+1)碰撞的Xij、Xmn;重复上述过程共k-1轮,直到只有2n/(k+1)比特没有碰撞。最后一步,找到最后2n/(k+1)比特碰撞的结果X,即最终Equihash的解。
以Equihash(200,9)算法计算过程为例,N=221;对于每个nonce,分为初始化轮、 8轮中间轮以及最终轮,共10轮计算过程。如图1所示,包括如下步骤101-105:
其中101-102为初始化轮,101、算法根据外部传输来的若干字节的数据,通过blake 2B数据生成器模块计算得到221个200bit的原始数据;102、根据原始数据的低20bit对原始数据进行分类后按照一定规律存储在存储器中,作为第1轮中间轮使用的中间数据和中间序号。
103-104共进行8轮,对应于8轮中间轮,这8轮中间轮的计算特点类似;103、先将上一轮存储的数据全部或部分读取出来,并将数据中的中间序号顺序存储,根据分类结果对所读取的数据中的同类数据进行异或计算,以生成本轮的中间数据和中间序号;104、根据作为计算结果的中间数据的次20bit,对该中间数据进行分类,将分类后的中间数据以及中间序号存储在存储器中。如果不是第8轮中间轮则104执行完毕后返回103,如果是第8轮则104执行完毕后进行105。
105为最终轮,先将上一轮(即第8中间轮)存储的中间数据全部或部分读取出来,根据分类结果对同类数据进行异或计算,如果计算结果等于二进制全0,则按照一定规律读取8个中间轮保存的中间序号以产生需要寻找的满足要求的数据组合,直到所有数据全部读取完毕。
其它Equihash算法的计算过程类似,仅仅是计算过程中根据n、k而定的参数会发生变化,比如对于Equihash(144, 5)算法,N=25,是先产生225个原始数据,进行4轮中间轮,依据24bit进行分类。
Equihash算法的计算速度将会影响到区块链中新区块的产生速度,目前,如何提高Equihash算法的计算速度是一个有待研究的问题。
发明内容
以下是对本申请详细描述的主题的概述。本概述并非是为了限制保护范围。
本申请提供了一种实现Equihash算法的芯片及方法,通过硬件上的改进,能够提高Equihash算法的处理速度。
一方面,本申请提供了一种实现Equihash算法的芯片,包括:
pingpong结构数据存储器,包括ping存储器和pong存储器;
处理模块,用于在对每个nonce进行处理的过程中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号;
其中,所述第一存储器为ping存储器,所述第二存储器为pong存储器;或者,所述第一存储器为pong存储器,所述第二存储器为ping存储器。
可选地,所述芯片还包括:
选择器,用于根据预设的处理参数选择所述ping存储器和所述pong存储器中的一个为所述第一存储器,另一个为所述第二存储器;
其中,相邻的两个nonce的所述第一存储器和所述第二存储器均不同。
可选地,所述处理模块还用于当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮;N≥1。
可选地,所述处理模块当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮包括:
所述处理模块当针对nonce N的最终轮使用所述ping存储器进行读取时,同时开启对nonce N+1的初始化轮,使用所述pong存储器进行初始化轮的存储;或者,当针对nonceN的最终轮使用所述pong存储器进行读取时,同时开启对nonce N+1的初始化轮,使用所述ping存储器进行初始化轮的存储。
可选地,所述预设的处理参数为nonce序号;
所述选择器根据预设的处理参数选择所述ping存储器和所述pong存储器中的一个为所述第一存储器,另一个为所述第二存储器包括:
所述选择器当所述nonce序号是奇数时选择所述ping存储器作为所述第一存储器,所述pong存储器作为所述第二存储器;当所述nonce序号是偶数时选择所述pong存储器作为所述第一存储器,所述ping存储器作为所述第二存储器;
或者,所述选择器当所述nonce序号是奇数时选择所述pong存储器作为所述第一存储器,所述ping存储器作为所述第二存储器;当所述nonce序号是偶数时选择所述ping存储器作为所述第一存储器,所述pong存储器作为所述第二存储器。
可选地,所述选择器包括数据读取路径选择器和数据存储路径选择器;
所述数据读取路径选择器用于在所述处理模块读取上一轮产生的中间数据和中间序号时,根据预设的处理参数在所述ping存储器和所述pong存储器中选择一个,作为读存储器;
所述数据存储路径选择器用于在所述处理模块存储本轮产生的中间数据和中间序号时,根据预设的处理参数在所述ping存储器和所述pong存储器中选择一个,作为存储本轮产生的中间数据和中间序号的第一写存储器;以及用于在所述处理模块读取上一轮产生的中间数据和中间序号后,根据预设的处理参数在所述ping存储器和所述pong存储器中选择一个,作为顺序存储所读取的中间序号的第二写存储器;
其中,对于相邻的两个nonce,前一个nonce的最终轮选择的读存储器,和后一个nonce的初始化轮选择的第一写存储器为不同的存储器。
另一方面,本申请还提供了一种实现Equihash算法的方法,应用在上述的实现Equihash算法的芯片中;所述方法包括:
对nonce进行处理;在处理每个nonce的过程中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号;
其中,所述第一存储器为ping存储器,所述第二存储器为pong存储器;或者,所述第一存储器为pong存储器,所述第二存储器为ping存储器。
可选地,所述的方法还包括:
根据预设的处理参数确定所述第一存储器和所述第二存储器;
其中,相邻的两个nonce的所述第一存储器和所述第二存储器均不同。
可选地,所述的方法还包括:
当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮;N≥1。
可选地,所述预设的处理参数为nonce序号;
所述当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮包括:
当针对nonce N的最终轮使用所述ping存储器进行读取时,同时开启对nonce N+1的初始化轮,使用所述pong存储器进行初始化轮的存储;或者,当针对nonce N的最终轮使用所述pong存储器进行读取时,同时开启对nonce N+1的初始化轮,使用所述ping存储器进行初始化轮的存储。
与相关技术相比,本申请实施例巧妙的应用pingpong结构存储器来实现Equihash算法,在一个nonce的处理过程中,交替使用pingpong结构存储器中的不同存储器,提高了Equihash算法的处理效率,使得Equihash算法可以按照流水线方式实现。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1是Equihash(200, 9)算法的实现过程示意图;
图2是本申请实施例提供的实现Equihash算法的芯片的示意图;
图3是本申请示例性实施例提供的实现Equihash算法的芯片的示意图;
图4是示例一中Equihash(200, 9)算法实现过程中数据存储的示意图;
图5是示例二中Equihash(200, 9)算法实现过程中数据存储的示意图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。此外,可以在保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为限制。此外,针对该方法和/或过程的方案不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
另外,在本申请中如涉及“第一”、“第二”等的描述仅用于描述中进行区分,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
本申请实施例提供了一种实现Equihash算法的芯片,能够以流水线的方式实现Equihash算法,提高Equihash算法的计算效率,进而提升区块链系统中区块的生成速度。
本实施例的芯片如图2所示,包括:
pingpong结构数据存储器21,包括ping存储器211和pong存储器212;
处理模块22,用于在对每个nonce进行处理的过程中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号
其中,第一存储器为ping存储器211,第二存储器为pong存储器212;或者,第一存储器为pong存储器212,第二存储器为ping存储器211。
本实施例在一个nonce的处理过程中,交替使用pingpong结构存储器中的不同存储器,提高了Equihash算法的处理效率,使得Equihash算法可以按照流水线方式实现。本实施例进而对于使用Equihash算法的区块链系统,可以提高新区块的生成效率。
本实施例中使用了pingpong结构数据存储器21,在每一个存储器可以提供一个读端口一个写端口的前提下,利用pingpong结构,可同时提供一个读端口,用于读取上一轮产生的中间数据和中间序号,两个写端口,其中一个写端口和读取上一轮数据的读端口在一个存储器上,用于顺序存储所读取的中间序号,另一个写端口可以用于存储本轮产生的中间数据和中间序号。
本实施例所提供的实现Equihash算法的芯片比如可以但不限于采用ASIC(Application Specific Integrated Circuit,专用集成电路)芯片。
本实施例巧妙的应用pingpong结构存储器来实现Equihash算法,将算法中每个中间轮的处理过程划分为读写(读取上一轮生成的中间数据和中间序号,以及顺序写入读取的中间序号)和写(写入本轮生成的中间数据和中间序号)两个部分,并分别访问pingpong结构存储器中的不同存储器,这样可以并行的写入所读取的中间序号、以及写入本轮生成的中间数据和中间序号,两个写入过程隔离,不会互相影响,提高了中间轮的处理效率;而相邻的中间轮里,存储中间数据和中间序号时交替使用不同的存储器(本轮存储采用ping存储器,上一轮/下一轮存储是采用pong存储器;或本轮存储采用pong存储器,上一轮/下一轮存储是采用ping存储器),相应的,读取上一轮生成的数据时也将交替使用不同的存储器(上一轮存储所生成的数据的存储器,即这一轮读取所使用的存储器),这样可以确保上一轮生成的中间数据和中间序号,在本轮可以直接读取到,而不用变更存储器,实现起来更加快捷。
一个示例性实施例中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号可以包括:
进行初始化轮,将生成的数据存储在第一存储器中;
交替进行中间轮的奇数轮和偶数轮,奇数轮从第一存储器中读取上一轮生成的中间数据和中间序号,将中间序号顺序保存在第一存储器中,将本轮生成的中间数据和中间序号存储在第二存储器中;偶数轮从第二存储器中读取上一轮生成的中间数据和中间序号,将中间序号顺序保存在第二存储器中,将本轮生成的中间数据和中间序号存储在第一存储器中;
中间轮进行完毕后,从第一存储器中读取最后一个中间轮生成的数据进行最终轮的处理。
一个示例性实施例中,实现Equihash算法的芯片还可以包括:
选择器,用于根据预设的处理参数选择ping存储器和pong存储器中的一个为第一存储器,另一个为第二存储器;
其中,相邻的两个nonce的第一存储器不同(比如nonce N的第一存储器是ping存储器,nonce N+1的第一存储器是pong存储器;或nonce N的第一存储器是pong存储器,nonce N+1的第一存储器是ping存储器);相应的,第二存储器也会不同。
本实施例中,由于相邻nonce的最终轮和初始化轮使用的是不同的存储器,因此相邻nonce的最终轮和初始化轮在处理时间上可以全部或部分重叠,从而可以加快处理速度。
本实施例的一种实施方式中,处理模块22还可以用于当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮;N≥1。
本实施方式包括两种情况:
情况1、当针对nonce N的最终轮使用ping存储器211进行读取时,同时开启对nonce N+1的初始化轮,使用pong存储器212进行初始化轮的存储。
情况2、当针对nonce N的最终轮使用pong存储器212进行读取时,同时开启对nonce N+1的初始化轮,使用ping存储器211进行初始化轮的存储。
本实施方式中,处理模块22可并行的进行上一个nonce的最终轮与下一个nonce的初始化轮,分别访问不同的存储器,如上一个nonce的最终轮使用ping存储器进行中间数据的读取的同时,下一个nonce的初始化轮已开始工作并将数据写入pong存储器,或者上一个nonce的最终轮使用存储器pong进行中间数据的读取的同时,下一个nonce的初始化轮已开始工作并将分类后的数据写入存储器ping。这样相邻两个nonce的最终轮和初始化轮可以同时进行,相互隔离,互不影响,这样在流水线式的处理过程基础上增加了复用,成为一种流水线复用的方式。
本实施方式通过对Equihash算法过程的细致观察和研究,发现并巧妙利用了初始化轮只进行数据的存储操作而最终轮只进行数据的读取操作的特点,设计出可以在进行Equihash算法的过程中进行流水线复用的方案,将上一个nonce计算的最终轮与下一个nonce计算的初始化轮时间并行,实现了存储器的最大利用率,提高了计算效率以及逻辑资源使用率。
本实施例的一种实施方式中,预设的处理参数可以为nonce序号;
选择器根据预设的处理参数选择ping存储器和pong存储器中的一个为第一存储器,另一个为第二存储器包括:
选择器当nonce序号是奇数时选择ping存储器作为第一存储器,pong存储器作为第二存储器;当nonce序号是偶数时选择pong存储器作为第一存储器,ping存储器作为第二存储器;
或者,选择器当nonce序号是奇数时选择pong存储器作为第一存储器,ping存储器作为第二存储器;当nonce序号是偶数时选择ping存储器作为第一存储器,pong存储器作为第二存储器。
本实施例的一种实施方式中,Equihash算法的实现装如图3所示,选择器可以包括数据读取路径选择器23和数据存储路径选择器24:
数据读取路径选择器23,用于在处理模块22读取上一轮产生的中间数据和中间序号时,根据预设的处理参数在ping存储器211和pong存储器212中选择一个,作为读存储器;
数据存储路径选择器24,用于在处理模块22存储本轮产生的中间数据和中间序号时,根据预设的处理参数在ping存储器211和pong存储器212中选择一个,作为存储本轮产生的中间数据和中间序号的第一写存储器;以及用于在处理模块22读取上一轮产生的中间数据和中间序号后,根据预设的处理参数在ping存储器211和pong存储器212中选择一个,作为顺序存储所读取的中间序号的第二写存储器;
其中,对于相邻的两个nonce,前一个nonce的最终轮选择的读存储器,和后一个nonce的初始化轮选择的第一写存储器为不同的存储器。
本实施方式中,初始化轮的第一写存储器、最终轮的读存储器、每个奇数中间轮的读存储器和第二写存储器、每个偶数中间轮的第一写存储器为同一个存储器,即第一存储器;每个奇数中间轮的第一写存储器、每个偶数中间轮的读存储器和第二写存储器为同一个存储器,即第二存储器。
本实施方式中,是在每一轮处理的过程中分别选择所使用的存储器。本实施方式的替代方案中,可以在每个nonce开始处理时根据预设的处理参数确定好针对该nonce的第一、第二存储器,这样对于该nonce的各轮处理中不需要再对存储器进行选择,比如确定了某个nonce的第一存储器为ping存储器后,该nonce的初始化轮、最终轮、奇数中间轮的读写、偶数中间轮的写入本轮产生的数据都是使用ping存储器。
本实施方式中,所挑选的预设的处理参数应使得各轮选择的存储器满足以下条件:
(1)同一个中间轮中选择的读存储器和第二写存储器相同,和第一写存储器为不同的存储器;
(2)相邻中间轮所使用的读存储器互不相同;结合条件(1)可知,相邻中间轮使用的第一、第二写存储器也会相应的互不相同;
(3)初始化轮的写存储器、第1轮中间轮的读存储器、第8轮中间轮的写存储器、最终轮的读存储器相同;
(4)相邻nonce初始化轮的写存储器互不相同;结合条件(3)可知,相邻nonce的第1轮中间轮的读存储器、第8轮中间轮的写存储器、最终轮的读存储器也会相应不同。
本实施方式中,可以根据预设的处理参数分别选择读存储器、第一、第二写存储器,也可以先根据预设的处理参数确定这三个存储器中任一个,然后根据条件(1)确定另外两个存储器。比如确定了本中间轮的读存储器为ping存储器后,是向ping存储器顺序写入所读取的中间序号,向pong存储器写入本轮产生的中间数据和中间序号。
本实施方式中,对于初始化轮和最终轮,预设的处理参数可以为当前处理的nonce序号;对于中间轮,预设的处理参数可以为nonce的序号和当前轮次数的总和。
一种情况下,nonce序号为奇数时初始化轮的第一写存储器和最终轮的读存储器为ping存储器;nonce序号为偶数时初始化轮的第一写存储器和最终轮的读存储器为pong存储器。对于中间轮,nonce序号和当前轮次数的总和为偶数时,读存储器和第二写存储器为ping存储器,第一写存储器为pong存储器;总和为奇数时,读存储器和第二写存储器为pong存储器,第一写存储器为ping存储器。
例如,在实现Equihash(200, 9)算法时,对于nonce1,初始化轮和最终轮采用ping存储器;第1、3、5、7中间轮,nonce序号和当前轮次数的总和为偶数,采用ping存储器读写(读取上一轮产生的中间数据和中间序号,顺序写入所读取的中间序号),采用pong存储器写入本轮产生的数据(包括本轮产生的中间数据和中间序号);第2、4、6、8中间轮,nonce序号和当前轮次数的总和为奇数,采用pong存储器读写,采用ping存储器写入本轮产生的数据。相应的,对于nonce2,初始化轮和最终轮采用pong存储器;第1、3、5、7中间轮,nonce序号和当前轮次数的总和为奇数,采用pong存储器读写,采用ping存储器写入本轮产生的数据;第2、4、6、8中间轮,nonce序号和当前轮次数的总和为偶数,采用ping存储器读写,采用pong存储器写入本轮产生的数据。采用其它n、k组合的Equihash的情况可以依此类推,这里不再赘述。
另一种情况下,nonce序号为奇数时初始化轮的第一写存储器和最终轮的读存储器为pong存储器;nonce序号为偶数时初始化轮的第一写存储器和最终轮的读存储器为ping存储器。对于中间轮,nonce序号和当前轮次数的总和为偶数时,读存储器和第二写存储器为pong存储器,第一写存储器为ping存储器;总和为奇数时,读存储器和第二写存储器为ping存储器,第一写存储器为pong存储器。
例如,在实现Equihash(200, 9)算法时,对于nonce1,初始化轮和最终轮采用pong存储器;第1、3、5、7中间轮,nonce序号和当前轮次数的总和为偶数,采用pong存储器读写,采用ping存储器写入本轮产生的数据;第2、4、6、8中间轮,nonce序号和当前轮次数的总和为奇数,采用ping存储器读写,采用pong存储器写入本轮产生的数据。相应的,对于nonce2,初始化轮和最终轮采用ping存储器;第1、3、5、7中间轮,nonce序号和当前轮次数的总和为奇数,采用ping存储器读写,采用pong存储器写入本轮产生的数据;第2、4、6、8中间轮,nonce序号和当前轮次数的总和为偶数,采用pong存储器读写,采用ping存储器写入本轮产生的数据。采用其它n、k组合的Equihash的情况可以依此类推,这里不再赘述。
本申请实施例还提供了一种实现Equihash算法的方法,应用在上述任一实施例提供的实现Equihash算法的芯片中;该方法包括:
对nonce进行处理;在处理每个nonce的过程中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号;
其中,第一存储器为ping存储器,第二存储器为pong存储器;或者,第一存储器为pong存储器,第二存储器为ping存储器。
一种示例性实施例中,在处理每个nonce的过程中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号包括:
进行初始化轮,将生成的数据存储在第一存储器中;
交替进行中间轮的奇数轮和偶数轮,奇数轮从第一存储器中读取上一轮生成的中间数据和中间序号,将中间序号顺序保存在第一存储器中,将本轮生成的中间数据和中间序号存储在第二存储器中;偶数轮从第二存储器中读取上一轮生成的中间数据和中间序号,将中间序号顺序保存在第二存储器中,将本轮生成的中间数据和中间序号存储在第一存储器中;
从第一存储器中读取最后一个中间轮生成的数据进行最终轮的处理。
一种示例性实施例中,实现Equihash算法的方法还可以包括:
根据预设的处理参数确定第一存储器和第二存储器;
其中,相邻的两个nonce的第一存储器和第二存储器均不同。
本实施例的一种实施方式中,实现Equihash的方法还可以包括:
当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮;N≥1。
本实施方式中,可选的,预设的处理参数为nonce序号;
当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮包括:
当针对nonce N的最终轮使用ping存储器进行读取时,同时开启对nonce N+1的初始化轮,使用pong存储器进行初始化轮的存储;或者,当针对nonce N的最终轮使用pong存储器进行读取时,同时开启对nonce N+1的初始化轮,使用ping存储器进行初始化轮的存储。
下面用两个示例说明本申请实施例。以下的两个示例均为实现Equihash(200,9)算法的过程,但本申请实施例的方案并不局限于Equihash(200, 9)算法,对于采用其它n、k组合的Equihash算法均可适用。
示例一
本示例提供了一种Equihash(200, 9)算法的流水线实现方法,本示例中,假设是对连续的两个nonce1与nonce2连续进行计算;本示例中的实现过程分为如下两种情况。
情况1,本情况中,无论对于nonce1还是nonce2,初始化轮的存储和最终轮的读取都是针对ping存储器,奇数的中间轮从ping存储器中读取上一轮生成的中间数据和中间序号;将所读取的中间序号顺序存入ping存储器,将本轮生成的中间数据和中间序号保存进pong存储器;偶数的中间轮从pong存储器中读取上一轮生成的中间数据和中间序号,并将中间序号顺序存入pong存储器,将本轮生成的中间数据和中间序号保存进ping存储器;本情况下Equihash算法实现过程中数据存储的示意图如图4所示。
情况1中,Equihash算法的实现过程包括如下步骤201-208:
201、针对nonce1进行初始化轮,生成的原始数据并进行分类后,作为中间数据存储到ping存储器;然后交替进行步骤202和203。
202、针对nonce1进行中间轮的奇数轮(分别为第1、3、5、7轮),读取ping存储器中的中间数据以及中间序号;将所读取的中间序号顺序存储进ping存储器中,而后根据分类结果对所读取的中间数据中的同类数据进行异或计算,生成本轮的中间数据和中间序号;对所生成的中间数据分类后,和所生成的中间序号一并存储进入pong存储器中。
203、针对nonce1进行中间轮的偶数轮(分别为第2、4、6、8轮),读取pong存储器中的中间数据以及中间序号;将所读取的中间序号顺序存储进pong存储器中,而后根据分类结果对所读取的中间数据中的同类数据进行异或计算,生成本轮的中间数据和中间序号;对所生成的中间数据分类后,和所生成的中间序号一并存储进入ping存储器中;进行第8轮后进行步骤204。
204、针对nonce1进行最终轮,从ping存储器中读取全部或部分中间数据,根据分类结果对所读取的中间数据中的同类数据进行异或计算,如果计算结果为二进制全0则根据中间轮第1-8轮已存入的中间序号产生数据组合,以供进行后续计算。
205-208与201-204一一对应,区别是处理对象从nonce1改为nonce2,其它相同。
情况2,本情况中,无论对于nonce1还是nonce2,初始化轮的存储和最终轮的读取都是针对pong存储器,奇数的中间轮从pong存储器中读取上一轮生成的中间数据和中间序号;将所读取的中间序号顺序存入pong存储器,将本轮生成的中间数据和中间序号保存进ping存储器;偶数的中间轮从ping存储器中读取上一轮生成的中间数据和中间序号,并将中间序号顺序存入ping存储器,将本轮生成的中间数据和中间序号保存进pong存储器供最终轮读取。
情况2中,Equihash算法的实现过程包括如下步骤301-308:
301、针对nonce1进行初始化轮,生成的原始数据并进行分类后,作为中间数据存储到pong存储器;然后交替进行步骤302和303。
302、针对nonce1进行中间轮的奇数轮(分别为第1、3、5、7轮),读取pong存储器中的中间数据以及中间序号;将所读取的中间序号顺序存储进pong存储器中,而后根据分类结果对所读取的中间数据中的同类数据进行异或计算,生成本轮的中间数据和中间序号;对所生成的中间数据分类后,和所生成的中间序号一并存储进入ping存储器中。
303、针对nonce1进行中间轮的偶数轮(分别为第2、4、6、8轮),读取ping存储器中的中间数据以及中间序号;将所读取的中间序号顺序存储进ping存储器中,而后根据分类结果对所读取的中间数据中的同类数据进行异或计算,生成本轮的中间数据和中间序号;对所生成的中间数据分类后,和所生成的中间序号一并存储进入pong存储器中;进行第8轮后进行步骤304。
304、针对nonce1进行最终轮,从pong存储器中读取全部或部分中间数据,根据分类结果对所读取的中间数据中的同类数据进行异或计算,如果计算结果为二进制全0则根据中间轮第1-8轮已存入的中间序号产生数据组合,以供进行后续计算。
305-308与301-304一一对应,区别是处理对象从nonce1改为nonce2,其它相同。
可以看到,在示例一中,无论哪种情况下,nonce1和nonce2对ping存储器和pong存储器的使用方式是相同的,比如初始化轮写入和最终轮读取都是使用相同的存储器(比如都使用ping存储器或pong存储器);再比如中间奇数轮中的读写(读取上一轮数据,将所读取的中间序号顺序写入)都是使用相同的存储器。从图4中也可以看出,nonce2(图4中以斜线填充的方框表示)在不同轮次中、不同操作所访问的存储器,和nonce1(图4中以无填充的方框表示)在不同轮次中、不同操作所访问的存储器完全相同。
示例一中,通过采用ping-pong结构存储器,可以实现Equihash算法的流水线实现方式;由于顺序写入所读取的中间序号的同时,可以并行的对所读取的中间数据进行异或计算以生成本轮的中间数据和中间序号并分类存储,因此加快了处理速度。
示例二
本示例提供了一种Equihash(200, 9)算法的流水线复用实现方法,本示例和示例一的区别在于,本示例中,第N+1个nonce的初始化轮和第N个nonce的最终轮并行执行,N≥1;而且本示例中,每一中间轮所使用的存储器根据nonce的序号和当前的中间轮次数的总和的奇偶决定,初始化轮和最终轮所使用的存储器根据nonce的序号的奇偶决定。
本示例也分为如下两种情况。
情况1中,nonce的序号为奇数时,初始化轮写入的以及最终轮读取的为ping存储器,nonce的序号为偶数时,初始化轮写入的以及最终轮读取的为pong存储器。对于中间轮,nonce序号加当前的中间轮次数的总和为偶数时,比如对于nonce1的奇数中间轮(第1、3、5、7中间轮),或对于nonce2的偶数中间轮(第2、4、6、8中间轮),是采用ping存储器进行读写(读取上一轮的中间数据和中间序号,并将读取的中间序号顺序存储到ping存储器),采用pong存储器进行写(存储本轮生成的中间数据和中间序号);nonce序号加当前的中间轮次数的总和为奇数时,比如对于nonce1的偶数中间轮,或对于nonce2的奇数中间轮,是采用pong存储器进行读写,采用ping存储器进行写。
情况2,是将情况1中奇数/偶数时的情况对调,即:nonce的序号为奇数时,初始化轮写入的以及最终轮读取的为pong存储器,nonce的序号为偶数时,初始化轮写入的以及最终轮读取的为ping存储器。对于中间轮,nonce序号加当前的中间轮次数的总和为奇数时,采用ping存储器进行读写,采用pong存储器进行写;nonce序号加当前的中间轮次数的总和为偶数时,采用pong存储器进行读写,采用ping存储器进行写。
可以看到,在示例二中,无论哪种情况下相邻的两个nonce对ping存储器和pong存储器的使用方式是相反的,序号同为奇数或同为偶数的两个nonce的存储器使用方式相同。比如假设第N个nonce的初始化轮写入和最终轮读取使用ping存储器,则第N-1、N+1个noncepong存储器的初始化轮写入和最终轮读取使用ping存储器;因此,可以并行的进行第N个nonce的最终轮读取和第N+1个nonce的初始化轮写入。
比如图5所示的为本示例中情况1下,对于连续的nonce1、nonce2、nonce3连续进行Equihash算法的过程中,数据存储时所使用的存储器,可以看到,nonce1的处理过程(图5中以无填充的方框表示)和nonce3的处理过程(图5中以网格线填充的方框表示)中,使用ping存储器进行初始化轮的写入和最终轮的读取,而nonce2的处理过程(图5中以斜线填充的方框表示)则使用pong存储器进行初始化轮的写入和最终轮的读取;nonce2的初始化轮写入和nonce1的最终轮读取是并行的,nonce2的最终轮读取和nonce3的初始化轮写入是并行的,并行时由于使用了不同的存储器,因此处理时间可以重叠但互不影响,形成了流水线复用。
对比示例一中的图4和本示例的图5可以发现,图4中nonce1加nonce2的处理过程共需要20轮,每增加一个新的nonce就会增加10轮处理过程;而图5中,nonce1和nonce2的处理过程只需要19轮,加上nonce3则是28轮,即,从第2个nonce开始,每增加一个nonce,只会增加9轮处理过程,因此比示例一更进一步缩短了处理时间。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (10)

1.一种实现Equihash算法的芯片,其特征在于,包括:
pingpong结构数据存储器,包括ping存储器和pong存储器;
处理模块,用于在对每个nonce进行处理的过程中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号;
其中,所述第一存储器为ping存储器,所述第二存储器为pong存储器;或者,所述第一存储器为pong存储器,所述第二存储器为ping存储器。
2.如权利要求1所述的芯片,其特征在于,还包括:
选择器,用于根据预设的处理参数选择所述ping存储器和所述pong存储器中的一个为所述第一存储器,另一个为所述第二存储器;
其中,相邻的两个nonce的所述第一存储器和所述第二存储器均不同。
3.如权利要求2所述的芯片,其特征在于:
所述处理模块还用于当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮;N≥1。
4.如权利要求3所述的芯片,其特征在于,所述处理模块当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮包括:
所述处理模块当针对nonce N的最终轮使用所述ping存储器进行读取时,同时开启对nonce N+1的初始化轮,使用所述pong存储器进行初始化轮的存储;或者,当针对nonce N的最终轮使用所述pong存储器进行读取时,同时开启对nonce N+1的初始化轮,使用所述ping存储器进行初始化轮的存储。
5.如权利要求2所述的芯片,其特征在于:
所述预设的处理参数为nonce序号;
所述选择器根据预设的处理参数选择所述ping存储器和所述pong存储器中的一个为所述第一存储器,另一个为所述第二存储器包括:
所述选择器当所述nonce序号是奇数时选择所述ping存储器作为所述第一存储器,所述pong存储器作为所述第二存储器;当所述nonce序号是偶数时选择所述pong存储器作为所述第一存储器,所述ping存储器作为所述第二存储器;
或者,所述选择器当所述nonce序号是奇数时选择所述pong存储器作为所述第一存储器,所述ping存储器作为所述第二存储器;当所述nonce序号是偶数时选择所述ping存储器作为所述第一存储器,所述pong存储器作为所述第二存储器。
6.如权利要求2所述的芯片,其特征在于,所述选择器包括数据读取路径选择器和数据存储路径选择器;
所述数据读取路径选择器用于在所述处理模块读取上一轮产生的中间数据和中间序号时,根据预设的处理参数在所述ping存储器和所述pong存储器中选择一个,作为读存储器;
所述数据存储路径选择器用于在所述处理模块存储本轮产生的中间数据和中间序号时,根据预设的处理参数在所述ping存储器和所述pong存储器中选择一个,作为存储本轮产生的中间数据和中间序号的第一写存储器;以及用于在所述处理模块读取上一轮产生的中间数据和中间序号后,根据预设的处理参数在所述ping存储器和所述pong存储器中选择一个,作为顺序存储所读取的中间序号的第二写存储器;
其中,对于相邻的两个nonce,前一个nonce的最终轮选择的读存储器,和后一个nonce的初始化轮选择的第一写存储器为不同的存储器。
7.一种实现Equihash算法的方法,其特征在于,应用在如权利要求1-6中任一项所述的实现Equihash算法的芯片中;所述方法包括:
对nonce进行处理;在处理每个nonce的过程中,交替使用第一存储器和第二存储器存储本轮生成的中间数据和中间序号,和/或,使用上一轮存储所使用的存储器读取上一轮生成的中间数据和中间序号,并顺序写入读取的中间序号;
其中,所述第一存储器为ping存储器,所述第二存储器为pong存储器;或者,所述第一存储器为pong存储器,所述第二存储器为ping存储器。
8.如权利要求7所述的方法,其特征在于,还包括:
根据预设的处理参数确定所述第一存储器和所述第二存储器;
其中,相邻的两个nonce的所述第一存储器和所述第二存储器均不同。
9.如权利要求8所述的方法,其特征在于,还包括:
当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮;N≥1。
10.如权利要求9所述的方法,其特征在于,所述预设的处理参数为nonce序号;
所述当进行第N个nonce的最终轮时,并行的进行第N+1个nonce的初始化轮包括:
当针对nonce N的最终轮使用所述ping存储器进行读取时,同时开启对nonce N+1的初始化轮,使用所述pong存储器进行初始化轮的存储;或者,当针对nonce N的最终轮使用所述pong存储器进行读取时,同时开启对nonce N+1的初始化轮,使用所述ping存储器进行初始化轮的存储。
CN202111279378.6A 2021-11-01 2021-11-01 一种实现Equihash算法的芯片及方法 Pending CN113704362A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111279378.6A CN113704362A (zh) 2021-11-01 2021-11-01 一种实现Equihash算法的芯片及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111279378.6A CN113704362A (zh) 2021-11-01 2021-11-01 一种实现Equihash算法的芯片及方法

Publications (1)

Publication Number Publication Date
CN113704362A true CN113704362A (zh) 2021-11-26

Family

ID=78647574

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111279378.6A Pending CN113704362A (zh) 2021-11-01 2021-11-01 一种实现Equihash算法的芯片及方法

Country Status (1)

Country Link
CN (1) CN113704362A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2287034A1 (en) * 1998-12-03 2000-06-03 Lucent Technologies, Inc. A memory operated in a modified ping-pong mode
CN107612891A (zh) * 2017-08-25 2018-01-19 国网辽宁省电力有限公司 一种数据压缩加密电路
CN110109926A (zh) * 2019-04-25 2019-08-09 杭州德旺信息技术有限公司 一种Equihash算法数据的排序装置和排序方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2287034A1 (en) * 1998-12-03 2000-06-03 Lucent Technologies, Inc. A memory operated in a modified ping-pong mode
CN107612891A (zh) * 2017-08-25 2018-01-19 国网辽宁省电力有限公司 一种数据压缩加密电路
CN110109926A (zh) * 2019-04-25 2019-08-09 杭州德旺信息技术有限公司 一种Equihash算法数据的排序装置和排序方法

Similar Documents

Publication Publication Date Title
US20210176072A1 (en) Blockchain post-quantum signature scheme
RU2708358C1 (ru) Криптографическая интегральная схема специального назначения, включающая в себя закодированную в цепи функцию преобразования
US9537653B2 (en) Encryption key generating apparatus and computer program product
US10545865B2 (en) Systems and methods for implementing low-latency lookup circuits using sparse hash functions
US9384145B2 (en) Systems and methods for implementing dynamically configurable perfect hash tables
US8051239B2 (en) Multiple access for parallel turbo decoder
Kumar et al. Segmented hash: an efficient hash table implementation for high performance networking subsystems
US20160112200A1 (en) Cryptographic hashing circuitry having improved scheduling efficiency
CN109691064B (zh) 可抗量子区块链账户系统的扩容方法、装置以及系统
EP2104031A2 (en) Data processing system and data processing method
CN109872161B (zh) 一种加速iota子链交易验证过程的芯片及系统
US20150121034A1 (en) Systems and Methods for Implementing Low-Latency Lookup Circuits Using Multiple Hash Functions
CN110109926B (zh) 一种Equihash算法数据的排序装置和排序方法
CN108959168B (zh) 基于片上内存的sha512全流水电路及其实现方法
US20140337401A1 (en) Data access method and device for parallel fft computation
EP1331552A2 (en) Device and method for calculations based on elliptical curves
US20240022395A1 (en) Encryption processing device and encryption processing method
US7185268B2 (en) Memory system and method for use in trellis-based decoding
CN112561700A (zh) 区块链中交易数据的存储方法、验证方法、及区块链系统
CN114168979A (zh) 一种用于分散式存储系统的数据副本编码方法及存储介质
JP5480828B2 (ja) 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム
CN113704362A (zh) 一种实现Equihash算法的芯片及方法
CN111130562B (zh) Crc并行计算方法及系统
WO2012149775A1 (zh) 数据处理的方法和装置
CN116319827A (zh) 消息广播方法及装置

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
TA01 Transfer of patent application right

Effective date of registration: 20240315

Address after: 10 Jialeng Road, Singapore # 09-11

Applicant 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

Applicant before: SUNLUNE TECHNOLOGY DEVELOPMENT (BEIJING) Co.,Ltd.

Country or region before: China

TA01 Transfer of patent application right