CN107579814A - 工作量证明的计算方法的装置、计算芯片、挖矿机 - Google Patents
工作量证明的计算方法的装置、计算芯片、挖矿机 Download PDFInfo
- Publication number
- CN107579814A CN107579814A CN201710657807.6A CN201710657807A CN107579814A CN 107579814 A CN107579814 A CN 107579814A CN 201710657807 A CN201710657807 A CN 201710657807A CN 107579814 A CN107579814 A CN 107579814A
- Authority
- CN
- China
- Prior art keywords
- input data
- random number
- current
- input
- hash
- 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
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例公开了一种工作量证明的计算方法的装置、计算芯片、挖矿机,其中,工作量证明的计算方法包括:在预设计算周期中,改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据;所述交易哈希包括所述第一组成部分和所述第二组成部分;所述第一组成部分包括所述交易哈希的前28个字节,所述第二组成部分包括所述交易哈希的后4个字节;对多个所述第一输入数据、所述第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。本发明实施例可以降低工作量证明所需的计算量。
Description
技术领域
本发明涉及虚拟数字币技术,尤其是一种工作量证明的计算方法的装置、计算芯片、挖矿机。
背景技术
近年来比特币作为一种极具价值的电子货币吸引着越来越多人的关注,越来越多的人关注并投资比特币,比特币使现金系统在点对点的环境下运行,网络通过随机散列(hashing)对全部交易加上时间戳(timestamps),将它们合并入一个不断延伸的基于随机散列的工作量证明(proof-of-work)的链条作为交易记录,该交易记录具有不可更改性。最长的链条不仅将作为被观察到的事件序列(sequence)的证明,而且被看作是来自CPU计算能力最大的池(pool)。只要大多数的CPU计算能力都没有打算合作起来对全网进行攻击,那么诚实的节点将会生成最长的、超过攻击者的链条。信息尽最大努力在全网传播即可,节点(nodes)可以随时离开和重新加入网络,并将最长的工作量证明链条作为在该节点离线期间发生的交易的证明。
具体的,运行该网络的步骤如下:
1)新的交易向全网进行广播;
2)每一个节点都将收到的交易信息纳入一个区块中;
3)每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;
4)当一个节点找到了一个工作量证明,它就向全网进行广播;
5)当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;
6)其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。
节点始终都将最长的链条视为正确的链条,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别。当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。该僵局的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。
其中,工作量证明(Proof-of-Work),为了在点对点的基础上构建一组分散化的时间戳服务器,在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作,比方说安全散列算法(SHA256)下,随机散列值以一个或多个0开始。那么随着0的数目的上升,找到这个解,所需要的工作量将呈指数增长,但是检验结果仅需要一次随机散列运算。我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。我们通过反复尝试来找到这个随机数,找到为止。这样我们就构建了一个工作量证明机制。只要该CPU耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。
同时,该工作量证明机制还解决了在集体投票表决时,谁是大多数的问题。如果决定大多数的方式是基于IP地址的,一IP地址一票,那么如果有人拥有分配大量IP地址的权力,则该机制就被破坏了。而工作量证明机制的本质则是一CPU一票。“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。设想一个较慢的攻击者试图赶上随后的区块,那么其成功概率将呈指数化递减。另一个问题是,硬件的运算速度在高速增长,且节点参与网络的程度会有所起伏。为了解决这个问题,工作量证明的难度(the proof-of-work difficulty)将采用移动平均目标的方法来确定,即令难度指向令每小时生成区块的速度为某一预设的平均数。如果区块生成的速度过快,那么难度就会提高。
发明内容
本发明实施例所要解决的一个技术问题是:提供一种工作量证明的计算方法的装置、计算芯片、挖矿机,以降低工作量证明所需的计算量。
根据本发明实施例的一个方面,提供的一种工作量证明的计算方法,包括:
在预设计算周期中,改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据;所述交易哈希包括所述第一组成部分和所述第二组成部分;所述第一组成部分包括所述交易哈希的前28个字节,所述第二组成部分包括所述交易哈希的后4个字节;
对多个所述第一输入数据、所述第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。
可选地,在本发明上述各实施例的方法中,所述改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,包括:
改变由矿池生成的第一随机值、由矿机生成的第二随机值、由矿池生成的第一激励交易输入量与由矿池生成的第二激励交易输入量中的任意一个或多个;
基于所述第一随机值、所述第二随机值、所述第一激励交易输入量与所述第二激励交易输入量进行计算,获得多个交易哈希;
从所述多个交易哈希中获取第一组成部分不同、第二组成部分相同的至少一个交易哈希作为目标交易哈希。
可选地,在本发明上述各实施例的方法中,所述获取多个第一输入数据,包括:
在所述预设计算周期中,改变第一输入数据的计算参数的取值,并基于改变的所述第一输入数据的计算参数获取多个第一输入数据;所述第一输入数据的计算参数包括:区块版本号、前一个区块的交易哈希值、目标交易哈希、当前区块产生的时间戳、区块工作量证明算法的难度目标和填充位。
可选地,在本发明上述各实施例的方法中,所述获取一个第二输入数据,包括:
在所述预设计算周期中,保持第二输入数据的计算参数的取值不变,基于所述第二输入数据的计算参数获取第二输入数据;所述第二输入数据的计算参数包括:目标交易哈希的后4个字节、当前区块产生的时间戳和区块工作量证明算法的难度目标。
可选地,在本发明上述各实施例的方法中,对多个所述第一输入数据、所述第二输入量与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果,包括:
在所述预设计算周期中,从多个所述第一输入数据中依次选取一个所述第一输入数据作为当前第一输入数据;
由芯片生成一个随机数的取值作为当前随机数;
对所述当前第一输入数据、所述第二输入数据与所述当前随机数进行哈希运算,获得作为工作量证明的当前运算结果;
响应于所述当前运算结果不满足工作量要求,识别芯片生成的随机数的取值是否用尽;
若芯片生成的随机数的取值用尽,返回执行所述选取一个所述第一输入数据作为当前第一输入数据的操作,从多个所述第一输入数据中选取下一个所述第一输入数据作为当前第一输入数据,执行所述由芯片生成一个随机数的取值作为当前随机数的操作;
否则,若芯片生成的随机数的取值未用尽,返回执行所述由芯片生成一个随机数的取值作为当前随机数的操作,由芯片生成另一个随机数的取值作为当前随机数,执行所述对所述当前第一输入数据、所述第二输入数据与所述当前随机数进行哈希运算,获得作为工作量证明的当前运算结果的操作。
可选地,在本发明上述各实施例的方法中,还包括:
响应于到达下一个预设周期,开始执行所述改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据的操作。
根据本发明实施例的另一个方面,提供的一种工作量证明的计算装置,包括:
获取模块,用于在预设计算周期中,改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据;所述交易哈希包括所述第一组成部分和所述第二组成部分;所述第一组成部分包括所述交易哈希的前28个字节,所述第二组成部分包括所述交易哈希的后4个字节;
运算模块,用于对多个所述第一输入数据、所述第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。
可选地,在本发明上述各实施例的装置中,所述获取模块包括:
接收单元,用于接收变化的由矿池生成的第一随机值、由矿机生成的第二随机值、由矿池生成的第一激励交易输入量与由矿池生成的第二激励交易输入量中的任意一个或多个;
计算单元,用于基于所述第一随机值、所述第二随机值、所述第一激励交易输入量与所述第二激励交易输入量进行计算,获得多个交易哈希;
选取单元,用于从所述多个交易哈希中获取第一组成部分不同、第二组成部分相同的至少一个交易哈希作为目标交易哈希;
获取单元,用于基于所述目标交易哈希获取多个第一输入数据和一个第二输入数据。
可选地,在本发明上述各实施例的装置中,所述获取单元获取多个第一输入数据时,具体用于:
在所述预设计算周期中,改变第一输入数据的计算参数的取值,并基于改变的所述第一输入数据的计算参数获取多个第一输入数据;所述第一输入数据的计算参数包括:区块版本号、前一个区块的交易哈希值、目标交易哈希、当前区块产生的时间戳、区块工作量证明算法的难度目标和填充位。
可选地,在本发明上述各实施例的装置中,所述获取单元获取一个第二输入数据时,具体用于:
在所述预设计算周期中,保持第二输入数据的计算参数的取值不变,基于所述第二输入数据的计算参数获取第二输入数据;所述第二输入数据的计算参数包括:目标交易哈希的后4个字节、当前区块产生的时间戳和区块工作量证明算法的难度目标。
可选地,在本发明上述各实施例的装置中,所述运算模块具体用于:
在所述预设计算周期中,从多个所述第一输入数据中依次选取一个所述第一输入数据作为当前第一输入数据;
由芯片生成一个随机数的取值作为当前随机数;
对所述当前第一输入数据、所述第二输入数据与所述当前随机数进行哈希运算,获得作为工作量证明的当前运算结果;
响应于所述当前运算结果不满足工作量要求,识别芯片生成的随机数的取值是否用尽;
若芯片生成的随机数的取值用尽,返回执行所述选取一个所述第一输入数据作为当前第一输入数据的操作,从多个所述第一输入数据中选取下一个所述第一输入数据作为当前第一输入数据,执行所述由芯片生成一个随机数的取值作为当前随机数的操作;
否则,若芯片生成的随机数的取值未用尽,返回执行所述由芯片生成一个随机数的取值作为当前随机数的操作,由芯片生成另一个随机数的取值作为当前随机数,执行所述对所述当前第一输入数据、所述第二输入数据与所述当前随机数进行哈希运算,获得作为工作量证明的当前运算结果的操作。
根据本发明实施例的又一个方面,提供的一种计算芯片,包括:本发明上述任一实施例所述的工作量证明的计算装置。
根据本发明实施例的又一个方面,提供的一种挖矿机,包括:本发明上述任一实施例所述的工作量证明的计算装置或者计算芯片。
基于本发明上述实施例提供的工作量证明的计算方法的装置、计算芯片、挖矿机,在预设计算周期中,通过改变交易哈希的第一组成部分并保持交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据,其中的交易哈希包括第一组成部分和第二组成部分,第一组成部分包括交易哈希的前28个字节,第二组成部分包括交易哈希的后4个字节;对多个第一输入数据、第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。本发明实施例中,由于周期性的保持哈希计算的第二输入数据不变,极大的降低了用于提供工作量证明所需进行的哈希计算的运算量和功耗。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为本发明工作量证明的计算方法一个实施例的流程图。
图2为本发明工作量证明的计算方法另一个实施例的流程图。
图3为本发明工作量证明的计算装置一个实施例的结构示意图。
图4为本发明工作量证明的计算装置另一个实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于终端设备、计算机系统/服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统/服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统/服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
图1为本发明工作量证明的计算方法一个实施例的流程图。本发明各实施例的计算方法可以通过一个芯片来完成,该芯片用于哈希运算,因此在本发明各实施例中也称为计算芯片。该芯片可以位于挖矿机中,也可以是一个单独的计算芯片。如图1所示,本实施例明工作量证明的计算方法包括:
102,在预设计算周期中,改变交易哈希(merkle_hash)的第一组成部分并保持交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据。
其中,交易哈希包括第一组成部分和第二组成部分,共32个字节;第一组成部分包括交易哈希的前28个字节,第二组成部分包括交易哈希的后4个字节。
104,对多个第一输入数据、第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。
基于本发明上述实施例提供的工作量证明的计算方法,在预设计算周期中,通过改变交易哈希的第一组成部分并保持交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据,其中的交易哈希包括第一组成部分和第二组成部分,第一组成部分包括交易哈希的前28个字节,第二组成部分包括交易哈希的后4个字节;对多个第一输入数据、第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果,以寻找满足要求的工作量证明。本发明实施例中,由于周期性的保持哈希计算的第二输入数据不变,极大的降低了用于提供工作量证明所需进行的哈希计算的运算量和功耗。
在本发明工作量证明的计算方法实施例的其中一种可选的实现方式中,各实施例的操作102中,改变交易哈希的第一组成部分并保持交易哈希的第二组成部分不变,具体可以通过如下方式实现:
改变由矿池生成的第一随机值(nonce1)、由矿机生成的第二随机值(nonce2)、由矿池生成的第一激励交易输入量(coinbase1)与由矿池生成的第二激励交易输入量(coinbase2)中的任意一个或多个;
基于第一随机值、第二随机值、第一激励交易输入量与第二激励交易输入量进行计算,获得多个交易哈希(merkle_hash);
从多个交易哈希中获取第一组成部分不同、第二组成部分相同的至少一个交易哈希作为目标交易哈希。
其中,第一随机值(nonce1)由矿池向挖矿机分配计算任务时随机产生并下发给挖矿机中的芯片,该芯片具体可以是一个计算芯片。第二随机值(nonce2)可以由挖矿机接收到矿池下发的计算任务时随机产生。第一激励交易输入量(coinbase1)与第二激励交易输入量(coinbase2)可以由矿池向挖矿机分配计算任务时随机产生并下发给挖矿机中的芯片。其中,coinbase1具体可以由矿池随机产生或者根据预设配置产生,在矿池向挖矿机下发计算任务时将计算任务和该coinbase1一起下发给挖矿机;coinbase2具体可以由矿池按照预设配置方式配置的钱包地址,该钱包地址用于存储计算结果,coinbase2在矿池向挖矿机下发计算任务时将计算任务和该coinbase2一起下发给挖矿机。由于nonce1、nonce2、coinbase1和coinbase2都是随机产生的,因此取值是变化的,基于nonce1、nonce2、coinbase1和coinbase2进行计算,可以获得多个取值不同的交易哈希。
相应地,在本发明工作量证明的计算方法实施例的另一种可选的实现方式中,各实施例的操作102中,可以通过如下方式获取多个第一输入数据:
在预设计算周期中,改变第一输入数据的计算参数的取值,并基于改变的第一输入数据的计算参数获取多个第一输入数据;第一输入数据的计算参数包括:区块版本号、前一个区块的交易哈希值、目标交易哈希、当前区块产生的时间戳、区块工作量证明算法的难度目标和填充位。
其中,第一输入数据的计算参数中的区块版本号、前一个区块的交易哈希值、当前区块产生的时间戳、区块工作量证明算法的难度目标和填充位可以由矿池在向挖矿机下发计算任务时,一起发送给挖矿机、并由挖矿机进一步转发给芯片。目标交易哈希可以由该芯片生成。
比特币协议中的区块版本号可以有多个,例如在正常情况下会同时在芯片中共存两个区块版本号。在发明的进一步实施例中,改变交易哈希时还可以选择性地改变区块版本号,来改变第一输入数据的计算参数的取值,从而获得更多的第一输入数据。
另外,在本发明工作量证明的计算方法实施例的又一种可选的实现方式中,各实施例的操作102中,可以通过如下方式获取一个第二输入数据:
在预设计算周期中,保持第二输入数据的计算参数的取值不变,基于第二输入数据的计算参数获取第二输入数据;该第二输入数据的计算参数包括:目标交易哈希的后4个字节、当前区块产生的时间戳和区块工作量证明算法的难度目标。
其中,第二输入数据的计算参数中,目标交易哈希可以由芯片生成,区块工作量证明算法的难度目标和当前区块产生的时间戳可以由矿池在矿池向挖矿机下发计算任务时,一起发送给挖矿机、并由挖矿机进一步转发给芯片。
图2为本发明工作量证明的计算方法另一个实施例的流程图。本发明实施例的计算方法可以通过一个芯片来完成。如图2所示,该实施例工作量证明的计算方法包括:
202,在预设计算周期中,改变交易哈希的第一组成部分并保持交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据.
其中,交易哈希包括第一组成部分和第二组成部分,共32个字节;第一组成部分包括交易哈希的前28个字节,第二组成部分包括交易哈希的后4个字节。
示例性地,可以改变由矿池生成的第一随机值(nonce1)、由矿机生成的第二随机值(nonce2)、由矿池生成的第一激励交易输入量(coinbase)与由矿池生成的第二激励交易输入量(coinbase)中的任意一个或多个;基于其中任意一项或多项改变后的第一随机值、第二随机值、第一激励交易输入量和第二激励交易输入量进行计算,获得多个交易哈希(merkle_hash);从多个交易哈希中获取第一组成部分不同、第二组成部分相同的至少一个交易哈希作为目标交易哈希。
其中,第一随机值(nonce1)由矿池向挖矿机分配计算任务时随机产生并下发给挖矿机中的芯片,该芯片具体可以是一个计算芯片。第二随机值(nonce2)可以由挖矿机接收到矿池下发的计算任务时随机产生。第一激励交易输入量(coinbase1)与第二激励交易输入量(coinbase2)可以由矿池向挖矿机分配计算任务时随机产生并下发给挖矿机中的芯片。其中,coinbase1具体可以由矿池随机产生或者根据预设配置产生,在矿池向挖矿机下发计算任务时将计算任务和该coinbase1一起下发给挖矿机;coinbase2具体可以由矿池按照预设配置方式配置的钱包地址,该钱包地址用于存储计算结果,coinbase2在矿池向挖矿机下发计算任务时将计算任务和该coinbase2一起下发给挖矿机。由于nonce1、nonce2、coinbase1和coinbase2都是随机产生的,因此取值是变化的,基于nonce1、nonce2、coinbase1和coinbase2进行计算,可以获得多个取值不同的交易哈希。
204,在预设计算周期中,从多个第一输入数据中依次选取一个第一输入数据作为当前第一输入数据。
206,由芯片生成一个随机数(nonce)的取值作为当前随机数。
其中,该随机数(nonce)可以是一个4位32bit的数据,由芯片接收到计算任务时随机产生。
208,对当前第一输入数据、第二输入数据与当前随机数进行哈希运算,例如,采用安全散列算法(SHA256)对当前第一输入数据、第二输入数据与当前随机数进行哈希运算,获得作为工作量证明的当前运算结果。
响应于当前运算结果不满足工作量要求,执行操作210。若当前运算结果已满足工作量要求,即:当前运算结果小于当前区块工作量证明算法的难度目标,则成功找到一个符合协议的比特币区块,不再执行本实施例的后续流程。
210,识别芯片生成的随机数的取值是否用尽。
若芯片生成的随机数的取值用尽,返回执行操作204,从多个第一输入数据中选取下一个第一输入数据作为当前第一输入数据,开始执行后续流程。
否则,若芯片生成的随机数的取值未用尽,返回执行操作206,由芯片生成另一个随机数的取值作为当前随机数,开始执行后续流程。
本发明上述各工作量证明的计算方法实施例是按照预设周期,周期性执行的流程,响应于到达下一个预设周期,重新开始执行本发明上述各实施例的工作量证明的计算方法。
图3为本发明工作量证明的计算装置一个实施例的结构示意图。计算该实施例的装置可用于实现本发明上述各计算方法实施例。如图3所示,该实施例的计算装置包括:获取模块302和运算模块304。其中:
获取模块302,用于在预设计算周期中,改变交易哈希的第一组成部分并保持交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据.
其中,交易哈希包括第一组成部分和第二组成部分;第一组成部分包括交易哈希的前28个字节,第二组成部分包括交易哈希的后4个字节。
运算模块304,用于对上述多个第一输入数据、第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。
基于本发明上述实施例提供的工作量证明的计算装置,在预设计算周期中,通过改变交易哈希的第一组成部分并保持交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据,其中的交易哈希包括第一组成部分和第二组成部分,第一组成部分包括交易哈希的前28个字节,第二组成部分包括交易哈希的后4个字节;对多个第一输入数据、第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。本发明实施例中,由于周期性的保持哈希计算的第二输入数据不变,极大的降低了用于提供工作量证明所需进行的哈希计算的运算量和功耗。
图4为本发明工作量证明的计算装置另一个实施例的结构示意图。如图4所示,与图3所示的实施例相比,该实施例的计算装置中,获取模块302包括:接收单元402,计算单元404,选取单元406和获取单元408。其中:
接收单元402,用于接收变化的由矿池生成的第一随机值、由矿机生成的第二随机值、由矿池生成的第一coinbase值与由矿池生成的第二coinbase值中的任意一个或多个。
计算单元404,用于基于第一随机值、第二随机值、第一激励交易输入量(coinbase1)与第二激励交易输入量(coinbase2)进行计算,获得多个交易哈希。
选取单元406,用于从多个交易哈希中获取第一组成部分不同、第二组成部分相同的至少一个交易哈希作为目标交易哈希。
获取单元408,用于基于目标交易哈希获取多个第一输入数据和一个第二输入数据。
在其中一个示例中,获取单元408获取多个第一输入数据时,具体用于:在预设计算周期中,改变第一输入数据的计算参数的取值,并基于改变的第一输入数据的计算参数获取多个第一输入数据;第一输入数据的计算参数包括:区块版本号、前一个区块的交易哈希值、目标交易哈希、当前区块产生的时间戳、区块工作量证明算法的难度目标和填充位。
在另一个示例中,获取单元408获取一个第二输入数据时,具体用于:在预设计算周期中,保持第二输入数据的计算参数的取值不变,基于第二输入数据的计算参数获取第二输入数据;第一输入数据的计算参数包括:目标交易哈希的后4个字节、当前区块产生的时间戳和区块工作量证明算法的难度目标。
另外,在本发明上述工作量证明的计算装置实施例的又一个示例中,运算模块304具体用于:
在预设计算周期中,从多个第一输入数据中依次选取一个第一输入数据作为当前第一输入数据;
由芯片生成一个随机数的取值作为当前随机数;
对当前第一输入数据、第二输入数据与当前随机数进行哈希运算,获得作为工作量证明的当前运算结果;
响应于当前运算结果不满足工作量要求,识别芯片生成的随机数的取值是否用尽;
若芯片生成的随机数的取值用尽,返回执行选取一个第一输入数据作为当前第一输入数据的操作,从多个第一输入数据中选取下一个第一输入数据作为当前第一输入数据,执行由芯片生成一个随机数的取值作为当前随机数的操作;
否则,若芯片生成的随机数的取值未用尽,返回执行由芯片生成一个随机数的取值作为当前随机数的操作,由芯片生成另一个随机数的取值作为当前随机数,执行对当前第一输入数据、第二输入数据与当前随机数进行哈希运算,获得作为工作量证明的当前运算结果的操作。
本发明实施例还提供了一种计算芯片,其可以包括本发明上述任一实施例的工作量证明的计算装置。
另外,本发明实施例还提供了一种挖矿机,其可以包括:本发明上述任一实施例的的工作量证明的计算装置、或者计算芯片。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (13)
1.一种工作量证明的计算方法,其特征在于,包括:
在预设计算周期中,改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据;所述交易哈希包括所述第一组成部分和所述第二组成部分;所述第一组成部分包括所述交易哈希的前28个字节,所述第二组成部分包括所述交易哈希的后4个字节;
对多个所述第一输入数据、所述第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。
2.根据权利要求1所述的方法,其特征在于,所述改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,包括:
改变由矿池生成的第一随机值、由矿机生成的第二随机值、由矿池生成的第一激励交易输入量与由矿池生成的第二激励交易输入量中的任意一个或多个;
基于所述第一随机值、所述第二随机值、所述第一激励交易输入量与所述第二激励交易输入量进行计算,获得多个交易哈希;
从所述多个交易哈希中获取第一组成部分不同、第二组成部分相同的至少一个交易哈希作为目标交易哈希。
3.根据权利要求2所述的方法,其特征在于,所述获取多个第一输入数据,包括:
在所述预设计算周期中,改变第一输入数据的计算参数的取值,并基于改变的所述第一输入数据的计算参数获取多个第一输入数据;所述第一输入数据的计算参数包括:区块版本号、前一个区块的交易哈希值、目标交易哈希、当前区块产生的时间戳、区块工作量证明算法的难度目标和填充位。
4.根据权利要求2或3所述的方法,其特征在于,所述获取一个第二输入数据,包括:
在所述预设计算周期中,保持第二输入数据的计算参数的取值不变,基于所述第二输入数据的计算参数获取第二输入数据;所述第二输入数据的计算参数包括:目标交易哈希的后4个字节、当前区块产生的时间戳和区块工作量证明算法的难度目标。
5.根据权利要求1-4任一所述的方法,其特征在于,对多个所述第一输入数据、所述第二输入量与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果,包括:
在所述预设计算周期中,从多个所述第一输入数据中依次选取一个所述第一输入数据作为当前第一输入数据;
由芯片生成一个随机数的取值作为当前随机数;
对所述当前第一输入数据、所述第二输入数据与所述当前随机数进行哈希运算,获得作为工作量证明的当前运算结果;
响应于所述当前运算结果不满足工作量要求,识别芯片生成的随机数的取值是否用尽;
若芯片生成的随机数的取值用尽,返回执行所述选取一个所述第一输入数据作为当前第一输入数据的操作,从多个所述第一输入数据中选取下一个所述第一输入数据作为当前第一输入数据,执行所述由芯片生成一个随机数的取值作为当前随机数的操作;
否则,若芯片生成的随机数的取值未用尽,返回执行所述由芯片生成一个随机数的取值作为当前随机数的操作,由芯片生成另一个随机数的取值作为当前随机数,执行所述对所述当前第一输入数据、所述第二输入数据与所述当前随机数进行哈希运算,获得作为工作量证明的当前运算结果的操作。
6.根据权利要求1-5任一所述的方法,其特征在于,还包括:
响应于到达下一个预设周期,开始执行所述改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据的操作。
7.一种工作量证明的计算装置,其特征在于,包括:
获取模块,用于在预设计算周期中,改变交易哈希的第一组成部分并保持所述交易哈希的第二组成部分不变,获取多个第一输入数据和一个第二输入数据;所述交易哈希包括所述第一组成部分和所述第二组成部分;所述第一组成部分包括所述交易哈希的前28个字节,所述第二组成部分包括所述交易哈希的后4个字节;
运算模块,用于对多个所述第一输入数据、所述第二输入数据与芯片生成的随机数进行哈希运算,获得作为工作量证明的运算结果。
8.根据权利要求7所述的装置,其特征在于,所述获取模块包括:
接收单元,用于接收变化的由矿池生成的第一随机值、由矿机生成的第二随机值、由矿池生成的第一激励交易输入量与由矿池生成的第二激励交易输入量中的任意一个或多个;
计算单元,用于基于所述第一随机值、所述第二随机值、所述第一激励交易输入量与所述第二激励交易输入量进行计算,获得多个交易哈希;
选取单元,用于从所述多个交易哈希中获取第一组成部分不同、第二组成部分相同的至少一个交易哈希作为目标交易哈希;
获取单元,用于基于所述目标交易哈希获取多个第一输入数据和一个第二输入数据。
9.根据权利要求8所述的装置,其特征在于,所述获取单元获取多个第一输入数据时,具体用于:
在所述预设计算周期中,改变第一输入数据的计算参数的取值,并基于改变的所述第一输入数据的计算参数获取多个第一输入数据;所述第一输入数据的计算参数包括:区块版本号、前一个区块的交易哈希值、目标交易哈希、当前区块产生的时间戳、区块工作量证明算法的难度目标和填充位。
10.根据权利要求8或9所述的装置,其特征在于,所述获取单元获取一个第二输入数据时,具体用于:
在所述预设计算周期中,保持第二输入数据的计算参数的取值不变,基于所述第二输入数据的计算参数获取第二输入数据;所述第二输入数据的计算参数包括:目标交易哈希的后4个字节、当前区块产生的时间戳和区块工作量证明算法的难度目标。
11.根据权利要求7-10任一所述的装置,其特征在于,所述运算模块具体用于:
在所述预设计算周期中,从多个所述第一输入数据中依次选取一个所述第一输入数据作为当前第一输入数据;
由芯片生成一个随机数的取值作为当前随机数;
对所述当前第一输入数据、所述第二输入数据与所述当前随机数进行哈希运算,获得作为工作量证明的当前运算结果;
响应于所述当前运算结果不满足工作量要求,识别芯片生成的随机数的取值是否用尽;
若芯片生成的随机数的取值用尽,返回执行所述选取一个所述第一输入数据作为当前第一输入数据的操作,从多个所述第一输入数据中选取下一个所述第一输入数据作为当前第一输入数据,执行所述由芯片生成一个随机数的取值作为当前随机数的操作;
否则,若芯片生成的随机数的取值未用尽,返回执行所述由芯片生成一个随机数的取值作为当前随机数的操作,由芯片生成另一个随机数的取值作为当前随机数,执行所述对所述当前第一输入数据、所述第二输入数据与所述当前随机数进行哈希运算,获得作为工作量证明的当前运算结果的操作。
12.一种计算芯片,其特征在于,包括:权利要求7-11任一所述的工作量证明的计算装置。
13.一种挖矿机,其特征在于,包括:权利要求7-11任一所述的工作量证明的计算装置,或者权利要求12所述的计算芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710657807.6A CN107579814A (zh) | 2017-08-03 | 2017-08-03 | 工作量证明的计算方法的装置、计算芯片、挖矿机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710657807.6A CN107579814A (zh) | 2017-08-03 | 2017-08-03 | 工作量证明的计算方法的装置、计算芯片、挖矿机 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107579814A true CN107579814A (zh) | 2018-01-12 |
Family
ID=61034716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710657807.6A Pending CN107579814A (zh) | 2017-08-03 | 2017-08-03 | 工作量证明的计算方法的装置、计算芯片、挖矿机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107579814A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322304A (zh) * | 2018-02-28 | 2018-07-24 | 北京比特大陆科技有限公司 | 工作量证明的计算方法和装置、电子设备、程序和介质 |
CN108418876A (zh) * | 2018-02-09 | 2018-08-17 | 北京众享比特科技有限公司 | 存储工作量证明方法及系统、激励方法及系统 |
CN108777612A (zh) * | 2018-05-18 | 2018-11-09 | 中科声龙科技发展(北京)有限公司 | 一种工作量证明运算芯片核心计算部件的优化方法和电路 |
CN108805537A (zh) * | 2018-05-21 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种利用tpm作为比特币客户端随机源的方法及系统 |
CN109241490A (zh) * | 2018-07-26 | 2019-01-18 | 思力科(深圳)电子科技有限公司 | 一种面向区块链的x11动态哈希方法及装置 |
CN109376115A (zh) * | 2018-08-31 | 2019-02-22 | 北京智云芯科技有限公司 | 一种基于工作量证明的计算装置及计算方法 |
CN109981286A (zh) * | 2019-03-13 | 2019-07-05 | 北京柏链基石科技有限公司 | 一种工作量证明计算的触发方法、装置及计算设备 |
CN110149213A (zh) * | 2019-06-05 | 2019-08-20 | 北京航空航天大学 | 一种基于异构哈希函数的工作量证明方法及系统 |
WO2019179258A1 (zh) * | 2018-03-23 | 2019-09-26 | 中科声龙科技发展(北京)有限公司 | 一种工作量证明运算芯片优化的方法和系统 |
WO2020011010A1 (zh) * | 2018-07-10 | 2020-01-16 | 云图有限公司 | 一种算力交易方法及计算通道 |
CN113721988A (zh) * | 2021-11-01 | 2021-11-30 | 中科声龙科技发展(北京)有限公司 | 基于芯片的工作量证明方法和用于工作量证明的芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130007008A1 (en) * | 2010-09-13 | 2013-01-03 | Tencent Technology (Shenzhen) Company Limited | Hash algorithm-based data storage method and system |
CN105245327A (zh) * | 2015-08-21 | 2016-01-13 | 北京比特大陆科技有限公司 | 比特币工作量证明哈希计算芯片优化的方法、装置和电路 |
CN106407008A (zh) * | 2016-08-31 | 2017-02-15 | 北京比特大陆科技有限公司 | 挖矿业务处理方法、装置和系统 |
-
2017
- 2017-08-03 CN CN201710657807.6A patent/CN107579814A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130007008A1 (en) * | 2010-09-13 | 2013-01-03 | Tencent Technology (Shenzhen) Company Limited | Hash algorithm-based data storage method and system |
CN105245327A (zh) * | 2015-08-21 | 2016-01-13 | 北京比特大陆科技有限公司 | 比特币工作量证明哈希计算芯片优化的方法、装置和电路 |
CN106407008A (zh) * | 2016-08-31 | 2017-02-15 | 北京比特大陆科技有限公司 | 挖矿业务处理方法、装置和系统 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108418876B (zh) * | 2018-02-09 | 2019-04-19 | 北京众享比特科技有限公司 | 存储工作量证明方法及系统、激励方法及系统 |
CN108418876A (zh) * | 2018-02-09 | 2018-08-17 | 北京众享比特科技有限公司 | 存储工作量证明方法及系统、激励方法及系统 |
CN108322304B (zh) * | 2018-02-28 | 2021-12-07 | 海峡小鹿有限公司 | 工作量证明的计算方法和装置、电子设备、程序和介质 |
CN108322304A (zh) * | 2018-02-28 | 2018-07-24 | 北京比特大陆科技有限公司 | 工作量证明的计算方法和装置、电子设备、程序和介质 |
WO2019179258A1 (zh) * | 2018-03-23 | 2019-09-26 | 中科声龙科技发展(北京)有限公司 | 一种工作量证明运算芯片优化的方法和系统 |
CN108777612B (zh) * | 2018-05-18 | 2020-03-20 | 中科声龙科技发展(北京)有限公司 | 一种工作量证明运算芯片核心计算部件的优化方法和电路 |
CN108777612A (zh) * | 2018-05-18 | 2018-11-09 | 中科声龙科技发展(北京)有限公司 | 一种工作量证明运算芯片核心计算部件的优化方法和电路 |
CN108805537A (zh) * | 2018-05-21 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种利用tpm作为比特币客户端随机源的方法及系统 |
WO2020011010A1 (zh) * | 2018-07-10 | 2020-01-16 | 云图有限公司 | 一种算力交易方法及计算通道 |
CN109241490A (zh) * | 2018-07-26 | 2019-01-18 | 思力科(深圳)电子科技有限公司 | 一种面向区块链的x11动态哈希方法及装置 |
CN109241490B (zh) * | 2018-07-26 | 2023-05-09 | 南京思利华信息科技有限公司 | 一种面向区块链的x11动态哈希方法及装置 |
CN109376115A (zh) * | 2018-08-31 | 2019-02-22 | 北京智云芯科技有限公司 | 一种基于工作量证明的计算装置及计算方法 |
CN109981286A (zh) * | 2019-03-13 | 2019-07-05 | 北京柏链基石科技有限公司 | 一种工作量证明计算的触发方法、装置及计算设备 |
CN109981286B (zh) * | 2019-03-13 | 2022-03-11 | 北京柏链基石科技有限公司 | 一种工作量证明计算的触发方法、装置及计算设备 |
CN110149213A (zh) * | 2019-06-05 | 2019-08-20 | 北京航空航天大学 | 一种基于异构哈希函数的工作量证明方法及系统 |
CN113721988B (zh) * | 2021-11-01 | 2022-02-08 | 中科声龙科技发展(北京)有限公司 | 基于芯片的工作量证明方法和用于工作量证明的芯片 |
CN113721988A (zh) * | 2021-11-01 | 2021-11-30 | 中科声龙科技发展(北京)有限公司 | 基于芯片的工作量证明方法和用于工作量证明的芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107579814A (zh) | 工作量证明的计算方法的装置、计算芯片、挖矿机 | |
CN110300172B (zh) | 一种区块链数据的共识方法及相关设备 | |
CN109075964B (zh) | 支持用于区块验证的多个单向函数的区块链 | |
Wang et al. | Exploring miner evolution in bitcoin network | |
Bhaskar et al. | Bitcoin mining technology | |
US20200026699A1 (en) | Highly Performant Decentralized Public Ledger with Hybrid Consensus | |
Zhao et al. | Temporal analysis of the entire ethereum blockchain network | |
CN108876360A (zh) | 一种基于区块链的数字资金托管方法、装置及系统 | |
Goffard | Fraud risk assessment within blockchain transactions | |
Hari et al. | Cryptocurrency mining–transition to cloud | |
CN105303410B (zh) | 虚拟物品分享方法和装置 | |
Sattath | On the insecurity of quantum Bitcoin mining | |
WO2019190846A1 (en) | System and method for cryptocurrency generation and distribution | |
CN112689848A (zh) | 一种区块链数据的共识方法及相关设备 | |
CN111416709B (zh) | 基于区块链系统的投票方法、装置、设备及存储介质 | |
CN112347184A (zh) | 分叉处理方法以及区块链节点 | |
Aljabr et al. | Mining process in cryptocurrency using blockchain technology: Bitcoin as a case study | |
CN110428237A (zh) | 资源的处理方法和装置、存储介质、电子装置 | |
Fu et al. | PoPF: A consensus algorithm for JCLedger | |
CN115936886A (zh) | 异构证券交易系统的失效检测方法、装置、设备及介质 | |
Ke et al. | Ibwh: an intermittent block withholding attack with optimal mining reward rate | |
Iyer et al. | Crypto-economics and game theory | |
Wei et al. | Evolved PoW: Integrating the matrix computation in machine learning into blockchain mining | |
Verma et al. | Application of Supply Chain Management in Blockchain and IoT-A Generic Use Case | |
US20220391900A1 (en) | Tee-based mining pools for pow-cryptocurrencies |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180112 |
|
RJ01 | Rejection of invention patent application after publication |