CN108322304B - 工作量证明的计算方法和装置、电子设备、程序和介质 - Google Patents

工作量证明的计算方法和装置、电子设备、程序和介质 Download PDF

Info

Publication number
CN108322304B
CN108322304B CN201810166142.3A CN201810166142A CN108322304B CN 108322304 B CN108322304 B CN 108322304B CN 201810166142 A CN201810166142 A CN 201810166142A CN 108322304 B CN108322304 B CN 108322304B
Authority
CN
China
Prior art keywords
preset
random number
hash
calculation
hash function
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
Application number
CN201810166142.3A
Other languages
English (en)
Other versions
CN108322304A (zh
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.)
Strait deer Co.,Ltd.
Original Assignee
Strait Deer 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 Strait Deer Co ltd filed Critical Strait Deer Co ltd
Priority to CN201810166142.3A priority Critical patent/CN108322304B/zh
Publication of CN108322304A publication Critical patent/CN108322304A/zh
Application granted granted Critical
Publication of CN108322304B publication Critical patent/CN108322304B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种工作量证明的计算方法和装置、电子设备、程序和介质,其中,方法包括:分别基于选取的第一随机数进行多次计算,并将计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据;利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;判断哈希计算的计算结果是否满足预设条件;若不满足预设条件,更换第二随机数的取值,重新开始执行利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算的操作。本发明实施例在保持公平性和鲁棒性的优点的同时,极大地减小了电力的消耗,而且可以复用现存的、具有一定量存储空间的计算设备,从而降低了系统的整体拥有成本。

Description

工作量证明的计算方法和装置、电子设备、程序和介质
技术领域
本发明涉及区块链技术,尤其是一种工作量证明的计算方法和装置、电子设备、程序和介质。
背景技术
在开放的大规模分布式系统当中,工作量证明(Proof-of-work)是一种解决拜占庭将军问题,实现系统一致性的重要机制。它要求参与方付出一定量的计算资源,来证明自己没有恶意对系统进行攻击。工作量证明机制具有公平性、鲁棒性的优点。
在实现本发明的过程中,发明人通过研究发现,目前主流的工作量证明算法都是基于哈希碰撞的计算密集型算法,其至少存在以下问题:计算密集型算法需要消耗大量的电力,为了做到相对节省电力成本,就需要预先付出成本来采购耗电低的专用设备,提高了系统的整体成本。
发明内容
本发明实施例所要解决的一个技术问题是:提供一种工作量证明的计算方法和装置、电子设备、程序和介质。
根据本发明实施例的一个方面,提供的一种工作量证明的计算方法,包括:
分别基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据;
利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;
判断所述哈希计算的计算结果是否满足预设条件;
若所述计算结果满足预设条件,完成工作量证明;
否则,若所述计算结果不满足预设条件,更换所述第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,开始执行所述利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算的操作。
可选地,在本发明上述各方法实施例中,所述形成占用预定空间容量的缓存数据所需的时间,不小于完成一轮工作量证明的时间窗口。
可选地,在本发明上述各方法实施例中,所述数据块为伪随机序列中的元素,所述伪随机序列包括:区块中的全部数据或者其中一部分数据;或者由区块通过预设处理获得的数据中的全部数据或者其中一部分数据。
可选地,在本发明上述各方法实施例中,所述基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据,包括:
基于选取的第一随机数进行计算,并将计算得到的计算结果分别存储在存储器中,形成缓存数据;
判断所述缓存数据占用的空间容量是否达到预设空间容量阈值;
若所述缓存数据占用的空间容量未达到预设空间容量阈值,继续执行所述基于选取的第一随机数进行计算,并将计算得到的计算结果追加到所述存储器的缓存数据中,然后执行所述判断所述缓存数据占用的空间容量是否达到预设空间容量阈值的操作;
若所述缓存数据占用的空间容量达到预设空间容量阈值,执行所述利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算的操作。
可选地,在本发明上述各方法实施例中,所述基于选取的第一随机数进行计算,并将计算得到的计算结果分别存储在存储器中,包括:
分别针对每次选取的第一随机数:采用第一预设算法对选取的第一随机数进行计算,得到填充数字串;以及采用第二预设算法,对按照预设方式选取的输入参数与所述填充数字串进行计算,获得计算结果并存储在存储器中。
可选地,在本发明上述各方法实施例中,所述采用第二预设算法,对输入参数与所述填充数字串进行计算,包括:
对由输入参数与所述填充数字串构成的字符串,采用第一哈希算法进行计算,得到第一整数;对所述第一整数按N取模,获得第一哈希函数的输出结果,并将所述输入参数与所述第一哈希函数的输出结果作为一个对应关系存储在第一哈希函数查找表中;以及对由输入参数与所述填充数字串构成的字符串,采用第二哈希算法进行计算,获得第二哈希函数的输出结果,并将所述输入参数与所述第二哈希函数的输出结果作为一个对应关系存储在第二哈希函数查找表中;所述缓存数据包括:所述第一哈希函数查找表和所述第二哈希函数查找表;
其中,N为大于0的任意整数。
可选地,在本发明上述各方法实施例中,所述第一哈希函数包括:Gf(a)=G(a,a′)=G(a,f-1(N-f(a))),所述第一哈希函数查找表包括各输入参数a与第一哈希函数的输出结果Gf(a)之间的对应关系;
所述第二哈希函数包括:f(a);所述第二哈希函数查找表包括各输入参数a与第二哈希函数的输出结果f(a)之间的对应关系;
其中,a为输入参数。
可选地,在本发明上述各方法实施例中,所述利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算,包括:选取一个第二随机数b作为输入参数;针对本次选取的第二随机数b,基于所述第一哈希函数查找表和所述第二哈希函数查找表,获取满足预设关系的第二随机数b对应的计算结果b';其中,所述预设关系包括:f(b)+f(b')=N;
判断所述哈希计算的计算结果是否满足预设条件,包括:
判断G(b,b')是否满足预设判定函数B规定的判断条件,以及第二随机数b的哈希计算结果是否满足预设难度要求;
若G(b,b')满足预设判定函数B规定的判断条件、且第二随机数b的哈希计算结果满足预设难度要求,则所述第二随机数b的哈希计算的计算结果满足预设条件。
可选地,在本发明上述各方法实施例中,所述G(b,b')满足预设判定函数B规定的判断条件,包括:所述第二随机数b属于预先设定的伪随机序列中的前M个值,其中,M为预设大于0的整数;
所述第二随机数b的哈希计算结果满足预设难度要求,包括:采用第三哈希函数对所述第二随机数b连续进行两次哈希运算得到的哈希计算结果dhash(b)满足预设难度要求。
可选地,在本发明上述各方法实施例中,所述哈希计算结果dhash(b)满足预设难度要求,包括:
所述哈希计算结果dhash(b)中开头的0的数目满足预设要求。
可选地,在本发明上述各方法实施例中,若所述计算结果满足预设条件,还包括:
将所述第一随机数和所述第二随机数作为工作量证明结果上报。
根据本发明实施例的另一个方面,提供的一种工作量证明的计算裝置,包括:
第一计算模块,用于分别基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据;
存储器,用于存储所述缓存数据;
第二计算模块,用于利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;以及现在所述哈希计算的计算结果不满足预设条件时,更换所述第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;
判断模块,用于判断所述哈希计算的计算结果是否满足预设条件;若所述计算结果满足预设条件,完成工作量证明。
可选地,在本发明上述各装置实施例中,所述形成占用预定空间容量的缓存数据所需的时间,不小于完成一轮工作量证明的时间窗口。
可选地,在本发明上述各装置实施例中,所述数据块为伪随机序列中的元素,所述伪随机序列包括:区块中的全部数据或者其中一部分数据;或者由区块通过预设处理获得的数据中的全部数据或者其中一部分数据。
可选地,在本发明上述各装置实施例中,所述第一计算模块具体用于:
基于选取的第一随机数进行计算,并将计算得到的计算结果分别存储在存储器中,形成缓存数据;
判断所述缓存数据占用的空间容量是否达到预设空间容量阈值;
若所述缓存数据占用的空间容量未达到预设空间容量阈值,继续执行所述基于选取的第一随机数进行计算,并将计算得到的计算结果追加到所述存储器的缓存数据中,然后执行所述判断所述缓存数据占用的空间容量是否达到预设空间容量阈值的操作;
所述第二计算模块,具体用于若所述缓存数据占用的空间容量达到预设空间容量阈值,利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算。
可选地,在本发明上述各装置实施例中,所述第一计算模块具体用于:
分别针对每次选取的第一随机数:采用第一预设算法对选取的第一随机数进行计算,得到填充数字串;以及采用第二预设算法,对随机选取的输入参数与所述填充数字串进行计算,获得计算结果并存储在存储器中,以形成占用预定空间容量的缓存数据。
可选地,在本发明上述各装置实施例中,所述第一计算模块采用第二预设算法,对输入参数与所述填充数字串进行计算时,具体用于:
对由输入参数与所述填充数字串构成的字符串,采用第一哈希算法进行计算,得到第一整数;对所述第一整数按N取模,获得第一哈希函数的输出结果,并将所述输入参数与所述第一哈希函数的输出结果作为一个对应关系存储在第一哈希函数查找表中;以及对由输入参数与所述填充数字串构成的字符串,采用第二哈希算法进行计算,获得第二哈希函数的输出结果,并将所述输入参数与所述第二哈希函数的输出结果作为一个对应关系存储在第二哈希函数查找表中;所述缓存数据包括:所述第一哈希函数查找表和所述第二哈希函数查找表;其中,N为大于0的任意整数。
可选地,在本发明上述各装置实施例中,所述第一哈希函数包括:Gf(a)=G(a,a′)=G(a,f-1(N-f(a))),所述第一哈希函数查找表包括各输入参数a与第一哈希函数的输出结果Gf(a)之间的对应关系;
所述第二哈希函数包括:f(a);所述第二哈希函数查找表包括各输入参数a与第二哈希函数的输出结果f(a)之间的对应关系;
其中,a为输入参数。
可选地,在本发明上述各装置实施例中,所述第二计算模块具体用于:选取一个第二随机数b作为输入参数;针对本次选取的第二随机数b,基于所述第一哈希函数查找表和所述第二哈希函数查找表,获取满足预设关系的第二随机数b对应的计算结果b';其中,所述预设关系包括:f(b)+f(b')=N;
所述判断模块具体用于:判断G(b,b')是否满足预设判定函数B规定的判断条件,以及第二随机数b的哈希计算结果是否满足预设难度要求;
若G(b,b')满足预设判定函数B规定的判断条件、且第二随机数b的哈希计算结果满足预设难度要求,则所述第二随机数b的哈希计算的计算结果满足预设条件。
可选地,在本发明上述各装置实施例中,所述G(b,b')满足预设判定函数B规定的判断条件,包括:所述第二随机数b属于预先设定的伪随机序列中的前M个值,其中,M为预设大于0的整数;
所述第二随机数b的哈希计算结果满足预设难度要求,包括:采用第三哈希函数对所述第二随机数b连续进行两次哈希运算得到的哈希计算结果dhash(b)满足预设难度要求。
可选地,在本发明上述各装置实施例中,所述哈希计算结果dhash(b)满足预设难度要求,包括:
所述哈希计算结果dhash(b)中开头的0的数目满足预设要求。
可选地,在本发明上述各装置实施例中,还包括:
发送模块,用于若所述计算结果满足预设条件,将所述第一随机数和所述第二随机数作为工作量证明结果上报。
根据本发明实施例的又一个方面,提供的一种电子设备,包括:
存储器和处理器,其中,所述存储器用于存储计算机可读指令,所述处理器对所述计算机可读指令的执行使得所述处理器执行本发明上述任一实施例所述的工作量证明的计算方法的操作。
根据本发明实施例的再一个方面,提供的一种计算机存储介质,用于存储计算机可读指令,所述计算机可读指令在设备中运行时,所述设备中的处理器执行本发明上述任一实施例所述的工作量证明的计算方法的操作。
根据本发明实施例的再一个方面,提供的一种计算机程序,包括计算机可读指令,当所述计算机可读指令在设备中运行时,所述设备中的处理器执行本发明上述任一实施例所述的工作量证明的计算方法的操作。
基于本发明上述实施例提供的工作量证明的计算方法和装置、电子设备、程序和介质,提供了一种基于大容量存储的工作量证明方案,分别基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据;利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;判断哈希计算的计算结果是否满足预设条件;若计算结果满足预设条件,完成工作量证明;否则,若计算结果不满足预设条件,更换第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,重新利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算。本发明实施例提供的基于大容量存储的工作量证明方案,由于缓存数据在多轮工作量证明中保持不变,可以摊平生成它所消耗的大量计算资源,在保持公平性和鲁棒性的优点的同时,极大地减小了电力的消耗,而且可以复用现存的、具有一定量存储空间的计算设备,从而降低了系统的整体拥有成本。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为本发明工作量证明的计算方法一个实施例的流程图。
图2为本发明工作量证明的计算方法另一个实施例的流程图。
图3为本发明工作量证明的计算装置一个实施例的结构示意图。
图4为本发明工作量证明的计算装置另一个实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
图1为本发明工作量证明的计算方法一个实施例的流程图。本发明各实施例的工作量证明的计算方法可以由挖矿机执行。如图1所示,该实施例工作量证明的计算方法包括:
102,分别基于选取的第一随机数(nonce1)进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据。
本发明各实施例中,第一随机数可以由挖矿机按照预设规则选取或者随机选取。
104,利用上述缓存数据和本次选取的第二随机数(nonce2)对预设数据块进行哈希计算。
本发明各实施例中,第二随机数可以由挖矿机按照预设规则选取或者随机选取。
本发明各实施例中,矿池每次向矿机下发计算任务时,计算任务是一个数据块,可以先对作为该计算任务的数据块经过某个哈希算法计算,得到一个伪随机数序列B。本发明各实施例中,数据块可以为伪随机序列B中的元素,该伪随机序列B中包括多个元素。
区块链由一个个区块(block)组成,每个区块即区块链中每次写入的数据。在本发明各实施例的一个实施方式中,该伪随机序列可以是区块中的全部数据或者其中一部分数据。另外,在本发明各实施例的另一个实施方式中,该伪随机序列也可以是由区块(block)通过预设处理(例如通过特定哈希算法计算)获得的数据中的全部数据或者其中一部分数据。
106,判断哈希计算的计算结果是否满足预设条件。
若哈希计算的计算结果满足预设条件,完成工作量证明。否则,若哈希计算的计算结果不满足预设条件,重新选取第二随机数,即:更换第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,执行操作104。
基于本发明上述实施例提供的工作量证明的计算方法,提供了一种基于大容量存储的工作量证明方案,分别基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据;利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;判断哈希计算的计算结果是否满足预设条件;若计算结果满足预设条件,完成工作量证明;否则,若计算结果不满足预设条件,更换第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,重新利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算。本发明实施例提供的基于大容量存储的工作量证明方案,由于缓存数据在多轮工作量证明中保持不变,可以摊平生成它所消耗的大量计算资源,在保持公平性和鲁棒性的优点的同时,极大地减小了电力的消耗,而且可以复用现存的、具有一定量存储空间的计算设备,从而降低了系统的整体拥有成本。
在本发明各实施例的一个实施方式中,操作102中形成占用预定空间容量的缓存数据所需的时间,不小于完成一轮工作量证明的时间窗口。其中,一轮工作量证明的时间窗口即一个区块生成(例如对应于上述操作102-106以及哈希计算的计算结果满足预设条件、完成工作量证明)和被接受的时间。
在本发明各实施例的一个实施方式中,操作102可以包括:
基于选取的第一随机数进行计算,并将计算得到的计算结果分别存储在存储器中,形成缓存数据;
判断缓存数据占用的空间容量是否达到预设空间容量阈值C;
若缓存数据占用的空间容量未达到预设空间容量阈值C,继续执行基于选取的第一随机数进行计算,并将计算得到的计算结果追加到存储器的缓存数据中,然后执行判断缓存数据占用的空间容量是否达到预设空间容量阈值的操作;
若缓存数据占用的空间容量达到预设空间容量阈值,执行104的操作。
在本发明各实施例的一个实施方式中,操作102中,基于选取的第一随机数进行一次计算,并将计算得到的计算结果分别存储在存储器中,可以包括:
分别针对每次选取的第一随机数:采用第一预设算法对选取的第一随机数进行计算,得到填充数字串(Padding);以及采用第二预设算法,对按照预设方式选取的输入参数a与填充数字串进行计算,例如,可以将输入参数a与填充数字串进行拼接,并对拼接得到的字符串进行计算,获得计算结果并存储在存储器中。其中,按照预设方式选取可以是,随机选取或者根据某种预设选取规则选取。
在其中一个可选示例中,采用第二预设算法,对输入参数与填充数字串进行计算,可以包括:
对由输入参数a与填充数字串构成的字符串,例如,可以将输入参数a与填充数字串进行拼接构成字符串,采用第一哈希算法进行计算,得到第一整数;对第一整数按N取模,获得第一哈希函数的输出结果,并将输入参数与第一哈希函数的输出结果作为一个对应关系存储在第一哈希函数查找表中;以及对由输入参数与填充数字串构成的字符串,采用第二哈希算法进行计算,获得第二哈希函数的输出结果,并将输入参数与第二哈希函数的输出结果作为一个对应关系存储在第二哈希函数查找表中;缓存数据包括:第一哈希函数查找表和第二哈希函数查找表。其中,N为大于0的任意整数。第一哈希函数的实现包括:采用第一哈希算法对字符串进行计算和对整数按N取模;第二哈希函数即第二哈希算法,其实现包括:采用第二哈希算法对字符串进行计算。
示例性地,在另一个可选示例中,本发明各实施例中,第一哈希函数可以是:Gf(a)=G(a,a′)=G(a,f-1(N-f(a))),其中,f(a)+f(a')=N,即:f(a')=N-f(a),f-1(N-f(a))为N-f(a)=f(a')的逆函数,即:由f(a')求取a';第一哈希函数查找表包括各输入参数a与第一哈希函数的输出结果Gf(a)之间的对应关系。第二哈希函数包括:f(a);第二哈希函数查找表包括各输入参数a与第二哈希函数的输出结果f(a)之间的对应关系。其中,a为输入参数。
相应地,在本发明上述各实施例中,利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算,可以包括:选取一个第二随机数(nonce2)b作为输入参数;针对本次选取的第二随机数b,基于第一哈希函数查找表和第二哈希函数查找表,获取满足预设关系的第二随机数b对应的计算结果b'。其中,所述预设关系包括:f(b)+f(b')=N,此处N的取值与本发明上述各实施例中N的取值相同。本发明各实施例中,矿池每次向矿机下发计算任务时,计算任务是一个数据块,可以先对作为该计算任务的数据块经过某个哈希算法计算,得到一个伪随机数序列B。本发明各实施例中,数据块可以为伪随机序列B中的元素,该伪随机序列B中包括多个元素。区块链由一个个区块(block)组成,每个区块即区块链中每次写入的数据。在本发明各实施例的一个实施方式中,该伪随机序列可以是区块中的全部数据或者其中一部分数据。另外,在本发明各实施例的另一个实施方式中,该伪随机序列也可以是由区块(block)通过预设处理(例如通过特定哈希算法计算)获得的数据中的全部数据或者其中一部分数据。
判断哈希计算的计算结果是否满足预设条件,可以包括:判断G(b,b')是否满足预设判定函数B规定的判断条件,即:B(G(b,b'))=True是否成立,以及第二随机数b的哈希计算结果是否满足预设难度要求;若G(b,b')满足预设判定函数B规定的判断条件、且第二随机数b的哈希计算结果满足预设难度要求,则该第二随机数b的哈希计算的计算结果满足预设条件。
其中,G(b,b')满足预设判定函数B规定的判断条件,可以包括:第二随机数b属于预先设定的伪随机序列中的前M个值,其中,M为预设大于0的整数。否则,G(b,b')不满足预设判定函数B规定的判断条件。第二随机数b的哈希计算结果满足预设难度要求,可以包括:采用第三哈希函数对第二随机数b连续进行两次哈希运算得到的哈希计算结果dhash(b)满足预设难度要求。
其中,哈希计算结果dhash(b)满足预设难度要求,可以是:哈希计算结果dhash(b)中开头的0的数目满足预设要求。基于该实施例,可以通过动态调整对dhash(b)开头的0的数目要求,来调整挖矿难度要求。
基于上述实施例,可以预先通过协商,在众多矿池和矿池之间、以及矿池和矿机之间限定挖矿条件,例如,限定填充数字串(Padding)尾数为100时挖矿机没资格参与挖矿,从而限制一定挖矿时间窗口(例如每半分钟)内,全网有多少比例的挖矿机有资格加入挖矿,将该比例限制得较小时,可以降低挖矿的能量。通过限制伪随机序列的长度,可以限制挖矿机有资格挖矿之后,所付出的能量。
基于本发明实施例,由于在挖矿时间窗口(例如每半分钟)内,需要对缓存数据进行若干次访问,贴近CPU的存储(称为近存储),例如SSD,才能进行很多次的访问,而冷存储(例如云端存储)很难进行多次访问,访问的次数越少,找到满足预设难度要求的解(即找到满足要求的第一随机数和第二随机数)的可能性就越低,从而可以有效保证本发明实施例有利于近存储、而非冷存储。
基于上述实施例,Padding可以为挖矿机基于预先设定的随机种子生成的非常长的序列,通过控制Padding的长度,可以控制以缓存数据填充存储空间所需时间tINIT的长短。挖矿机选取的N的大小不同,第一哈希函数查找表和第二哈希函数查找表的大小也不同,通过挖矿机选取的N的大小,决定了每个挖矿机生成的缓存数据的大小。
图2为本发明工作量证明的计算方法另一个实施例的流程图。如图2所示,该实施例工作量证明的计算方法包括:
202,选取一个第一随机数(nonce1)。
204,采用第一预设算法对选取的第一随机数进行计算,得到填充数字串(Padding)。
206,按照预设方式选取输入参数a,并针对该输入参数a计算第一哈希函数的输出结果Gf(a),并将输入参数a与第一哈希函数的输出结果Gf(a)作为第一哈希函数查找表中的一个对应关系存储在存储器的缓存数据中;以及针对该输入参数a计算第二哈希函数的输出结果f(a),并将输入参数a与第二哈希函数的输出结果f(a)作为第二哈希函数查找表中的一个对应关系存储在存储器的缓存数据中。
其中,第一哈希函数查找表包括多个a与Gf(a)之间的对应关系,第二哈希函数查找表包括多个a与f(a)之间的对应关系。
具体地,针对该输入参数b计算第一哈希函数的输出结果Gf(b)的计算方法如下:
对输入参数b与填充数字串进行拼接,并采用预先设置的第一哈希算法,对拼接得到的字符串进行计算,获得第一整数例如sha256算法对拼接得到的字符串进行处理,得到256bit的整数;对第一整数按N取模,获得第一哈希函数的输出结果Gf(a)。
具体地,针对该输入参数a计算第二哈希函数的输出结果f(a)的计算方法如下:
对输入参数a与填充数字串进行拼接,并采用预先设置的第二哈希算法对拼接得到的字符串进行计算,获得第二哈希函数的输出结果f(a)。
多次执行操作202~206,依次选取不同的第一随机数进行计算,并将各次计算得到的a与Gf(a)之间的对应关系以及a与f(a)之间的对应关系存储在缓存数据中,形成占用预定空间容量的缓存数据。缓存数据占用的空间达到预定空间容量后,执行操作208。
208,选取一个第二随机数(nonce2)。
210,针对选取的第二随机数b作为输入参数,查找第一哈希函数查找表和第二哈希函数查找表,获取满足预设关系的第二随机数b基于第一哈希函数查找表和第二哈希函数查找表对应的计算结果b'。
其中,上述预设关系包括:f(b)+f(b')=N。此处N的取值即本发明上述各实施例生成第一哈希函数查找表和第二哈希函数查找表时N的取值。
212,判断G(b,f-1(N-f(b)))满足预设判定函数B规定的判断条件、以及采用第三哈希函数对第二随机数b连续进行两次哈希运算得到的哈希计算结果dhash(b)是否满足预设难度要求。
若G(b,f-1(N-f(b)))满足预设判定函数B规定的判断条件、且dhash(b)满足预设难度要求,完成工作量证明,执行操作214。否则,只要任一条件不满足或者上述两个条件均不满足,再次执行操作208,重新选取一个第二随机数并执行后续操作210~212。
214,将第一随机数nonce1和第二随机数nonce2作为工作量证明结果上报。
本发明实施例中,预先填充缓存数据、以及某一轮工作量证明中所使用的哈希算法,可以实现这样的效果:需要使用一段相对较长的时间tINIT填充空间容量为C的空间(对应操作102或者202~206)后,才能用较短的时间tCALC完成工作量证明计算(对应操作104或者208~210)。如果tINIT很短的话,那么拥有强大算力的计算装置,就能反复生成N块内容不同的空间容量为C的数据块,冒充自己拥有N*C那么大的空间容量。当tINIT足够长,比一轮工作量证明的时间窗口(例如10分钟)还要长的时候,这种作弊的行为就失效了,只有诚实地预先填充好存储空间(对应操作102或者202~206),才可能用时间为tCALC的计算(对应操作104或者208~210),给出满足要求的第一随机数和第二随机数。
本发明实施例中,预先填充缓存数据的算法,可以实现这样的效果:如果想削减C*P(0<P<1)的存储空间,那么计算时间tCALC至少会增加tINIT*P,也就是说,除了把缺失的空间又算出来补齐之外,没有更节省时间的算法。假设填充了空间容量为C的存储空间后有A的几率能挖到矿(即找到满足要求的第一随机数和第二随机数),那么如果只填充了C*P的存储空间,挖到矿的几率就至少会降到A*C、甚至更低。
本发明实施例中,两个哈希函数G(a,b)和f(c),它们的输入参数a、b、c和输出结果的值域都是[0,N]。用它们构造出新的函数Gf(a)=G(a,a′)=G(a,f-1(N-f(a))),要求a和a’满足f(a')+f(a)=N,也就是说a和a'经过f(c)函数映射之后得到的结果之和为N。经大量研究证明,Gf(a)求逆(即:给定输出结果求输入参数)的过程必须付出相当大的存储空间来构造查找表,否则计算量会有不可接受的上升。
Gf(a)、f(a)的输入参数是a。假设hashA、hashB、hashC、hashE、hashF是三个哈希算法(即:哈希函数),例如sha256函数,用符号$表示字节串的拼接,那么G(a,b)的可以是:hashC(a$hashA(nonce1),b$hashB(nonce1));f(a)的可以是:hashF(a$hashE(nonce1))。
本发明实施例中,构造一个判定函数B,要求挖矿机必须给出a和a',满足B(G(a,a'))=True(即:G(a,a')满足预设判定函数B规定的判断条件)以及f(a')+f(a)=N,且dhash(a)满足难度要求。挖矿机必须实现用一块存储空间存放Gf(a)的查找表和f(a)的查找表,这样挖矿的时候才能在合理的时间内找到解(即找到满足要求的第一随机数和第二随机数)。其中,dhash(a)是求取输入参数a的dhash函数,在虚拟数字币应用,dhash(a)是指连续调用两次哈希算法(例如sha256函数)进行计算,例如:sha256(sha256(a))。
图3为本发明工作量证明的计算装置一个实施例的结构示意图。该实施例的计算装置可用于实现本发明上述各计算方法实施例。如图3所示,该实施例的计算装置包括:
第一计算模块,用于分别基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据。
在其中一个实施方式中,形成占用预定空间容量的缓存数据所需的时间,不小于完成一轮工作量证明的时间窗口。
存储器,用于存储缓存数据。
第二计算模块,用于利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;以及现在哈希计算的计算结果不满足预设条件时,更换第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算。本发明各实施例中的数据块为伪随机序列中的元素,该伪随机序列可以包括:区块中的全部数据或者其中一部分数据;或者由区块通过预设处理获得的数据中的全部数据或者其中一部分数据。
判断模块,用于判断哈希计算的计算结果是否满足预设条件;若计算结果满足预设条件,完成工作量证明。
基于本发明上述实施例提供的工作量证明的计算装置,提供了一种基于大容量存储的工作量证明方案,分别基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据;利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;判断哈希计算的计算结果是否满足预设条件;若计算结果满足预设条件,完成工作量证明;否则,若计算结果不满足预设条件,更换第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,重新利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算。本发明实施例提供的基于大容量存储的工作量证明方案,由于缓存数据在多轮工作量证明中保持不变,可以摊平生成它所消耗的大量计算资源,在保持公平性和鲁棒性的优点的同时,极大地减小了电力的消耗,而且可以复用现存的、具有一定量存储空间的计算设备,从而降低了系统的整体拥有成本。
在本发明各计算装置的一个实施方式中,第一计算模块具体用于:基于选取的第一随机数进行计算,并将计算得到的计算结果分别存储在存储器中,形成缓存数据;判断缓存数据占用的空间容量是否达到预设空间容量阈值;若缓存数据占用的空间容量未达到预设空间容量阈值,继续执行基于选取的第一随机数进行计算,并将计算得到的计算结果追加到存储器的缓存数据中,然后执行判断缓存数据占用的空间容量是否达到预设空间容量阈值的操作;第二计算模块,具体用于若缓存数据占用的空间容量达到预设空间容量阈值,利用缓存数据和本次选取的第二随机数对预设数据块进行哈希计算。
在本发明各计算装置的另一个实施方式中,第一计算模块具体用于:分别针对每次选取的第一随机数:采用第一预设算法对选取的第一随机数进行计算,得到填充数字串;以及采用第二预设算法,对随机选取的输入参数与填充数字串进行计算,获得计算结果并存储在存储器中,以形成占用预定空间容量的缓存数据。
在其中一个可选示例中,第一计算模块采用第二预设算法,对输入参数与填充数字串进行计算时,具体用于:对由输入参数与填充数字串构成的字符串,采用第一哈希算法进行计算,得到第一整数;对第一整数按N取模,获得第一哈希函数的输出结果,并将输入参数与第一哈希函数的输出结果作为一个对应关系存储在第一哈希函数查找表中;以及对由输入参数与填充数字串构成的字符串,采用第二哈希算法进行计算,获得第二哈希函数的输出结果,并将输入参数与第二哈希函数的输出结果作为一个对应关系存储在第二哈希函数查找表中;缓存数据包括:第一哈希函数查找表和第二哈希函数查找表;其中,N为大于0的任意整数。
其中,第一哈希函数包括:Gf(a)=G(a,a′)=G(a,f-1(N-f(a))),第一哈希函数查找表包括各输入参数a与第一哈希函数的输出结果Gf(a)之间的对应关系;第二哈希函数包括:f(a);第二哈希函数查找表包括各输入参数a与第二哈希函数的输出结果f(a)之间的对应关系;其中,a为输入参数。
相应地,在另一个可选示例中,第二计算模块具体用于:选取一个第二随机数b作为输入参数;针对本次选取的第二随机数b,基于第一哈希函数查找表和第二哈希函数查找表,获取满足预设关系的第二随机数b对应的计算结果b',其中,该预设关系包括:f(b)+f(b')=N;判断模块具体用于:判断G(b,b')是否满足预设判定函数B规定的判断条件,以及第二随机数b的哈希计算结果是否满足预设难度要求;若G(b,b')满足预设判定函数B规定的判断条件、且第二随机数b的哈希计算结果满足预设难度要求,则第二随机数b的哈希计算的计算结果满足预设条件。
示例性地,G(b,b')满足预设判定函数B规定的判断条件,例如可以包括:第二随机数b属于预先设定的伪随机序列中的前M个值,其中,M为预设大于0的整数。第二随机数b的哈希计算结果满足预设难度要求,可以包括:采用第三哈希函数对第二随机数b连续进行两次哈希运算得到的哈希计算结果dhash(b)满足预设难度要求,例如,哈希计算结果dhash(b)中开头的0的数目满足预设要求。
图4为本发明工作量证明的计算装置另一个实施例的结构示意图。如图4所示,与图3所示的实施例相比,该实施例的计算装置还包括:发送模块,用于若计算结果满足预设条件,将第一随机数、第二随机数和计算结果作为工作量证明结果上报。
另外,本发明实施例还提供了一种电子设备,例如挖矿机,包括:
存储器和处理器,其中,存储器用于存储计算机可读指令,处理器对计算机可读指令的执行使得处理器执行本发明上述任一实施例工作量证明的计算方法的操作。
另外,本发明实施例还提供了一种计算机存储介质,用于存储计算机可读指令,计算机可读指令在设备中运行时,设备中的处理器执行本发明上述任一实施例工作量证明的计算方法的操作。
另外,本发明实施例还提供了一种计算机程序,包括计算机可读指令,当计算机可读指令在设备中运行时,设备中的处理器执行本发明上述任一实施例工作量证明的计算方法的操作。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

Claims (24)

1.一种工作量证明的计算方法,其特征在于,包括:
分别基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据;
在缓存数据占用的空间达到预定空间容量后,利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;
判断所述哈希计算的计算结果是否满足预设条件,包括:判断满足第一哈希函数的第二随机数b是否满足预设判定函数B规定的判断条件,以及第二随机数的哈希计算结果是否满足预设难度要求;
若所述计算结果满足预设条件,完成工作量证明;
否则,若所述计算结果不满足预设条件,更换所述第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,开始执行所述利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算的操作;
其中,所述第一哈希函数包括:Gf(a)=G(a,a′)=G(a,f-1(N-f(a))),其中,所述哈希函数G(a,a’)和f(c)的输入参数a、a’、c和输出结果的值域都是[0,N],N为大于0的任意整数;f(a)+f(a′)=N,f-1(N-f(a))为N-f(a)=f(a′)的逆函数,由f(a′)求取a′,所述a′为满足预设关系的输入参数a对应的计算结果;选取一个第二随机数b作为输入参数。
2.根据权利要求1所述的方法,其特征在于,所述形成占用预定空间容量的缓存数据所需的时间,不小于完成一轮工作量证明的时间窗口。
3.根据权利要求1所述的方法,其特征在于,所述预设数据块为伪随机序列中的元素,所述伪随机序列包括:区块中的全部数据或者其中一部分数据;或者由区块通过预设处理获得的数据中的全部数据或者其中一部分数据。
4.根据权利要求1所述的方法,其特征在于,所述基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据,包括:
基于选取的第一随机数进行计算,并将计算得到的计算结果分别存储在存储器中,形成缓存数据;
判断所述缓存数据占用的空间容量是否达到预设空间容量阈值;
若所述缓存数据占用的空间容量未达到预设空间容量阈值,继续执行所述基于选取的第一随机数进行计算,并将计算得到的计算结果追加到所述存储器的缓存数据中,然后执行所述判断所述缓存数据占用的空间容量是否达到预设空间容量阈值的操作;
若所述缓存数据占用的空间容量达到预设空间容量阈值,执行所述利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算的操作。
5.根据权利要求4所述的方法,其特征在于,所述基于选取的第一随机数进行计算,并将计算得到的计算结果分别存储在存储器中,包括:
分别针对每次选取的第一随机数:采用第一预设算法对选取的第一随机数进行计算,得到填充数字串;以及采用第二预设算法,对按照预设方式选取的输入参数与所述填充数字串进行计算,获得计算结果并存储在存储器中。
6.根据权利要求5所述的方法,其特征在于,所述采用第二预设算法,对输入参数与所述填充数字串进行计算,包括:
对由输入参数与所述填充数字串构成的字符串,采用第一哈希算法进行计算,得到第一整数;对所述第一整数按N取模,获得第一哈希函数的输出结果,并将所述输入参数与所述第一哈希函数的输出结果作为一个对应关系存储在第一哈希函数查找表中;以及对由输入参数与所述填充数字串构成的字符串,采用第二哈希算法进行计算,获得第二哈希函数的输出结果,并将所述输入参数与所述第二哈希函数的输出结果作为一个对应关系存储在第二哈希函数查找表中;所述缓存数据包括:所述第一哈希函数查找表和所述第二哈希函数查找表。
7.根据权利要求6所述的方法,其特征在于,所述第一哈希函数查找表包括各输入参数a与第一哈希函数的输出结果Gf(a)之间的对应关系;
所述第二哈希函数包括:f(a);所述第二哈希函数查找表包括各输入参数a与第二哈希函数的输出结果f(a)之间的对应关系;
其中,a为输入参数。
8.根据权利要求7所述的方法,其特征在于,所述利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算,包括:针对本次选取的第二随机数b,基于所述第一哈希函数查找表和所述第二哈希函数查找表,获取满足预设关系的第二随机数b对应的计算结果b′;其中,所述预设关系包括:f(b)+f(b′)=N;
判断所述哈希计算的计算结果是否满足预设条件,包括:
判断满足第一哈希函数G(b,b′)的第二随机数b是否满足预设判定函数B规定的判断条件,以及第二随机数b的哈希计算结果是否满足预设难度要求;
若满足第一哈希函数G(b,b′)的第二随机数b满足预设判定函数B规定的判断条件、且第二随机数b的哈希计算结果满足预设难度要求,则所述第二随机数b的哈希计算的计算结果满足预设条件。
9.根据权利要求8所述的方法,其特征在于,所述满足第一哈希函数G(b,b′)的第二随机数b满足预设判定函数B规定的判断条件,包括:所述第二随机数b属于预先设定的伪随机序列中的前M个值,其中,M为预设大于0的整数;
所述第二随机数b的哈希计算结果满足预设难度要求,包括:采用第三哈希函数对所述第二随机数b连续进行两次哈希运算得到的哈希计算结果dhash(b)满足预设难度要求。
10.根据权利要求9所述的方法,其特征在于,所述哈希计算结果dhash(b)满足预设难度要求,包括:
所述哈希计算结果dhash(b)中开头的0的数目满足预设要求。
11.根据权利要求1-10任一所述的方法,其特征在于,若所述计算结果满足预设条件,还包括:
将所述第一随机数和所述第二随机数作为工作量证明结果上报。
12.一种工作量证明的计算装置,其特征在于,包括:
第一计算模块,用于分别基于选取的第一随机数进行至少一次计算,并将各次计算得到的计算结果分别存储在存储器中,以形成占用预定空间容量的缓存数据;
存储器,用于存储所述缓存数据;
第二计算模块,用于在缓存数据占用的空间达到预定空间容量后,利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;以及当所述哈希计算的计算结果不满足预设条件时,更换所述第二随机数的取值,并以更换取值后的第二随机数作为本次选取的第二随机数,利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算;
判断模块,用于判断所述哈希计算的计算结果是否满足预设条件,包括:判断满足第一哈希函数的第二随机数b是否满足预设判定函数B规定的判断条件,以及第二随机数的哈希计算结果是否满足预设难度要求;若所述计算结果满足预设条件,完成工作量证明;
其中,所述第一哈希函数包括:Gf(a)=G(a,a′)=G(a,f-1(N-f(a))),其中,所述哈希函数G(a,a’)和f(c)的输入参数a、a’、c和输出结果的值域都是[0,N],N为大于0的任意整数;f(a)+f(a′)=N,f-1(N-f(a))为N-f(a)=f(a′)的逆函数,由f(a′)求取a′,所述a′为满足预设关系的输入参数a对应的计算结果;选取一个第二随机数b作为输入参数。
13.根据权利要求12所述的装置,其特征在于,所述形成占用预定空间容量的缓存数据所需的时间,不小于完成一轮工作量证明的时间窗口。
14.根据权利要求12所述的装置,其特征在于,所述预设数据块为伪随机序列中的元素,所述伪随机序列包括:区块中的全部数据或者其中一部分数据;或者由区块通过预设处理获得的数据中的全部数据或者其中一部分数据。
15.根据权利要求12所述的装置,其特征在于,所述第一计算模块具体用于:
基于选取的第一随机数进行计算,并将计算得到的计算结果分别存储在存储器中,形成缓存数据;
判断所述缓存数据占用的空间容量是否达到预设空间容量阈值;
若所述缓存数据占用的空间容量未达到预设空间容量阈值,继续执行所述基于选取的第一随机数进行计算,并将计算得到的计算结果追加到所述存储器的缓存数据中,然后执行所述判断所述缓存数据占用的空间容量是否达到预设空间容量阈值的操作;
所述第二计算模块,具体用于若所述缓存数据占用的空间容量达到预设空间容量阈值,利用所述缓存数据和本次选取的第二随机数对预设数据块进行哈希计算。
16.根据权利要求15所述的装置,其特征在于,所述第一计算模块具体用于:
分别针对每次选取的第一随机数:采用第一预设算法对选取的第一随机数进行计算,得到填充数字串;以及采用第二预设算法,对随机选取的输入参数与所述填充数字串进行计算,获得计算结果并存储在存储器中,以形成占用预定空间容量的缓存数据。
17.根据权利要求16所述的装置,其特征在于,所述第一计算模块采用第二预设算法,对输入参数与所述填充数字串进行计算时,具体用于:
对由输入参数与所述填充数字串构成的字符串,采用第一哈希算法进行计算,得到第一整数;对所述第一整数按N取模,获得第一哈希函数的输出结果,并将所述输入参数与所述第一哈希函数的输出结果作为一个对应关系存储在第一哈希函数查找表中;以及对由输入参数与所述填充数字串构成的字符串,采用第二哈希算法进行计算,获得第二哈希函数的输出结果,并将所述输入参数与所述第二哈希函数的输出结果作为一个对应关系存储在第二哈希函数查找表中;所述缓存数据包括:所述第一哈希函数查找表和所述第二哈希函数查找表。
18.根据权利要求17所述的装置,其特征在于,所述第一哈希函数查找表包括各输入参数a与第一哈希函数的输出结果Gf(a)之间的对应关系;
所述第二哈希函数包括:f(a);所述第二哈希函数查找表包括各输入参数a与第二哈希函数的输出结果f(a)之间的对应关系;
其中,a为输入参数。
19.根据权利要求18所述的装置,其特征在于,所述第二计算模块具体用于:针对本次选取的第二随机数b,基于所述第一哈希函数查找表和所述第二哈希函数查找表,获取满足预设关系的第二随机数b对应的计算结果b′;其中,所述预设关系包括:f(b)+f(b′)=N;
所述判断模块具体用于:判断满足第一哈希函数G(b,b′)的第二随机数b是否满足预设判定函数B规定的判断条件,以及第二随机数b的哈希计算结果是否满足预设难度要求;
若满足第一哈希函数G(b,b′)的第二随机数b满足预设判定函数B规定的判断条件、且第二随机数b的哈希计算结果满足预设难度要求,则所述第二随机数b的哈希计算的计算结果满足预设条件。
20.根据权利要求19所述的装置,其特征在于,所述满足第一哈希函数G(b,b′)的第二随机数b满足预设判定函数B规定的判断条件,包括:所述第二随机数b属于预先设定的伪随机序列中的前M个值,其中,M为预设大于0的整数;
所述第二随机数b的哈希计算结果满足预设难度要求,包括:采用第三哈希函数对所述第二随机数b连续进行两次哈希运算得到的哈希计算结果dhash(b)满足预设难度要求。
21.根据权利要求20所述的装置,其特征在于,所述哈希计算结果dhash(b)满足预设难度要求,包括:
所述哈希计算结果dhash(b)中开头的0的数目满足预设要求。
22.根据权利要求12-21任一所述的装置,其特征在于,还包括:
发送模块,用于若所述计算结果满足预设条件,将所述第一随机数和所述第二随机数作为工作量证明结果上报。
23.一种电子设备,其特征在于,包括:
存储器和处理器,其中,所述存储器用于存储计算机可读指令,所述处理器对所述计算机可读指令的执行使得所述处理器执行权利要求1-11任一所述的工作量证明的计算方法的操作。
24.一种计算机可读存储介质,用于存储计算机可读指令,其特征在于,所述计算机可读指令在设备中运行时,所述设备中的处理器执行权利要求1-11任一所述的工作量证明的计算方法的操作。
CN201810166142.3A 2018-02-28 2018-02-28 工作量证明的计算方法和装置、电子设备、程序和介质 Active CN108322304B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810166142.3A CN108322304B (zh) 2018-02-28 2018-02-28 工作量证明的计算方法和装置、电子设备、程序和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810166142.3A CN108322304B (zh) 2018-02-28 2018-02-28 工作量证明的计算方法和装置、电子设备、程序和介质

Publications (2)

Publication Number Publication Date
CN108322304A CN108322304A (zh) 2018-07-24
CN108322304B true CN108322304B (zh) 2021-12-07

Family

ID=62900737

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810166142.3A Active CN108322304B (zh) 2018-02-28 2018-02-28 工作量证明的计算方法和装置、电子设备、程序和介质

Country Status (1)

Country Link
CN (1) CN108322304B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109087103B (zh) * 2018-08-10 2022-02-11 中国人民解放军国防科技大学 一种基于随机幻方构造的区块链工作量证明方法
CN109146484A (zh) * 2018-08-31 2019-01-04 深圳付贝科技有限公司 基于区块链的共识验证方法、挖矿机及区块链系统
CN109304033B (zh) * 2018-08-31 2021-10-01 杭州复杂美科技有限公司 一种计算机游戏系统和方法、设备及存储介质
CN111104168B (zh) * 2018-10-25 2023-05-12 上海嘉楠捷思信息技术有限公司 一种计算结果提交方法及装置
CN109816110B (zh) * 2019-01-24 2024-07-26 上海嘉楠捷思信息技术有限公司 Scrypt算法工作量证明方法及装置
CN109815372A (zh) * 2019-01-24 2019-05-28 杭州嘉楠耘智信息科技有限公司 Scrypt算法工作量证明方法及装置
CN109799961A (zh) * 2019-01-24 2019-05-24 杭州嘉楠耘智信息科技有限公司 电路架构
CN110149213B (zh) * 2019-06-05 2020-11-17 北京航空航天大学 一种基于异构哈希函数的工作量证明方法及系统
CN110569021B (zh) * 2019-09-06 2023-09-12 湖南天河国云科技有限公司 一种抗asic挖矿的工作量证明方法
CN113297631A (zh) * 2021-05-28 2021-08-24 平安科技(深圳)有限公司 工作量证明的计算方法、装置、设备及存储介质
CN116094691B (zh) * 2022-12-26 2023-11-03 声龙(新加坡)私人有限公司 基于工作量证明的数据处理方法、装置及芯片
CN117033198B (zh) * 2023-08-09 2024-05-31 云海链控股股份有限公司 一种软件测试方法、装置、设备以及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245327A (zh) * 2015-08-21 2016-01-13 北京比特大陆科技有限公司 比特币工作量证明哈希计算芯片优化的方法、装置和电路
CN106484367A (zh) * 2016-09-08 2017-03-08 乐视控股(北京)有限公司 共识计算芯片、设备、系统及主板
CN107276762A (zh) * 2017-05-08 2017-10-20 飞天诚信科技股份有限公司 一种多协议区块链的工作方法及装置
CN107579814A (zh) * 2017-08-03 2018-01-12 北京比特大陆科技有限公司 工作量证明的计算方法的装置、计算芯片、挖矿机

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170193464A1 (en) * 2015-12-18 2017-07-06 Justin SHER Protocol utilizing bitcoin blockchain for maintaining independently proposed and approved set contents

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245327A (zh) * 2015-08-21 2016-01-13 北京比特大陆科技有限公司 比特币工作量证明哈希计算芯片优化的方法、装置和电路
CN106484367A (zh) * 2016-09-08 2017-03-08 乐视控股(北京)有限公司 共识计算芯片、设备、系统及主板
CN107276762A (zh) * 2017-05-08 2017-10-20 飞天诚信科技股份有限公司 一种多协议区块链的工作方法及装置
CN107579814A (zh) * 2017-08-03 2018-01-12 北京比特大陆科技有限公司 工作量证明的计算方法的装置、计算芯片、挖矿机

Also Published As

Publication number Publication date
CN108322304A (zh) 2018-07-24

Similar Documents

Publication Publication Date Title
CN108322304B (zh) 工作量证明的计算方法和装置、电子设备、程序和介质
US11159305B2 (en) Homomorphic data decryption method and apparatus for implementing privacy protection
JP7208930B2 (ja) 制御された暗号化秘密鍵の開放
CN111279663B (zh) 在具有硬件安全模块的密钥管理系统中推迟熵耗尽
KR20220006623A (ko) 블록체인 합의 방법, 디바이스 및 시스템
CN107124443B (zh) 基于区块链的数据分析方法及装置
CN110430045B (zh) 一种基于分布式共识算法的随机数生成方法
CN103475469A (zh) 一种结合cpu和gpu实现sm2算法的方法及装置
US11750403B2 (en) Robust state synchronization for stateful hash-based signatures
CN118114774B (zh) 大模型推断方法、装置、电子设备、存储介质及程序产品
CN115801220A (zh) 加速设备、计算系统及加速方法
Lee et al. SABER-GPU: A response-based cryptography algorithm for SABER on the GPU
CN108829497A (zh) 事务因果序的校正方法及装置、电子设备
US20150071435A1 (en) Identity based encryption
CN116975884B (zh) 一种数据安全存储方法
CN110716982B (zh) 区块链实时存储方法、装置、计算机设备和存储介质
CN111931204A (zh) 用于分布式系统的加密去重存储方法、终端设备
US9560173B2 (en) Techniques for improving SYN cache performance
US20220385954A1 (en) Embedding information in elliptic curve base point
CN110149213B (zh) 一种基于异构哈希函数的工作量证明方法及系统
CN113806775A (zh) 一种基于卷积优化的区块链报文处理方法及装置
KR101438010B1 (ko) 저전력 마이크로프로세서를 이용한 난수 발생 방법 및 이를 위한 장치
JP3711821B2 (ja) 素数生成方法及び装置及び素数生成プログラムを格納した記憶媒体
KR102696204B1 (ko) Sha-3 처리를 위한 그래픽 처리 장치 및 방법
CN110348246B (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: 20210113

Address after: 808, 8th floor, building 43, Tiantong Zhongyuan 2nd District, Dongxiaokou Town, Changping District, Beijing 102208

Applicant after: Beijing Siji Yuanhang Technology Co.,Ltd.

Address before: 100029 2nd floor, building 25, Aobei Science Park, Haidian District, Beijing

Applicant before: BITMAIN TECHNOLOGIES Inc.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211104

Address after: Room 02, 09 / F, Shanton building, 3 Shanton Avenue, Singapore

Applicant after: Strait deer Co.,Ltd.

Address before: 808, 8th floor, building 43, Tiantong Zhongyuan 2nd District, Dongxiaokou Town, Changping District, Beijing 102208

Applicant before: Beijing Siji Yuanhang Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant