一种zerocash挖矿算法的硬件实现方法及装置制造方法及图纸

技术编号:21832486 阅读:35 留言:0更新日期:2019-08-10 17:56
本发明专利技术涉及虚拟货币挖矿技术领域,公开了一种zerocash挖矿算法的硬件实现方法及装置,通过子核中的BLAKE2b算法模块,分段生成两百万条原始数据;根据所述原始数据的0至19比特,计算所述原始数据对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;根据所述子核坐标,将所述原始数据及所述原始数据的序号通过传输总线存储至所述子核坐标对应的子核中的第一存储器;在运算过程中,将原始数据的序号及每轮运算的中间结果的序号作为zero cash算法的最终结果。本发明专利技术提高了计算的速度及算力,降低了功耗。

Hardware implementation method and device of zerocash mining algorithm

【技术实现步骤摘要】
一种zerocash挖矿算法的硬件实现方法及装置
本专利技术涉及虚拟货币挖矿
,尤其涉及一种zerocash挖矿算法的硬件实现方法及装置。
技术介绍
zerocash是一种虚拟的数字货币,采用POW(proofofwork)的挖矿算法。POW挖矿算法的重点在于,在单位时间内,算力越高,获得的虚拟货币越多,功耗越小,花费的电费越少,则获得的收益越多。现有技术的挖zerocash的主流设备是GPU显卡,算力不高,约为250Hash/s,由于每次运算可找出两个解,因此每秒完成125次zerocash算法所规定的运算功耗较大,约为135W,浪费能源。
技术实现思路
本专利技术提供一种zerocash挖矿算法的硬件实现方法及装置,解决现有技术中挖矿设备算力不高、功耗较大,浪费能源的技术问题。一种zerocash挖矿算法的硬件实现方法,包括:步骤S1、通过子核中的BLAKE2b算法模块,分段生成两百万条原始数据,其中,原始数据位数为200比特;步骤S2、根据所述原始数据的0至19比特,计算所述原始数据对应存储的哈希表索引,根据所述哈希表索引确定子核坐标,其中,子核数目为64,每个子核包含683个哈希表,所述子核坐标包括行标识和列标识;步骤S3、根据所述子核坐标,将所述原始数据及所述原始数据的序号通过传输总线存储至所述子核坐标对应的子核中的第一存储器,其中,所述原始数据的序号为所述原始数据对应存储的哈希表索引;步骤S4、从所述第一存储器读取数据,并前20比特相同的两个数据进行异或运算,以获得中间结果;步骤S5、根据所述计算结果的次20比特,计算所述中间结果对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;步骤S6、根据所述子核坐标,将所述中间结果及所述中间结果的序号通过传输总线存储至所述子核坐标对应的子核中的第二存储器,其中,所述中间结果的序号为所述中间结果对应存储的哈希表索引及相同的两个数据在哈希表中的偏移值;步骤S6、跳转至步骤S4重复执行8轮运算,将原始数据的序号及每轮运算的中间结果的序号作为zerocash算法的最终结果,其中,每轮运算中所述第一存储器及所述二存储器交替操作。一种zerocash挖矿算法的硬件实现装置,包括:64个子核,每个子核包括BLAKE2b算法模块、第一计算模块、第二计算模块、第一存储器、第二存储器和收发模块,其中,所述BLAKE2b算法模块,用于根据输入生成原始数据,其中,原始数据位数为200比特;所述第一计算模块,用于根据所述原始数据的0至19比特,计算所述原始数据对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;根据所述计算结果的次20比特,计算所述中间结果对应存储的哈希表索引,根据所述哈希表索引确定子核坐标,其中,子核数目为64,每个子核包含683个哈希表,所述子核坐标包括行标识和列标识;所述第二计算模块,用于从所述第一存储器读取数据,并前20比特相同的两个数据进行异或运算,以获得中间结果;所述第一存储器和所述第二存储器用于交替存储所述第二计算模块的计算结果;所述收发模块,用于根据所述子核坐标,将所述原始数据及所述原始数据的序号通过传输总线存储至所述子核坐标对应的子核中的第一存储器;根据所述子核坐标,将所述中间结果及所述中间结果的序号通过传输总线存储至所述子核坐标对应的子核中的第二存储器,其中,所述中间结果的序号为所述中间结果对应存储的哈希表索引及相同的两个数据在哈希表中的偏移值。本专利技术提供一种zerocash挖矿算法的硬件实现方法及装置,通过子核中的BLAKE2b算法模块,分段生成两百万条原始数据;根据所述原始数据的0至19比特,计算所述原始数据对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;根据所述子核坐标,将所述原始数据及所述原始数据的序号通过传输总线存储至所述子核坐标对应的子核中的第一存储器;从所述第一存储器读取数据,并前20比特相同的两个数据进行异或运算,以获得中间结果;根据所述计算结果的次20比特,计算所述中间结果对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;根据所述子核坐标,将所述中间结果及所述中间结果的序号通过传输总线存储至所述子核坐标对应的子核中的第二存储器;重复执行8轮运算,将原始数据的序号及每轮运算的中间结果的序号作为zerocash算法的最终结果。本专利技术提高了计算的速度及算力,降低了功耗。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可根据这些附图获得其他的附图。图1为本专利技术实施例的一种zerocash挖矿算法的硬件实现方法的流程图;图2为本专利技术实施例的一种zerocash挖矿算法的硬件实现装置的结构示意图;图3为本专利技术实施例的一种zerocash挖矿算法的硬件实现装置中子核的结构示意图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。本专利技术实施例提供了一种zerocash挖矿算法的硬件实现方法,如图1所示,包括:步骤S1、通过子核中的BLAKE2b算法模块,分段生成两百万条原始数据;其中,原始数据位数为200比特,此处64个子核subcore内的BLAKE2b算法模块并行启动,相应的,subcore0的BLAKE2b计算范围是0~2M/64,subcore1的blake2b计算范围是2M/64~2M/64*2,以此类推,再次不再赘述。步骤S2、根据所述原始数据的0至19比特,计算所述原始数据对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;其中,每个subcore生成的200bitblake数据,取出前20bit,将其除以24,得到商的结果在0-43691之间。该商的结果就是table的index。这43691个table顺序分布在64个subcore内。商的结果决定了该条数据应该存放在哪里。43691/64=683.(每个subcore的sram都有683个table,每个table可以容纳64条数据),本步骤中200万数据为21bit数据,取前20bit除以24来分桶,平均情况下预计每个桶内会有24x(2^21/2^20)=48个数。数字是随机的,因此每个桶内的数据肯定有波动,桶如果过浅,那么会丢失大量数据,每轮迭代后数据会越来越少,最终找不出规定的解,或者找出规定解的概率大幅降低。桶也不是越深越好,因为桶需要占用存储空间,浪费资源。本专利技术实施例中通过组合逻辑推理,64深的桶内放置48个数据比较合理。存储空间不至于浪费太多,也不会丢失太多数据。步骤S3、根据所述子核坐标,将所述原始数据及所述原始数据的序号通过传输总线存储至所述子核坐标对应的子核中的第一存储器;其中,所述原始数据的序号为所述原始数据对应存储的哈希表索引;步骤S4、从所述第一存储器读取数据,并前20比特相同的两个数据进行异或运算,以获得中间结果;步骤S5、根据所述计算结果的次20比特,计算所述中间结果对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;步骤S6、根据所述子核坐标,将所述中间结果及所述中间结果的序号本文档来自技高网...

【技术保护点】
1.一种zerocash挖矿算法的硬件实现方法,其特征在于,包括:步骤S1、通过子核中的BLAKE2b算法模块,分段生成两百万条原始数据,其中,原始数据位数为200比特;步骤S2、根据所述原始数据的0至19比特,计算所述原始数据对应存储的哈希表索引,根据所述哈希表索引确定子核坐标,其中,子核数目为64,每个子核包含683个哈希表,所述子核坐标包括行标识和列标识;步骤S3、根据所述子核坐标,将所述原始数据及所述原始数据的序号通过传输总线存储至所述子核坐标对应的子核中的第一存储器,其中,所述原始数据的序号为所述原始数据对应存储的哈希表索引;步骤S4、从所述第一存储器读取数据,并前20比特相同的两个数据进行异或运算,以获得中间结果;步骤S5、根据所述计算结果的次20比特,计算所述中间结果对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;步骤S6、根据所述子核坐标,将所述中间结果及所述中间结果的序号通过传输总线存储至所述子核坐标对应的子核中的第二存储器,其中,所述中间结果的序号为所述中间结果对应存储的哈希表索引及相同的两个数据在哈希表中的偏移值;步骤S6、跳转至步骤S4重复执行8轮运算,将原始数据的序号及每轮运算的中间结果的序号作为zero cash算法的最终结果,其中,每轮运算中所述第一存储器及所述二存储器交替操作。...

【技术特征摘要】
1.一种zerocash挖矿算法的硬件实现方法,其特征在于,包括:步骤S1、通过子核中的BLAKE2b算法模块,分段生成两百万条原始数据,其中,原始数据位数为200比特;步骤S2、根据所述原始数据的0至19比特,计算所述原始数据对应存储的哈希表索引,根据所述哈希表索引确定子核坐标,其中,子核数目为64,每个子核包含683个哈希表,所述子核坐标包括行标识和列标识;步骤S3、根据所述子核坐标,将所述原始数据及所述原始数据的序号通过传输总线存储至所述子核坐标对应的子核中的第一存储器,其中,所述原始数据的序号为所述原始数据对应存储的哈希表索引;步骤S4、从所述第一存储器读取数据,并前20比特相同的两个数据进行异或运算,以获得中间结果;步骤S5、根据所述计算结果的次20比特,计算所述中间结果对应存储的哈希表索引,根据所述哈希表索引确定子核坐标;步骤S6、根据所述子核坐标,将所述中间结果及所述中间结果的序号通过传输总线存储至所述子核坐标对应的子核中的第二存储器,其中,所述中间结果的序号为所述中间结果对应存储的哈希表索引及相同的两个数据在哈希表中的偏移值;步骤S6、跳转至步骤S4重复执行8轮运算,将原始数据的序号及每轮运算的中间结果的序号作为zerocash算法的最终结果,其中,每轮运算中所述第一存储器及所述二存储器交替操作。2.根据权利要求1所述的zerocash挖矿算法的硬件实现方法,其特征在于,64个子核,按照8*8的形式进行布局,所述步骤S3包括:当子核坐标为当前子核坐标时,将所述原始数据及所述原始数据的序号存储至当前子核中的第一存储器;当子核的行标识大于当前子核的行标识时,将所述原始数据及所述原始数据的序号通过第一传输总线存储至所述子核坐标对应的子核中的第一存储器;当子核的行标识小于当前子核的行标识时,将所述原始数据及所述原始数据的序号通过第二传输总线存储至所述子核坐标对应的子核中的第一存储器;当子核的行标识等于当前子核的行标识时,将所述原始数据及所述原始数据的序号通过第一传输总线或第二传输总线存储至所述子核坐标对应的子...

【专利技术属性】
技术研发人员:李超白洋杨存永詹克团
申请(专利权)人:北京比特大陆科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1