首页 / 专利库 / 银行与财务事项 / 比特币地址 / 比特币工作量证明哈希计算芯片优化的方法、装置和电路

比特币工作量证明哈希计算芯片优化的方法、装置和电路

阅读:109发布:2020-07-04

专利汇可以提供比特币工作量证明哈希计算芯片优化的方法、装置和电路专利检索,专利查询,专利分析的服务。并且本 发明 公开的 比特币 工作量证明 哈希计算芯片优化的方法、装置和 电路 ,涉及密码计算、 计算机网络 和集成电路技术领域,其中所述比特币工作量证明哈希计算芯片优化的方法包括:周期性地保持哈希计算芯片的第二输入量不变,当第二输入量不变时,关闭与第二输入量对应的计算电路,改变哈希计算芯片初始的第一输入量,并获取对应的新的第一输入量,分别将各第一输入量与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明,所述各第一输入量包括所述初始的第一输入量和所述新的第一输入量。本发明提供的比特币工作量证明哈希计算芯片优化的方法、装置和电路,极大地降低电路的功耗。,下面是比特币工作量证明哈希计算芯片优化的方法、装置和电路专利的具体信息内容。

1.一种比特币工作量证明哈希计算芯片优化的方法,其特征在于,包括:
周期性地保持哈希计算芯片的第二输入量不变;当第二输入量不变时,关闭与第二输入量对应的计算电路
改变哈希计算芯片初始的第一输入量,并获取对应的新的第一输入量;
分别将各第一输入量与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明;所述各第一输入量包括所述初始的第一输入量和所述新的第一输入量。
2.根据权利要求1所述的方法,其特征在于,运算第一输入量的控制参数包括版本号、前一个的哈希值、交易哈希、时间、网络难度以及填充位;其中,交易哈希的控制参数包括第一个交易的打款地址、矿池提供的签名、未确认交易所形成的哈希树、随机值1以及随机值2。
3.根据权利要求1所述的方法,其特征在于,组合第二输入量的控制参数包括交易哈希的后4个字节、时间和网络难度。
4.根据权利要求1所述方法,其特征在于,所述改变哈希计算芯片初始的第一输入量的实现方法包括:改变版本号。
5.根据权利要求1所述的方法,其特征在于,所述改变哈希计算芯片初始的第一输入量的实现方法包括:改变第一个交易的打款地址、矿池提供的签名、随机值1和\或随机值
2,使得第一输入量中交易哈希的后4个字节相同。
6.根据权利要求1所述的方法,其特征在于,所述关闭与第二输入量对应的计算电路的实现方法包括:关闭与所述对应的计算电路相关的时钟电路。
7.一种比特币工作量证明哈希计算芯片优化的装置,其特征在于,包括:
第一处理模块,用于周期性地保持哈希计算芯片的第二输入量不变;当第二输入量不变时,关闭与第二输入量对应的计算电路;
第二处理模块,用于改变哈希计算芯片初始的第一输入量,并获取对应的新的第一输入量;
第三处理模块,用于分别将各第一输入量与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明;所述各第一输入量包括所述初始的第一输入量和所述新的第一输入量。
8.一种比特币工作量证明哈希计算芯片优化的电路,其特征在于,包括至少两个压缩电路单元、扩展电路单元和运算电路单元,所述压缩电路单元与扩展电路单元相连,所述压缩电路单元和扩展电路单元的输出端,连接所述运算电路单元的输入端,所述压缩电路单元的输入端连接第一输入量,所述压缩电路单元的输入端连接第二输入量。

说明书全文

比特币工作量证明哈希计算芯片优化的方法、装置和电路

技术领域

[0001] 本发明涉及密码计算、计算机网络和集成电路技术领域,特别是涉及一种比特币工作量证明哈希计算芯片优化的方法、装置和电路。

背景技术

[0002] 数字加密货币比特币挖矿的运算方式参见图1,运算时通过穷举随机值1nonce1,随机值2nonce2,随机值nonce使得一系列哈希hash运算的最后结果小于当前运算难度对应的值,则成功找到一个符合协议的比特币区。其中由随机值1nocne1,随机值2nonce2和相关数据通过进行符合协议的相关哈希运算得到交易哈希merkle_hash后,交易哈希merkle_hash的高32bit和32bit nonce,以及32bit变量网络难度nbit,时间ntime还有其他常数组成sha256运算需要的512bit消息数据。而低224bit数据和32bit变量协议版本号ver组成sha256运算需要的256bit状态。而一般的专用电路接受任务只计算最后的两次哈希运算。
[0003] 其中,Sha256运算分为对扩展电路单元和压缩电路单元两个部分,扩展是用消息的16个4字节数据生成64个4字节数据(w0~w63)64轮压缩电路单元运算使用。结合图2的计算流程一般的运算过程是改变随机值1nocne1,随机值2nonce2,计算交易根merkle_root,交易根merkle_root和交易树进行计算获得交易哈希merkle_hash,计算出一个交易哈希merkle_hash(中间结果)后每次都改变随机数nonce的值(遍历32bit nonce的值)来寻找符合难度要求的数据。第一次哈希运算的扩展和压缩过程都需要每次变化。扩展电路单元部分由于随机数nonce的改变会不停变化,同时因为压缩电路单元的外部输入第一输入量midstate不变,但是由于扩展电路单元部分输入到压缩电路单元部分的w0~w63会不停变化,会导致压缩电路 单元部分运算不停变化。
[0004] 当前的实现方法中,穷举计算的第一次哈希运算的输入:
[0005] 1)得到一个新的midstate的值;
[0006] 2)不停改变随机数nonce的值,来搜索符合条件的nonce;
[0007] 3)回到第1)步,运算量多功耗大,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新地提出一种有效措施,满足实际应用的更多需求。

发明内容

[0008] 本发明实施例所要解决的技术问题是提供一种比特币工作量证明哈希计算芯片优化的方法、装置和电路,极大地降低电路的功耗。
[0009] 为了解决上述问题,本发明公开了一种比特币工作量证明哈希计算芯片优化的方法,包括:
[0010] 周期性地保持哈希计算芯片的第二输入量不变;当第二输入量不变时,关闭与第二输入量对应的计算电路;
[0011] 改变哈希计算芯片初始的第一输入量,并获取对应的新的第一输入量;
[0012] 分别将各第一输入量与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明;所述各第一输入量包括所述初始的第一输入量和所述新的第一输入量。
[0013] 进一步的,运算第一输入量的控制参数包括版本号、前一个块的哈希值、交易哈希、时间、网络难度以及填充位;其中,交易哈希的控制参数包括第一个交易的打款地址、矿池提供的签名、未确认交易所形成的哈希树、随机值1以及随机值2。
[0014] 进一步的,组合第二输入量的控制参数包括交易哈希的后4个字节、时间和网络难度。
[0015] 进一步的,所述改变哈希计算芯片初始的第一输入量的实现方法包括:改变版本号。
[0016] 进一步的,所述改变哈希计算芯片初始的第一输入量的实现方法包括: 改变第一个交易的打款地址、矿池提供的签名、随机值1和\或随机值2,使得第一输入量中交易哈希的后4个字节相同。
[0017] 进一步的,所述关闭与第二输入量对应的计算电路的实现方法包括:关闭与所述对应的计算电路相关的时钟电路。
[0018] 本发明还公布了一种比特币工作量证明哈希计算芯片优化的装置,包括:
[0019] 第一处理模块,用于周期性地保持哈希计算芯片的第二输入量不变;当第二输入量不变时,关闭与第二输入量对应的计算电路;
[0020] 第二处理模块,用于改变哈希计算芯片初始的第一输入量,并获取对应的新的第一输入量;
[0021] 第三处理模块,用于分别将各第一输入量与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明;所述各第一输入量包括所述初始的第一输入量和所述新的第一输入量。
[0022] 本发明还公布了一种比特币工作量证明哈希计算芯片优化的电路,包括至少两个压缩电路单元、扩展电路单元和运算电路单元,所述压缩电路单元与扩展电路单元相连,所述压缩电路单元和扩展电路单元的输出端,连接所述运算电路单元的输入端,所述压缩电路单元的输入端连接第一输入量,所述压缩电路单元的输入端连接第二输入量。
[0023] 与现有技术相比,本发明包括以下优点:
[0024] 本发明提供的方案通过周期性的保持哈希计算芯片的第二输入量不变,改变哈希计算芯片的初始的第一输入量,进而获取对应的新的第一输入量,将初始的第一输入量和获取的各对应的新的第一输入量分别与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明,每个不变的第二输入量都会与N(N≥2)个第一输入量进行哈希运算,基于第二输入量不变时,与第二输入量对应的计算电路处于关闭状态,极大的降低了运算量和功耗。附图说明
[0025] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026] 图1是背景技术中所述的数字加密货币比特币挖矿的运算方式示意图;
[0027] 图2是背景技术中所述的计算流程示意图;
[0028] 图3是实施例一所述的一种比特币工作量证明哈希计算芯片优化的方法流程图
[0029] 图4是实施例一所述的计算流程图;
[0030] 图5是实施例二所述的比特币工作量证明哈希计算芯片优化的装置示意图;
[0031] 图6是实施例三所述的比特币工作量证明哈希计算芯片优化的电路示意图。

具体实施方式

[0032] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033] 实施例一
[0034] 详细介绍本发明实施例提供的一种比特币工作量证明哈希计算芯片优化的方法。
[0035] 参照图3,示出了本发明的一种比特币工作量证明哈希计算芯片优化的方法,包括:
[0036] S301,周期性地保持哈希计算芯片的第二输入量不变;当第二输入量不变时,关闭与第二输入量对应的计算电路;
[0037] S302,改变哈希计算芯片初始的第一输入量,并获取对应的新的第一输入量;
[0038] S303,分别将各第一输入量与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明;所述各第一输入量包括所述初始的第一输入量和所述新的第一输入量。
[0039] 通过改变哈希计算芯片初始的第一输入量,周期性的保持第二输入量不变,进而获取对应的新的第一输入量,将初始的第一输入量和各新的第一输入量分别与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明。
[0040] 具体实现过程中分别将N(N≥2)个第一输入量与第二输入量和随机数进行哈希运算,运算过程中每改变一次随机数,将其和第二输入量一起与N个第一输入量分别进行哈希运算,第二输入量周期性的保持不变,经过N次运算变化一次,第二输入量的运算量和运行时间就变成了1/N。当第二输入量不变的时候,关闭对应的计算电路,达到有效降低功耗的目的。应用中,通常采用关闭与所述对应的计算电路相关的时钟电路来实现计算电路的关闭。其中,所述第一输入量的控制参数包括版本号、前一个块的哈希值、交易哈希、时间、网络难度以及填充位;其中,交易哈希的控制参数包括第一个交易的打款地址、矿池提供的签名、未确认交易所形成的哈希树、随机值1以及随机值2。获取芯片初始的第一输入量的方式通过对第一输入量的控制参数进行运算得到。随机数由芯片控制变换。
[0041] 更为具体的计算流程图参见图4,首先通过改变随机值1nocne1,随机值2nonce2寻找低32bit相同的交易哈希merkle_hash,如每次遍历随机值1nonce1的32bit和随机值2nonce2的某2bit计算出所有的交易哈希merkle_hash的结果,这样就有2^34个运算结果的交易哈希merkle_hash,然后对这些交易哈希merkle_hash按照最高位32bit来分组,这样平均每组有4个交易哈希merkle_hash(低32bit相同),然后按组下对交易哈希merkle_hash和随机数进行运算。其中,交易哈希merkle_hash的获得包括对哈希根merkle_root和交易树进行计算。具体的通过随机值1nocne1,随机值2nonce2计算哈希根 merkle_root,并存储哈希根merkle_root及其相关信息,当得到预设组数的交易哈希merkle_hash,发送成组的merkle_hash,每次都改变随机数nonce的值来寻找符合难度要求的数据,直到随机数nonce用尽,等待获取下一次发送成组的merkle_hash。
[0042] 运算需要满足计算出来的交易哈希merkle_hash的低32bit相同的条件才能进行,实际应用中的一种实现方法是使用多个版本号ver来进行运算,也即改变版本号;
[0043] 比特币协议中的版本号在正常情况下会同时共存两个版本号。这样每算出一个merkle_hash那么同时利用共存的两个或者多个版本号来进行多个midstate运算。
[0044] 同时还可以通过寻找多个低32位(后4个字节)相同的交易哈希merkle_hash,然后进行运算,也即通过改变第一个交易的打款地址、矿池提供的签名、随机值1和\或随机值2来改变第一输入量,同时保证第二输入量不变。
[0045] 补充介绍的,工作量证明(Proof-of-Work),为了在点对点的基础上构建一组分散化的时间戳服务器,仅仅像报纸或世界性新闻网络组一样工作是不够的,我们还需要一个6
类似于亚当·柏克(Adam Back)提出的哈希现金(Hashcash)。在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作,比方说SHA-256下,随机散列值以一个或多个0开始。那么随着0的数目的上升,找到这个解,所需要的工作量将呈指数增长,但是检验结果仅需要一次随机散列运算。我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。我们通过反复尝试来找到这个随机数,找到为止。这样我们就构建了一个工作量证明机制。只要该CPU耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。
[0046] 同时,该工作量证明机制还解决了在集体投票表决时,谁是大多数的问 题。如果决定大多数的方式是基于IP地址的,一IP地址一票,那么如果有人拥有分配大量IP地址的权,则该机制就被破坏了。而工作量证明机制的本质则是一CPU一票。“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。设想一个较慢的攻击者试图赶上随后的区块,那么其成功概率将呈指数化递减。另一个问题是,硬件的运算速度在高速增长,且节点参与网络的程度会有所起伏。为了解决这个问题,工作量证明的难度(the proof-of-work difficulty)将采用移动平均目标的方法来确定,即令难度指向令每小时生成区块的速度为某一预设的平均数。如果区块生成的速度过快,那么难度就会提高。
[0047] 近年来比特币作为一种极具价值的电子货币吸引着越来越多人的关注,越来越多的人关注并投资比特币,比特币使现金系统在点对点的环境下运行,网络通过随机散列(hashing)对全部交易加上时间戳(timestamps),将它们合并入一个不断延伸的基于随机散列的工作量证明(proof-of-work)的链条作为交易记录,该交易记录具有不可更改性。最长的链条不仅将作为被观察到的事件序列(sequence)的证明,而且被看做是来自CPU计算能力最大的池(pool)。只要大多数的CPU计算能力都没有打算合作起来对全网进行攻击,那么诚实的节点将会生成最长的、超过攻击者的链条。信息尽最大努力在全网传播即可,节点(nodes)可以随时离开和重新加入网络,并将最长的工作量证明链条作为在该节点离线期间发生的交易的证明。
[0048] 具体的,运行该网络的步骤如下:
[0049] 1)新的交易向全网进行广播;
[0050] 2)每一个节点都将收到的交易信息纳入一个区块中;
[0051] 3)每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;
[0052] 4)当一个节点找到了一个工作量证明,它就向全网进行广播;
[0053] 5)当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;
[0054] 6)其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。
[0055] 节点始终都将最长的链条视为正确的链条,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别。当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。该僵局的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。
[0056] 所谓“新的交易要广播”,实际上不需要抵达全部的节点。只要交易信息能够抵达足够多的节点,那么他们将很快被整合进一个区块中。而区块的广播对被丢弃的信息是具有容错能力的。如果一个节点没有收到某特定区块,那么该节点将会发现自己缺失了某个区块,也就可以提出自己下载该区块的请求
[0057] 我们约定如此:每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。这样就增加了节点支持该网络的激励,并在没有中央集权机构发行货币的情况下,提供了一种将电子货币分配到流通领域的一种方法。这种将一定数量新货币持续增添到货币系统中的方法,非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域。此时,CPU的时间和电力消耗就是消耗的资源。另外一个激励的来源则是交易费(transaction fees)。如果某笔交易的输出值小于输入值,那么差额就是交易费,该交易费将被增加到该区块的激励中。只要既定数量的电子货币已经进入流通,那么激励机制就可以逐渐转换为完全依靠交易费,那么本货币系统就能够免于通货膨胀。
[0058] 此外,基于SHA-256的原理是本领域技术人员所熟知的,这里不再对其进行补充介绍。
[0059] 实施例二
[0060] 详细介绍本发明实施例提供的一种比特币工作量证明哈希计算芯片优化的装置。
[0061] 参见图5,示出了本发明的比特币工作量证明哈希计算芯片优化的装置,具体的包括:
[0062] 第一处理模块501,用于周期性地保持哈希计算芯片的第二输入量不变;当第二输入量不变时,关闭与第二输入量对应的计算电路;
[0063] 第二处理模块502,用于改变哈希计算芯片初始的第一输入量,并获取对应的新的第一输入量;
[0064] 第三处理模块503,用于分别将各第一输入量与其对应的第二输入量以及随机数进行哈希运算,以寻找满足要求的工作量证明;所述各第一输入量包括所述初始的第一输入量和所述新的第一输入量。
[0065] 实施例三
[0066] 详细介绍本发明实施例提供的一种比特币工作量证明哈希计算芯片优化的电路。
[0067] 参照图6,示出了本发明一种比特币工作量证明哈希计算芯片优化的电路,包括至少两个压缩电路单元601、扩展电路单元602和运算电路单元603,所述压缩电路单元601与扩展电路单元602相连,所述压缩电路单元601和扩展电路单元602的输出端,连接所述运算电路单元603的输入端,所述压缩电路单元601的输入端连接第一输入量,所述压缩电路单元602的输入端连接第二输入量。
[0068] 本实施例中以N(N≥2)个压缩电路单元为例进行介绍,对应的压缩电路单元分别为第一压缩电路单元6011、第二压缩电路单元6012……第N压缩电路601N。N个压缩电路单元共享一个扩展电路单元,很简单的以N=2来进行说明,由于共享了压缩电路单元的扩展电路单元部分的电路规模下降为1/2且功耗也降为传统的1/2半。同理,N=n时,扩展电路单元部分的电路 规模下降为1/n且功耗也降为传统的1/n半。
[0069] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0070] 以上对本发明所提供的一种比特币工作量证明哈希计算芯片优化的方法、装置和电路,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的实现及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈