首页> 中国专利> 工作量证明的计算装置、ASIC芯片和工作量证明的计算方法

工作量证明的计算装置、ASIC芯片和工作量证明的计算方法

摘要

本申请提供一种工作量证明的计算装置、芯片和方法,能够提高工作量证明的计算效率。该计算装置包括:N个选择器,分别用于获取N组第一输入量;以及,N个第一压缩器,分别与所述N个选择器连接,所述N个第一压缩器分别用于接收所述N个选择器发送的所述N组第一输入量,以及接收相同的第二输入量,其中,每个第一压缩器用于依次对所述第二输入量和一组第一输入量中的每个第一输入量进行压缩处理,所述N个第一压缩器的压缩处理结果分别用于获取工作量证明结果。

著录项

  • 公开/公告号CN112925504A

    专利类型发明专利

  • 公开/公告日2021-06-08

    原文格式PDF

  • 申请/专利权人 北京比特大陆科技有限公司;

    申请/专利号CN202110196725.2

  • 发明设计人 吴旭峰;杨存永;詹克团;

    申请日2021-02-20

  • 分类号G06F7/485(20060101);G06F1/3234(20190101);

  • 代理机构11329 北京龙双利达知识产权代理有限公司;

  • 代理人田玉珺;毛威

  • 地址 100192 北京市海淀区宝盛南路1号院25号楼2层

  • 入库时间 2023-06-19 11:19:16

说明书

技术领域

本申请实施例涉及数据处理领域,并且更具体地,涉及一种工作量证明的计算装置、ASIC芯片和工作量证明的计算装置。

背景技术

工作量证明的过程,是通过大量运算在特定范围内寻找满足条件的随机数的过程,其本质是在竞争中“解决”当前区块。最先解决区块的节点可以获得相应的奖励。为此,如何提高工作量证明的计算效率,成为亟待解决的问题。

发明内容

本申请实施例提供一种工作量证明的计算装置、ASIC芯片和工作量证明的计算方法,能够提高工作量证明的计算效率。

第一方面,提供了一种工作量证明的计算装置,包括:

N个选择器,分别用于获取N组第一输入量,其中,N为大于1的正整数;以及,

N个第一压缩器,分别与所述N个选择器连接,所述N个第一压缩器分别用于接收所述N个选择器发送的所述N组第一输入量,以及接收相同的第二输入量,其中,每个第一压缩器用于依次对所述第二输入量和一组第一输入量中的每个第一输入量进行压缩处理,所述N个第一压缩器的压缩处理结果分别用于获取工作量证明结果。

在一种可能的实现方式中,所述计算装置还包括:N个加法器,分别与所述N个第一压缩器相连,其中,每个加法器用于对相应的第一压缩器的压缩处理结果和所述第一压缩器对应的延迟后的一组第一输入量进行加法处理。

在一种可能的实现方式中,所述N组第一输入量是第一发生器生成的;延迟后的所述N组第一输入量是第二发生器生成的。

在一种可能的实现方式中,延迟后的所述N组第一输入量分别通过另外的N个选择器输入至各自对应的加法器。

在一种可能的实现方式中,每组第一输入量是所述第一发生器根据区块头中的不同版本号生成的,延迟后的所述每组第一输入量是所述第二发生器根据区块头中的不同版本号生成的。

在一种可能的实现方式中,所述第一发生器、所述第二发生器和所述N个压缩器集成在同一个ASIC芯片上。

在一种可能的实现方式中,所述N个压缩器设置在ASIC芯片上,所述第一发生器和所述第二发生器设置于控制板上。

在一种可能的实现方式中,每组第一输入量中包括的第一输入量的个数为8。

在一种可能的实现方式中,2≤N≤16。

在一种可能的实现方式中,所述第二输入量包括区块头的中间状态字段,所述中间状态字段包括以下信息中的至少一种:哈希Merkle根的后32比特、时间戳、难度、随机数、以及填充比特。

在一种可能的实现方式中,所述计算装置还包括:第一扩展器,用于对所述中间状态字段进行扩展处理,得到所述第二输入量。

在一种可能的实现方式中,所述第一输入量包括区块头的消息字段,所述消息字段包括以下信息中的至少一种:版本号、前一区块的哈希值、哈希Merkle根的前224比特。

在一种可能的实现方式中,所述计算装置还包括:N个第二扩展器,分别用于对所述消息字段的N个候选值进行扩展处理;N个第二压缩器,分别与所述N个第二扩展器相连,所述N个第二压缩器分别用于对所述消息字段的N个候选值的扩展处理结果进行压缩处理,得到所述N组第一输入量。

在一种可能的实现方式中,所述计算装置还包括:N个第三扩展器,分别与所述N个加法器相连,所述N个第三扩展分别用于对所述N个加法器的加法处理结果进行扩展处理;N个第三压缩器,分别与所述N个第三扩展器相连,所述N个第三压缩器分别用于对所述N个第三扩展器的扩展处理结果进行压缩处理,得到所述工作量证明结果。

在一种可能的实现方式中,所述计算装置设置于ASIC芯片上,具有相同结构的多个所述ASIC芯片设置于同一电路板上。

第二方面,提供了一种芯片,包括第一方面或第一方面的各种可能的实现方式中的计算装置。

在一种可能的实现方式中,具有相同结构的多个所述芯片设置于同一电路板上。

第三方面,提供了一种工作量证明的计算方法,包括:

通过N个选择器,分别获取N组第一输入量,N为大于1的正整数;

通过与所述N个选择器连接的N个第一压缩器,分别接收所述N个选择器发送的所述N组第一输入量,以及接收相同的第二输入量,并通过每个第一压缩器依次对所述第二输入量和一组第一输入量中的每个第一输入量进行压缩处理;

根据所述N个第一压缩器的压缩处理结果,获取工作量证明结果。

在一种可能的实现方式中,所述计算方法还包括:通过与所述N个第一压缩器相连的N个加法器中的每个加法器,对相应的第一压缩器的压缩处理结果和所述第一压缩器对应的延迟后的一组第一输入量进行加法处理。

在一种可能的实现方式中,所述N组第一输入量是第一发生器生成的;延迟后的所述N组第一输入量是第二发生器生成的。

在一种可能的实现方式中,延迟后的所述N组第一输入量分别通过另外的N个选择器输入至各自对应的加法器。

在一种可能的实现方式中,每组第一输入量是所述第一发生器根据区块头中的不同版本号生成的,延迟后的所述每组第一输入量是所述第二发生器根据区块头中的不同版本号生成的。

在一种可能的实现方式中,所述第一发生器、所述第二发生器和所述N个压缩器集成在同一个ASIC芯片上。

在一种可能的实现方式中,所述N个压缩器设置在ASIC芯片上,所述第一发生器和所述第二发生器设置于控制板上。

在一种可能的实现方式中,每组第一输入量中包括的第一输入量的个数为8。

在一种可能的实现方式中,2≤N≤16。

在一种可能的实现方式中,所述第二输入量包括区块头的中间状态字段,所述中间状态字段包括以下信息中的至少一种:哈希Merkle根的后32比特、时间戳、难度、随机数、以及填充比特。

在一种可能的实现方式中,所述计算方法还包括:通过第一扩展器,对所述中间状态字段进行扩展处理,得到所述第二输入量。

在一种可能的实现方式中,所述第一输入量包括区块头的消息字段,所述消息字段包括以下信息中的至少一种:版本号、前一区块的哈希值、哈希Merkle根的前224比特。

在一种可能的实现方式中,在所述通过N个选择器分别获取N组第一输入量之前,所述计算方法还包括:通过N个第二扩展器,分别对所述消息字段的N个候选值进行扩展处理;通过与所述N个第二扩展器相连的N个第二压缩器,分别对所述消息字段的N个候选值的扩展处理结果进行压缩处理,得到所述N组第一输入量。

在一种可能的实现方式中,所述根据所述N个压缩器的压缩处理结果,获取工作量证明结果,包括:通过与所述N个加法器相连的N个第三扩展器,对所述N个加法器的加法处理结果进行扩展处理;通过与所述N个第三扩展器相连的N个第三压缩器,分别对所述N个第三扩展器的扩展处理结果进行压缩处理,得到所述工作量证明结果。

在一种可能的实现方式中,所述计算方法由ASIC芯片执行,具有相同结构的多个所述ASIC芯片设置于同一电路板上。

本申请实施例中的ASIC芯片基于SHA-256算法执行工作量证明的计算。

基于上述技术方案,通过选择器,使多个第一输入量复用相同的压缩器,从而减少对第二输入量的计算量,即每个压缩器每经过多个周期才计算一次第二输入量,从而减少了工作量证明的计算过程中的逻辑运算量,提高了工作量证明的计算效率,也减少了压缩器的数量,降低了芯片面积和功耗。

附图说明

图1是区块链的示意图。

图2是Merkle Tree的示意图。

图3是工作量证明的计算过程的示意图。

图4是传统的工作量证明计算过程中的循环的示意图。

图5是基于ASIC-BOOST的工作量证明计算过程中的循环的示意图。

图6是本申请实施例的工作量证明的计算装置的示意图。

图7是本申请实施例的工作量证明的计算原理的示意图。

图8是本申请实施例的工作量证明的计算方法的示意性流程图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

为了更好的理解本申请实施例,首先对工作量证明的原理进行描述。

工作量证明的过程也可以称为“挖矿”过程,其核心是使用多个计算平台(也成“矿机”)进行大量运算,从而在特定范围内寻找满足条件的某个随机数。该过程的本质是在竞争中“解决”当前区块。每解决一个区块,会得到新产生的奖励,只有最先解决区块的节点才能获得该奖励。每个区块包含一个记录,记录中的地址是有权获得奖励的地址。这个记录被称为生产交易。

在网络中,数据以文件的形式被永久记录,我们称之为区块。一个区块是一些或所有最新的生产交易的记录集,例如十分钟之内的所有交易,且未被其他先前的区块记录。每个区块记录了它被创建之前发生的所有事件。如表一所示,区块通常包括魔术数(MagicNo)、区块大小(Block Size)、块头(Block Header)、交易数量(Transaction Counter)和交易信息(Transactions)。

表一

如图1所示,每个区块的块头都包含前一个区块的哈希(HASH)值,这就使得从创世块到当前形成了一条块链,每个区块必定按时间顺序跟随在前一个区块之后,我们将其称为区块链(Block Chain)。

表一所示的区块中,块头占据80字节。在工作量证明的过程中,将要被哈希的消息即为该块头。如表二所示,一个块头可以被划分为如下的两块(Chunk),其中块2被扩充为64字节的长度。块1(Chunk 1)包括版本号、前一区块的HASH值、以及Merkle根节点的HASH值的头;块2(Chunk 2)包括Merkle根节点的HASH值的尾、时间戳、难度值、随机数、以及扩充部分。其中,块1称为中间状态(Mid-state),块2中的Merkle根节点的HASH值的尾、时间戳和难度值称为消息(Message)。

表二

版本(Version):即区域版本号,包括4字节,在运算过程中,其以较低频率更新。

前一区块的HASH值(Previous Hash):32字节数据,包含之前所有区块的交易信息,形成区块链的核心。在运算过程中,其以较低频率更新,例如每十分钟更新一次。

Merkle根节点的头(Merkle Root Head):28字节数据,其与Merkle根节点的尾(Merkle Root Tail)的4字节数据组成总共32字节数据,基于一个区块中所有交易的256位HASH值。在运算过程中,其以较低频率更新,例如每十分钟存在几十至几千的交易数量。

Merkle根节点的尾:4字节数据,其与Merkle根节点的头的28字节数据组成总共32字节数据,基于一个区块中所有交易的256位HASH值。在芯片运算过程中,其以较低频率更新,例如每十分钟存在几十至几千的交易数量。32字节的Merkle根包含当前区块的所有交易信息。

时间戳(Time Stamp):4字节数据,在运算过程中,其以较低频率更新。

难度:4字节数据,即当前压缩格式的目标HASH值,也称即目标比特压缩值。在运算过程中,其以较低频率更新。

随机数(nonce):4字节数据,从0开始的32位数据,总共存在2^32个随机数。在工作量证明过程中会遍历整个随机数的范围并且找出满足条件的随机数,因此在运算过程中,其以较高频率更新。

扩充(padding):48字节数据,常数。

工作量证明的过程中使用的工作量证明函数为安全散列算法(Secure HashAlgorithm,SHA)-256。对任何字符使用SHA-256算法输出的都是一个256为的字符串。使用SHA-256加密过的数据与原始数据相比差别十分巨大,破解十分困难。

拥有80字节的固定长度的区块头,就是用于工作量证明的输入字符串。因此,为了使区块头能体现区块所包含的交易,在区块的构造过程中,需要将该区块要包含的交易列表,通过Merkle树(Merkle Tree)算法生成Merkle根节点的HASH值,并以此作为交易列表的摘要存到区块头中。Merkle树本质上就是哈希二叉树。比特币中的Merkle Tree使用双SHA-256,即将每个交易数据进行SHA-256之后再进行SHA-256。例如,假设一个区块包含a、b、c三比交易,则这三笔交易的Merkle Tree的算法图解可以如图2所示。

工作量证明的过程实际上是在使用专用集成电路(Application SpecificIntegrated Circuit,ASIC)不断的计算HASH值的过程。最终的结果是要找到一个HASH 256的值,此值是经过双SHA-256加密过的,并与目标比特值(Target Bit)进行比较,如果计算出来的值小于目标比特,体现出来的是计算出来的结果的值前面存在的零的个数小于目标比特前面零的个数,则向全网广播结果,宣布找到了一个新的区块。也就是说,一个满足条件的区块头的HASH值必须要小于或等于目标比特值,该区块才能被网络接受。

目标比特值越低,产生一个新区块的难度越大。随机数Nonce值作为唯一以高频率变化的量送入到系统中参与SHA-256计算,计算过程即为遍历一定范围中的所有Nonce值的过程,最终找到一个Nonce值使得计算出来的结果小于目标比特值。

下面结和图3至图5,描述寻找Nonce值的计算方式。

在工作量证明的算法函数中,区块的块头中的80字节数据的处理过程如图3所示,在步骤1中,中间状态为块头80字节中的前64字节数据通过扩展层0和压缩层0之后输出的64字节的数据,将其作为压缩层1的第一个输入(即压缩层1输入1)。中间状态是以低频率变化的数据输入到压缩层1中。

在步骤2中,将块头80字节中的后16字节再加上扩充的48字节总共组成的64字节的数据通过扩展层1扩展为64个4字节,即256字节数据,此数据作为压缩层1的另一个输入(即压缩层1输入2)。

在步骤3中,通过压缩层1中的64轮压缩,每轮压缩4字节,将256字节(即压缩层1输入2)压缩为64字节,将中间状态的64字节数据(即压缩层1输入1)和经过64轮压缩后的64字节数据进行合并(concat)操作,并将合并操作之后的结果(即压缩层1输出)进行第一次SHA-256加密。

在步骤4中,将压缩层1输出的经过第一次SHA-256加密过的64字节结果再经过扩展层2和压缩层2之后输出一个64字节的数据,将此64字节数据进行第二次SHA-256运算。运算后的结果作为最终结果与目标比特值进行比较,如果小于目标比特值,则满足条件,产生新的区块,同时输出满足条件的Nonce值。

最后,将得到的输出结果保存到下一个区块当中,作为下一个区块的块头哈希值,形成区块链。

图3所示的计算方式采用了内部循环的方式进行,其中循环遍历的是Nonce值。如图4所示,工作项目(Work Item)包括中间状态(64字节)和消息(12字节)。工作项目被预先计算并且从外部向ASIC芯片传输,即工作项目不参与到内部挖矿循环当中,其可以被看作为工作量证明过程中的常量,虽然其会以低频率变化,但是此低频率的更新与遍历Nonce值的高频率更新相比要低很多。

实际上整个运算过程只有随机数Nonce值在以高频率更新并且参与到内部循环当中,而且还会存在全部遍历完2^32个值之后依然无法找到匹配哈希值的情况,此时还要产生额外随机数(Extra Nonce)位继续遍历。

工作量证明的过程就是不断遍历随机数Nonce值的过程。

但是,在图4所示的内部循环方式中,扩展层1、压缩层1、扩展层2、压缩层2这四层都需要参与内部循环,每当一个中间状态从外部输入到压缩层1中,都要在内部循环中做多个Nonce值的遍历。因此Nonce值的遍历的计算量十分庞大。

为此,提出了增强的ASIC算法(ASIC-BOOST)。如图5所示,在ASIC-BOOST中,通过一系列的数据碰撞使得工作项目中的消息12字节变为常数,即多个块头的块头候选者共享同一个消息。此时,消息以常数的形式输入到扩展层1中。

ASIC-BOOST的内部循环遍历的是所有的中间状态,而不是遍历所有的Nonce值。Nonce值在外部循环中更新而不是在内部循环中更新。即在ASIC-BOOST中,将Nonce值由内部循环变为外部循环,而将中间状态由外部循环改为内部循环。

由于中间状态直接为压缩层1的一个输入,其跳过了扩展层1,所以参与ASIC-BOOST内部循环的只有压缩层1、扩展层2、压缩层3,总共只有三层参与循环,而图3中参与内部循环的有四层,由于四层中的每一个函数具有相似的复杂度,通过ASIC-BOOST可以节省百分之二十五的总体计算量。假设扩展层1在总共四个函数中占有百分之X的占有量。那么具有n个碰撞工作项目时则具有百分之X(n-1)/n的总增益。

本申请提供了一种工作量证明的计算装置,可以在ASIC-BOOST的基础上,进一步提高工作量证明的计算效率。

图6是本申请实施例的工作量证明的计算装置的示意性框图。如图6所示,该计算装置包括N个选择器以及与N个选择器相连的N个第一压缩器。

N个选择器分别用于获取N组第一输入量。

N个第一压缩器分别用于接收所述N个选择器发送的所述N组第一输入量,以及接收相同的第二输入量。其中,每个第一压缩器用于依次对第二输入量和一组第一输入量中的每个第一输入量进行压缩处理,N个第一压缩器的压缩处理结果分别用于获取工作量证明结果。

第二输入量例如包括区块头的中间状态字段,该中间状态字段包括以下信息中的至少一种:哈希Merkle根的后32比特、时间戳、难度、随机数、以及填充比特。也即,第二输入量为前述表二中的“消息”。

第一输入量例如包括区块头的消息字段,该消息字段包括以下信息中的至少一种:版本号、前一区块的哈希值、哈希Merkle根的前224比特。也即,第一输入量为前述表二中的“中间状态”。

如图6所示,N组第一输入量中的每组中包括k个第一输入量,例如,第1组包括第一输入量1至第一输入量k,第2组包括第一输入量1+k至第一输入量2k,……,第N组包括第一输入量(n-1)k+1至第一输入量nk。属于同一组的k个第一输入量,其对应的哈希Merkle根的后32比特是相同的。

以图6中的第一压缩器1为例,其包括两部分输入,一部分是k个第一输入量,另一部分是第二输入量。第二输入量以低频进行更新,每经过k个周期才更新一次。第一压缩器1依次将相同的第二输入量与不同的第一输入量1至第一输入量k进行压缩处理,得到压缩处理结果,该压缩处理结果经过后续处理可以得到工作量证明结果。

可见,通过选择器,使同一组的k第一输入量复用相同的压缩器,减少了对第二输入量的计算量,从而减少了工作量证明的计算过程中的逻辑运算量,提高了计算效率,并且减少了压缩器的数量,降低了芯片面积和功耗。

在一种实现方式中,该计算装置还包括N个加法器,N个加法器分别与N个第一压缩器相连。其中每个加法器用于对与其对应的第一压缩器的压缩处理结果和该第一压缩器对应的延迟后的一组第一输入量进行加法处理。

仍以图6中的第一压缩器1为例,第一压缩器1对第二输入量和第一输入量1至第一输入量k依次进行压缩处理后,将压缩处理结果输入加法器1。同时,该加法器1接收延迟后的第一输入量1至第一输入量k,并对该组第一输入量和延迟后的该组第一输入量进行加法处理,从而得到输出状态1。

为了更清楚地理解该实施例中所涉及的计算过程,下面结合图7简单描述SHA-256算法。

在步骤1中,准备消息调度的参数{Wt}:

t的取值从0至63,分别可以得到对应的W

在步骤2中,初始化8个工作变量,即a、b、c、d、e、f、g、h,并利用第(i-1)

在步骤3中,从t=0至t=63,分别对各个工作变量进行更新。

h=g

g=f

f=e

e=d+T

d=c

c=b

b=a

a=T

在步骤4中,计算第i次HASH值H

从上面的过程可以看出,在经过压缩处理和加法处理后,即可以得到第i次的SHA-256的计算结果。

其中,在图6中,如果将t=0至t=63作为64个计算周期,则经过第一压缩器之后的第一输入量与延迟后的该第一输入量之间就间隔64个计算周期。因此,需要对第一输入量进行延迟处理,并将第一输入量和延迟后的该第一输入量输入加法器进行加法处理。

在一种实现方式中,N组第一输入量和延迟后的N组第一输入量是由不同的中间状态发生器(Mid-state Generator)产生的。也即,通过不同的发生器,分别产生间隔64个计算周期的第一输入量。例如,N组第一输入量是第一发生器生成的;延迟后的N组第一输入量是第二发生器生成的。如图6所示,第二发生器产生延迟后的N组第一输入量后,分别通过另外的N个选择器输入至各自对应的加法器。

由于第二发生器采用的是串行的HASH运算逻辑,其电路很小,比使用单独的延迟装置例如延迟先入先出(First In First Out,FIFO)等更加节省芯片面积和功耗。

本申请实施例对第一发生器和第二发生器的位置不做限定。例如,第一发生器、第二发生器可以和N个压缩器集成在同一个ASIC芯片上;又例如,N个压缩器设置在ASIC芯片上,而第一发生器和第二发生器设置于控制板上。

具有相同结构的多个ASIC芯片可以设置于同一个电路板上,该电路板可以称为算力板。控制板是工作量证明的计算装置上的一个独立部件,例如可以为FPGA或ASIC电路,主要负责从外界接收计算任务,并向各个算力板分配计算任务,以及负责计算结果的回传。

将第一发生器和第二发生器设置于控制板上,多个算力板上的ASIC芯片共用相同的第一发生器和第二发生器,可以节省ASIC芯片的面积和功耗。

本申请实施例对上述的N和k的取值不做限定。例如,每组第一输入量中包括的第一输入量的个数k可以为4或者8。又例如,该计算装置中包括的第一压缩器的数量N满足2≤N≤64,优选地为2≤N≤16。

基于上面的描述可以看出,在遍历第一输入量的过程中,保持第二输入量不变的关键是,寻找后4字节相同的候选Merkle根。本申请实施例对生成不同的第一输入量的方式不做限定。

例如,可以增加额外的随机数(Extra Nonce)来得到不同的第一输入量,即在每个区块的第一笔交易中增加Extra Nonce,具体可以在图2所示的二叉树的左边子节点中增加Extra Nonce字节。

又例如,可以通过交换交易顺序,即交换二叉树的子节点来重新构建MerkleTree,以得到不同的第一输入量。

又例如,可以根据区块头中的不同版本号生成不同的第一输入量。也就是说,图6中的每组第一输入量是第一发生器根据区块头中的不同版本号生成的,延迟后的每组第一输入量是第二发生器根据区块头中的不同版本号生成的。

工作量证明的计算过程中涉及三次HASH计算,例如图8所示,810、820和830分别表示3次HASH计算。在第一次HASH计算即810中,通过对块头中的中间状态(512bits)进行扩展处理和压缩处理,得到处理后的中间状态,也即第一输入量;在第二次HASH计算即820中,对块头中的消息(512bits)进行扩展处理,得到第二输入量,并对第一输入量和第二输入量进行压缩处理;在第三次HASH计算即830中,对820中的处理结果进行扩展处理和压缩处理,得到最终的工作量证明结果。

上面描述的图6中所示的计算过程涉及其中的第二次HASH计算。也就是说,本申请实施例通过对第二次HASH计算过程尤其是压缩处理过程进行改进,提高了工作量证明的计算效率。

因此,在一种实现方式中,本申请实施例的工作量证明的计算装置还可以包括第一扩展器。

其中,第一扩展器用于对区块头中的中间状态字段(包括哈希Merkle根的后32比特、时间戳、难度、随机数、以及填充比特)进行扩展处理,得到上述的第二输入量。

在一种实现方式中,该计算装置还可以包括N个第二扩展器,以及与所述N个第二扩展器相连的N个第二压缩器。其中,N个第二扩展器和N个第二压缩器用于执行工作量证明的计算过程中的第一次HASH计算。

具体地,N个第二扩展器分别用于对区块头中的消息字段(即版本号、前一区块的哈希值、哈希Merkle根的前224比特)的N个候选值进行扩展处理;N个第二压缩器分别用于对区块头的消息字段的N个候选值的扩展处理结果进行压缩处理,得到上述的N组第一输入量。

在一种实现方式中,该计算装置还可以包括与N个加法器相连的N个第三扩展器,以及与N个第三扩展器相连的N个第三压缩器。其中,N个第三扩展器和N个第三压缩器用于执行工作量证明的计算过程中的第三次HASH计算。

具体地,N个第三扩展器分别用于对所述N个加法器的加法处理结果进行扩展处理;N个第三压缩器分别用于对所述N个第三扩展器的扩展处理结果进行压缩处理,得到工作量证明结果。

各个第一输入量对应的工作量证明结果与当前网络的目标比特值进行比较,当工作量证明结果小于目标比特值时,则表明当前区块被解决。

本申请实施例还提供一种芯片,该芯片包括上述任一实施例中所述的工作量证明的计算装置。该芯片可以是算力芯片,具有相同结构的多个算力芯片设置于同一电路板上。

应理解,对于传统计算机而言,一片印刷电路板(Printed Circuit board,PCB)上仅放置一个计算处理器芯片,例如中央处理器(Central Processing Unit,CPU)或者图形处理单元(Graphic Processing Unit,GPU)等。而对于采用ASIC芯片的产品来说,一片PCB(称为算力板)板上往往会密集地放置多个结构相同的计算处理器芯片(即ASIC芯片)。并且,在这些ASIC芯片中,至少两个ASIC芯片会通过串联的方式连接在一起。

如图8所示,本申请实施例还提供一种工作量证明的计算方法。该方法包括以下步骤:

在810中,通过N个选择器分别获取N组第一输入量,N为大于1的正整数;

在820中,通过与所述N个选择器连接的N个第一压缩器,分别接收所述N个选择器发送的所述N组第一输入量,以及接收相同的第二输入量,并通过每个第一压缩器依次对所述第二输入量和一组第一输入量中的每个第一输入量进行压缩处理;

在830中,根据所述N个第一压缩器的压缩处理结果,获取工作量证明结果。

因此,通过选择器,使多个第一输入量复用相同的压缩器,减少了对第二输入量的计算量,即每个压缩器每经过多个周期才计算一次第二输入量,从而减少了工作量证明的计算过程中的逻辑运算量,提高了工作量证明的计算效率,也减少了压缩器的数量,降低了芯片面积和功耗。

在一种实现方式中,所述计算方法还包括:通过与所述N个第一压缩器相连的N个加法器中的每个加法器,对相应的第一压缩器的压缩处理结果和所述第一压缩器对应的延迟后的一组第一输入量进行加法处理。

在一种实现方式中,所述N组第一输入量是第一发生器生成的;延迟后的所述N组第一输入量是第二发生器生成的。

在一种实现方式中,延迟后的所述N组第一输入量分别通过另外的N个选择器输入至各自对应的加法器。

在一种实现方式中,每组第一输入量是所述第一发生器根据区块头中的不同版本号生成的,延迟后的所述每组第一输入量是所述第二发生器根据区块头中的不同版本号生成的。

在一种实现方式中,所述第一发生器、所述第二发生器和所述N个压缩器集成在同一个ASIC芯片上。

在一种实现方式中,所述N个压缩器设置在ASIC芯片上,所述第一发生器和所述第二发生器设置于控制板上。

在一种实现方式中,所述ASIC芯片基于SHA-256算法执行工作量证明的计算。

在一种实现方式中,每组第一输入量中包括的第一输入量的个数为8。

在一种实现方式中,2≤N≤16。

在一种实现方式中,所述第二输入量包括区块头的中间状态字段,所述中间状态字段包括以下信息中的至少一种:哈希Merkle根的后32比特、时间戳、难度、随机数、以及填充比特。

在一种实现方式中,所述计算方法还包括:通过第一扩展器,对所述中间状态字段进行扩展处理,得到所述第二输入量。

在一种实现方式中,所述第一输入量包括区块头的消息字段,所述消息字段包括以下信息中的至少一种:版本号、前一区块的哈希值、哈希Merkle根的前224比特。

在一种实现方式中,在所述通过N个选择器分别获取N组第一输入量之前,所述计算方法还包括:通过N个第二扩展器,分别对所述消息字段的N个候选值进行扩展处理;通过与所述N个第二扩展器相连的N个第二压缩器,分别对所述消息字段的N个候选值的扩展处理结果进行压缩处理,得到所述N组第一输入量。

在一种实现方式中,所述根据所述N个压缩器的压缩处理结果,获取工作量证明结果,包括:通过与所述N个加法器相连的N个第三扩展器,对所述N个加法器的加法处理结果进行扩展处理;通过与所述N个第三扩展器相连的N个第三压缩器,分别对所述N个第三扩展器的扩展处理结果进行压缩处理,得到所述工作量证明结果。

在一种实现方式中,所述计算方法由ASIC芯片执行,具有相同结构的多个所述ASIC芯片设置于同一电路板上。

在一种实现方式中,所述ASIC芯片基于SHA-256算法执行工作量证明的计算。

应理解,图8所示的方法可以由前述图6所示的计算装置执行,方法实施例中的各个特征的详细描述可以参考前述针对装置侧的描述,为了简洁,这里不再赘述。

需要说明的是,在不冲突的前提下,本申请描述的各个实施例和/或各个实施例中的技术特征可以任意的相互组合,组合之后得到的技术方案也应落入本申请的保护范围。

应理解,本申请实施例中的具体的例子只是为了帮助本领域技术人员更好地理解本申请实施例,而非限制本申请实施例的范围,本领域技术人员可以在上述实施例的基础上进行各种改进和变形,而这些改进或者变形均落在本申请的保护范围内。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号