ASIC阵列、数据处理板以及区块挖掘方法和设备与流程

文档序号:18899801发布日期:2019-10-18 21:47阅读:354来源:国知局
ASIC阵列、数据处理板以及区块挖掘方法和设备与流程

本发明涉及区块链技术领域,特别是涉及一种用于区块挖掘的方法和设备,以及采用区块挖掘的方法的asic阵列和数据处理板。



背景技术:

以太坊(ethereum)是一个全新的开方的区块链平台,它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。以太坊的核心是一个点对点(p2p)网络,以太坊区块链数据库是由众多连接到网络的节点来维护和更新的。

图1是现有技术的以太坊区块挖掘示意图。如图1所示,交易费用由节点收集,用户(miner)12就是以太坊网络10中收集、传播、确认和执行交易的节点。用户们将交易打包为区块,并互相竞争,以使他们的区块可以添加到下一个区块链上,这个过程称之为挖矿。矿池服务器11(poolserver)在新的区块上将挖矿业务分包给矿池(miningpool)里的用户,每一个挖矿工作的参数包括区块字头散列值、用户期望搜寻到的随机数值范围和难易度。

和区块链网络一样,用户们通过解决复杂数学问题的任务以便成功地“挖”到区块,这被称为“工作量证明”。一个运算问题,如果在算法上解决,比验证解决方法需要更多数量级的资源,那么它就是工作量证明的极佳选择。为防止区块链网络中已经发生的专门硬件(例如特定用途集成电路)造成的中心化现象,以太坊选择了侧重于消耗更多内存的运算问题。如果问题需要内存和cpu,那么理想的硬件就是普通电脑。这就使以太坊的工作量证明具有抗特定用途集成电路的特性,和由专门硬件控制区块挖掘的区块链相比,以太坊能够带来更加去中心化的安全分布。

解决复杂数学问题的过程与区块挖掘设备的cpu性能零相关,与区块挖掘设备的内存大小及内存带宽正相关,这意味着那些通过共享内存的方式大规模部署的区块挖掘设备,在挖矿效率上并不能产生线性或者超线性(super-linear)的增长。

中国专利申请“一种fpga并行阵列模块及其计算方法”,公开号cn106843080a,公开了一种fpga并行阵列模块,其连接至上位机,其包括依次设置的对外通信层、任务切分层和计算层;对外通信层、任务切分层、计算层均设有电源模块和散热模块;对外通信层用于与上位机进行通讯,对外通信层设有arm主控模块,arm主控模块用于实现软件自定义功能调用;arm主控模块用于实现linux软件流程,其设有接口模块,对外通信层通过接口模块连接至上位机,且arm主控模块与接口模块之间设有破解模块;破解模块用于封装组织fpga阵列,调度fpga资源进行密钥计算,计算出正确的密钥;任务切分层用于对任务进行切分并均衡调度,任务均分层设有多个fpga二级主控模块,fpga二级主控模块用于进行复杂计算;计算层设有多个asic模块,asic模块用于进行简单计算;每个fpga二级主控模块连接至多个asic模块。

但目前以太坊的区块挖掘中,存在大容量内存的需求,如何在降低区块挖掘设备成本的前提下,减小对区块挖掘设备内存的需求,是目前业界重点研究的问题。



技术实现要素:

为解决以太坊区块挖掘中对大容量内存的运算需求问题,本发明公开了一种asic阵列,使用该asic阵列的数据处理板,以及使用该数据处理板区块挖掘设备,和对应的区块挖掘方法。

具体来说,本发明公开了一种asic阵列,用于进行区块挖掘,该asic阵列包括:设置于pcb电路板上的多个asic芯片,该asic芯片包括多个裸片,该裸片包括片上网络、通信模块和功能模块,其中该片上网络包括多个计算节点,该计算节点包括内存,该内存用于分布存储区块挖掘中的随机数据集的子集。

进一步的,该计算节点以m×n阵列的形式分布设置,其中,m、n为正整数,且m≥2,n≥2;该asic芯片包括2个裸片,该pcb电路板的一面设置4×4个该asic芯片,该pcb电路板的另一面设置4×4个该asic芯片。

优选地,该计算节点以6×12阵列的形式分布设置。

本发明还公开了一种区块挖掘方法,采用上述的asic阵列进行区块挖掘,其特征在于,包括:步骤1,获取用于对当前区块进行挖掘的随机数据集;步骤2,将该随机数据集划分为多个子集并分布存储于该asic阵列的该计算节点;步骤3,任意选取某一计算节点所保存的子集中的某一随机数,进行第一轮地址运算以获取目标地址;获取该目标地址对应计算节点所保存的子集中的对应随机数,作为下一轮地址运算的输入;以经过预设轮数的地址运算后获得的随机数为目标随机数;步骤4,对该目标随机数进行散列计算以获得目标值,若该目标值小于或等于难度阈值,则以该目标随机数为当前区块的区块随机数,以该目标值为当前区块的区块散列值;反之则丢弃该目标随机数,并重新执行步骤3;步骤5,将该区块随机数和该区块散列值写入该当前区块,并将该当前区块广播至区块链网络;步骤6,当验证者接收到广播的该当前区块时,验证该当前区块的合法性,并将验证合法的当前区块链入区块链。

进一步的,该当前区块包括:当前区块头和当前区块体,其中该当前区块头包括前一区块的区块散列值、当前区块随机数、当前区块散列值和该难度阈值。

优选地,以该随机数所在计算节点的混算器,进行当前轮地址运算。

本发明还公开了一种用于区块挖掘的数据处理板,包括上述的asic阵列,还包括:与该asic阵列连接的控制器单元,用于监视该asic阵列操作,向该asic阵列输入数据并输出该asic阵列获取的结果;温度管理单元,包括散热器和温度传感器,其中该温度传感器用于检测该数据处理板的温度并传送至该控制器单元和/或该散热器,或控制该电源的工作状态;该散热器用于为该数据处理板降温;引导单元,与该控制器单元连接,用于对该控制器单元的启动引导;调试单元,与该控制器单元连接,用于对该控制器单元进行调试并提供调试参数。

进一步的,该控制器单元为现场可编程门阵列。

本发明还公开了一种用于区块挖掘的设备,包括至少一个上述的数据处理板,还包括:网络通信模块,用于连接网络以进行数据接收和发送;任务分配模块,用于将从该网络获取的数据分发给该数据处理板,并将该数据处理板得到的结果通过该网络通信模块发送至该网络。

本发明的asic阵列,将内存分配到计算节点上,通过计算节点-片上网络-asic芯片-asic阵列的层级结构,使asic阵列可以存储区块挖掘中所需的随机数据集,即通过将子集分配到每个计算节点内存的方式,有效降低进行区块挖掘的散列计算过程中,随机数据集对大容量内存的需求。

附图说明

图1是现有技术的以太坊区块挖掘示意图。

图2是现有技术的以太坊区块结构示意图。

图3是本发明的区块挖掘方法流程图。

图4是本发明第一实施例的asic阵列结构示意图。

图5是本发明第一实施例的片上网络二维度环形拓扑结构示意图。

图6是本发明第一实施例的计算节点之间的片上通道方向示意图。

图7是本发明第一实施例的裸片之间片间通道示意图。

图8是本发明第一实施例的asic芯片之间的片间通道示意图。

图9是本发明第二实施例的基于asic阵列的数据处理板的结构示意图。

图10是本发明第三实施例的区块挖掘设备结构示意图。

其中,附图标记为:

10:以太坊11:矿池服务器

12:用户100:asic阵列

110:asic芯片120:裸片

130:片上网络140:节点

140-1:计算节点140-2:功能节点

141:内存142:混算器

143:节点通信模块144:片上通道

150:反射器节点160:片间通道

161:链路对162:链路

170:pcb电路板180:串并行通道

200:数据处理板210:控制器单元

220:电源230:温度传感器

240:风扇300:任务分配模块

400:网络通信模块500:区块挖掘设备

rx:接收器tx:发射器

e、s、w、n:端口位置

具体实施方式

下面将结合附图对本发明进行详细描述。在附图中,相同标号一般表示相同或功能相似的部件。另外,附图标记最左边的数字表明该附图标记首次出现时的那幅附图的编号。

本说明书公开了一个或多个包含本发明特点的实施例。公开的实施例仅仅用于举例说明。本发明的保护范围并不限于所公开的实施例。本发明由所附权利要求来限定。说明书中针对“一个实施例”、“实施例”、“示例实施例”等的引用,指的是描述的该实施例可包括特定的特征、结构或特性,但是不是每个实施例必须包含这些特定特征、结构或特性。此外,这样的表述并非指的是同一个实施例。进一步,在结合实施例描述特定的特征、结构或特性时,不管有没有明确的描述,已经表明将这样的特征、结构或特性结合到其它实施例中是在本领域技术人员的知识范围内的。

在说明书及后续的权利要求书中使用了某些词汇来指称特定组件或部件,本领域普通技术的员应可理解,技术使用者或制造商可以不同的名词或术语来称呼同一个组件或部件。本说明书及后续的权利要求书并不以名称的差异来作为区分组件或部件的方式,而是以组件或部件在功能上的差异来作为区分的准则。在通篇说明书及后续的权利要求项中所提及的“包括”和“包含”为一开放式的用语,故应解释成“包含但不限定于”。以外,“连接”一词在此包含任何直接及间接的电性连接手段。间接的电性连接手段包括通过其它装置进行连接。需要说明的是,在本发明的描述中,术语“横向”、“纵向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,并不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

区块链是一种计算与存储架构,具体来说是一种去中心化的分布式记账系统,该系统中的节点无需互相信任,通过统一的共识机制共同维护一份账本。而以太坊是一种能够被重编程用以实现任意复杂计算功能的单一区块链。图2是现有技术的以太坊区块结构示意图。如图2所示,以太坊的区块结构包括区块头和区块体,其中区块头包括前一区块散列值、本区块的区块散列值、本区块的区块随机数、挖掘本区块的难度阈值等,区块体包括本区块建立过程中所有外部账户发出的消息的签名数据包。以太坊的共识机制是pow(proofofwork工作量证明机制),使用ethash算法,这种算法是对dagger-hashimoto算法的改良版本,使用大量的伪随机数据,这些伪随机数据的集合被称为“数据集(dataset)”或简称为dag。ethash算法的特点是区块挖掘的效率与内存大小和内存带宽正相关,其流程包括:对于每一个块,首先计算一个种子(seed),seed只和当前区块的信息有关;然后根据seed生成一个32m的随机数据集(cache);根据cache生成一个1gb大小的随机数据集dag(有向非循环图),dag是一个完整的搜索空间,区块挖掘的过程就是从dag中随机选择元素(类似于区块链的区块挖掘中查找合适nonce)再进行散列运算,可以从cache快速计算dag指定位置的元素,进而哈希验证要求对cache和dag进行周期性更新,每1000个块更新一次,并且规定dag的大小随着时间推移线性增长。

由于以太坊的工作量证明具有抗特定用途集成电路的特性,在以太坊的区块挖掘中,asic相对于使用内存和cpu的普通电脑,并没有速度和效率上的优势。图3是本发明的区块挖掘方法流程图。如图3所示,本发明公开了一种区块挖掘方法,使以太坊的区块挖掘可以使用asic阵列并获取较高的速度和效率,具体而言,本发明的区块挖掘方法包括:

步骤s1,以太坊的用户获取当前区块的区块体,以及用于对当前区块进行挖掘的随机数据集dag;其中dag是通过ethash算法中已知的技术手段获取,例如通过如keccak256算法的散列计算获取seed,通过如keccak512算法的散列计算根据seed生成cache,通过如keccak512算法的散列计算根据cache生成dag等,本发明并不以此为限;

步骤s2,将随机数据集dag划分为多个随机数据集子集,并将子集以一对一的形式分布存储于计算节点的内存中,以使每个计算节点的内存都存储有一个伪随机数子集;

步骤s3,选取某一子集中的某一随机数作为首轮地址运算的输入,通过地址运算所获得的结果是一个目标地址,这个目标地址对应的随机数作为本轮地址运算的输出,即这个输出的随机数为本轮地址运算结果,其中这个输出的随机数可能处于输入的随机数所在的子集,也可能处于另一个子集;以这个输出的随机数为下一轮地址运算的输入,进行下一轮地址运算;进行r轮地址运算后,以获得的地址运算结果为目标随机数;其中r为预设的轮数;对获得的目标随机数进行散列计算以获得目标值;

地址运算可以由子集的保存位置对应的计算节点执行,也可以由指定计算处理器执行,例如是asic芯片上的散列运算处理节点、asic阵列上的散列运算处理芯片,或asic阵列以外的独立散列运算处理器,本发明并不以此为限;于本发明的实施例中,计算节点在具备存储伪随机数子集的功能外,还具备对自身存储的伪随机数子集进行散列运算处理功能,即每一轮地址运算均在某一个计算节点上独立进行,当前轮地址运算是以随机数所在计算节点的混算器进行的;

步骤s4,将获得的目标值与当前区块挖掘的难度阈值进行比较,若目标值小于或等于难度阈值,则以获得的目标随机数为当前区块的区块随机数,以获得的目标值为当前区块的区块散列值;若目标值大于难度阈值,则舍弃这个目标值对应的目标随机数,并重新执行步骤s3;

步骤s5,将步骤s4获得的区块随机数和区块散列值写入当前区块的区块头,以得到完整的当前区块,将完整的当前区块广播至以太坊。

步骤s6,以太坊的其他用户(验证者)在接收到广播的当前区块时,根据当前区块的区块头中所包含的前一区块的区块散列值、当前区块的区块随机数、当前区块的区块散列值和难度阈值等,对当前区块的合法性进行验证,并将验证合法的当前区块链入区块链。

根据上述区块挖掘方法,本发明还公开了一种asic阵列(asicarray),将内存(sram)分配到多个asic芯片(chip)上,asic芯片之间通过高速链路连接,且每个asic芯片上还包括多个裸片(die),每个裸片包括一个片上网络(noc,networkonchip),片上网络noc有多个计算节点,每个计算节点都包括混算器、节点通信模块、内存等。如此一来,在进行ethash算法的散列计算过程中,通过将子集分配到每个计算节点的内存的方式,可以有效降低散列计算中dag对大内存的需求。

计算节点具有多种分布形式,例如是以m×n阵列的形式分布设置(m≥2,n≥2,m、n为正整数),或以蜂窝网络形式交错分布设置,或以任意形式分布设置,本发明并不以此为限。

图4是本发明第一实施例的asic阵列结构示意图。如图4所示,于本发明的第一实施例,asic阵列100包括pcb电路板170和asic芯片110,其中asic芯片110设置于pcb电路板170的上底面和下底面,在pcb电路板170的上底面,asic芯片110为16个,呈4×4的阵列均匀分布,在pcb电路板170的下底面,镜像分布着同样数量的asic芯片110;每个asic芯片110包括2个并列的裸片120;每个裸片120包括一个片上网络130;片上网络130包括72个计算节点(node)140和6个反射器节点(reflector)150,72个计算节点140以6×12阵列的形式分布设置;计算节点140-1包括内存(sram)141、混算器(mixer)142和节点通信模块143,每个计算节点140-1具有rmb的内存。如此一来,整个asic阵列100则具有32(2×4×4)个asic芯片110,64(2×32)个裸片120,4608(64×72)个计算节点,每个裸片120具有72*rmb的内存,整个asic阵列则具有约4608*rmb的内存,r的值根据dag的大小设置,如当dag约为4gb时,可设置r=1,即每个计算节点具有1mb的内存,整个asic阵列大约有4.5gb的内存容量,以将4gb的dag分布缓存于asic阵列的计算节点。

图5是本发明第一实施例的片上网络的二维环形拓扑结构示意图。如图5所示,72个计算节点140-1呈6×12阵列均匀分布,定义x为行方向,y为列方向,片上网络130共6列、12行,在每列的最底部还分别有1个反射器节点150,计算节点140-1之间、反射器节点150与计算节点140-1之间通过片上网络的差分线所形成的片上通道144相互连接,使片上网络具有二维度环形拓扑结构,其中每个计算节点140-1都有4个与之直接相连接的计算节点140-1作为紧邻节点。而反射器节点150串联在片上网络130的列中,仅有两个紧邻节点,而不与其它列连接。图6是本发明第一实施例的计算节点之间的片上通道方向示意图。如图6所示,以方向e、w、s、n表示片上网络的二维环形拓扑结构中的计算节点140-1与其紧邻节点的片上通道144端口位置,则反射器节点150仅有n、s方向。

图7是本发明第一实施例的裸片之间的片间通道示意图。如图7所示,裸片120之间的片间通道160包括两条链路对(pair)161,两条链路对161分别对应两个彼此相向的方向,每个链路对161的端点都分别设置一个发送器tx和一个接收器rx,链路对161所对应的方向由发送器tx和接收器rx所在的位置决定。每个链路对161有两条链路162,如此一来,每个片间通道160包括4条链路162。图8是本发明第一实施例的asic芯片之间的片间通道示意图。如图8所示,裸片120之间也通过片间通道160相互连接。由于每个asic芯片110都包含2个裸片120,因此任一对芯片110之间都需要4条片间通道160进行连接。

需要强调的是,asic芯片110内的2个裸片120之间通过2条片间通道160相互连接,其中1条片间通道160可以作为2个裸片120之间的备用连接通道。

于本发明的第一实施例,裸片120以全网状拓扑(fullmeshtopology)结构连接,即每个裸片120都通过片间通道160与所有其他裸片120直接连接。裸片120还包括用于运算任务生成和运算数据插入的功能模块,以及用于计算数据插入和计算结果输出的串并行通道(serdes)180。请再次参照图5,如图5所示,于本发明的第一实施例,片上网络的72个计算节点140-1中有64个计算节点连接串并行通道144,剩余8个计算节点连接功能模块。于图5中,深色节点代表与功能模块相连接的功能节点140-2,浅色节点代表与串并联通道相连接的计算节点140-1。

图9是本发明第二实施例的一种基于asic阵列的数据处理板的结构示意图。如图9所示,于本发明的第二实施例,提供一种基于asic阵列的数据处理板,该数据处理板包括asic阵列100,控制器单元(controller)210,电源(power)220和温度管理单元(thermalmanagement),其中温度管理单元包括温度传感器(sensors)230、散热器240。asic阵列100用于接收控制器单元210传来的数据并对其进行散列计算,当得到满足要求的结果后,将其传送给控制器单元210;控制器单元210分别与asic阵列100和温度管理单元连接,用于监视asic阵列的散列计算,接收外部数据后将其传送给asic阵列,并输出asic阵列获取的结果;电源220用于将直流输入电压转换为工作电压,并将工作电压提供给数据处理板的asic阵列100、控制器单元210及其他模块;温度管理单元可以将通过温度传感器230获得的数据处理板的温度信息发送给控制器单元210,还可以接收控制器单元210的指令,温度管理单元根据控制器单元210的指令发送给散热器240,散热器240的风扇控制器以启动或关闭风扇,或调整风扇转速,也可以在不涉及系统软件的情况下控制电源工作状态,例如当温度传感器230检测到数据处理板200温度过高时控制切断电源。于本发明的第二实施例中,控制器单元210可以采用运行linux操作系统的具有4gbram的zynqzu3cg现场可编程门阵列fpga。

于本发明的第二实施例中,还包括引导单元、调试单元和状态灯,其中引导单元用于控制器单元的启动引导,例如是μsd存储卡或其他具备引导功能的存储介质,本发明并不以此为限;调试单元可访问控制器单元的串行控制台和jtag,用于对控制器单元进行调试并提供调试参数,例如是usb全速设备等,本发明并不以此为限;状态灯用于通过色彩和/或亮度变化显示数据处理板的工作状态,例如是led等元件。

本发明公开的asic阵列及使用asic阵列的数据处理板,用于使用例如是sha3散列函数的散列计算,满足以太坊的工作量验证算法pow的大内存需求。图10是本发明第三实施例的区块挖掘设备结构示意图。如图10所示,于本发明的第三实施例,公开了一种用于以太坊区块挖掘的区块挖掘设备500,包括网络通信模块400、任务分配模块300及前述的数据处理板200,其中网络通信模块400用于与以太坊的数据通信,例如是高速网卡等设备;任务分配模块400用于将获取的以太坊区块挖掘数据分发给数据处理板,并将数据处理板得到的结果通过网络通信模块发送至以太坊;区块挖掘设备500包括一个或多个数据处理板200,数据处理板200对任务分配模块400分发的数据进行处理,以进行区块挖掘。本发明的第三实施例的区块挖掘设备500还包括供电模块、散热模块、机箱等,属于区块挖掘领域中的常见技术,故这里不再赘述。

虽然本发明已以实施例公开如上,而并非用以限定本发明,任何本技术领域的技术人员,在未脱离本发明的精神与范围内,可对其进行等效修改或变更,均应包含于本发明的权利要求书保护范围中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1