首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种XMR挖矿算法的硬件实现方法及装置_北京比特大陆科技有限公司_201810037132.X 

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

申请日:2018-01-15

公开(公告)日:2021-06-29

公开(公告)号:CN110046888B

主分类号:G06Q20/38(20120101)

分类号:G06Q20/38(20120101);G06Q20/06(20120101);H04L9/06(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.06.29#授权;2019.08.16#实质审查的生效;2019.07.23#公开

摘要:本发明涉及虚拟货币挖矿技术领域,公开了一种XMR挖矿算法的硬件实现方法及装置,通过获取初始数据;通过Keccak算法,对所述初始数据进行计算,以生成第一数据;对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中;从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,执行100万次该操作,以获取每次操作的第三数据;根据最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。本发明实现的算力高达12k,为GPU设备性能的十几倍,功耗低、节约能源。

主权项:1.一种XMR挖矿算法的硬件实现方法,其特征在于,包括:步骤S1、获取初始数据;步骤S2、通过Keccak算法,对所述初始数据进行计算,以生成第一数据;步骤S3、对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中,其中,AES加密计算由8个并行的AES加密计算模块完成;步骤S4、从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,并将所述第三数据写回所述存储区,并根据所述第三数据,获得下次读取16字节的所述第二数据的读取地址;根据获得的读取地址,从所述存储区中读取16字节的所述第二数据,执行100万次本步骤的逻辑运算操作,以获取每次操作的第三数据,其中,最后一次执行本步骤的逻辑运算操作后获取的第三数据为最后一个第三数据;步骤S5、根据最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果;其中,步骤S4中的100万次的逻辑运算操作划分为25万轮操作,每轮操作包括4次逻辑运算操作,具体包括:步骤S4-1、根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_c的更新值,其中,查找表输入值为每次读取的16字节的第二数据;根据中间寄存器ctx_c更新值的第20位至第4位作为步骤S4-2中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第一次逻辑运算的第三数据;步骤S4-2、根据步骤S4-1获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_c的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第一中间值mult_o_1的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第一中间值mult_o_1的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第一中间值mult_o_1的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第一中间值mult_o_1的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第二次逻辑运算的第三数据;步骤S4-3、根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_b的更新值;根据中间寄存器ctx_b更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第三次逻辑运算的第三数据;步骤S4-4、根据步骤S4-3获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_b的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第二中间值mult_o_2的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第二中间值mult_o_2的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第二中间值mult_o_2的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第二中间值mult_o_2的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第四次逻辑运算的第三数据。

全文数据:一种XMR挖矿算法的硬件实现方法及装置技术领域本发明涉及虚拟货币挖矿技术领域,尤其涉及一种XMR挖矿算法的硬件实现方法及装置。背景技术Xmrcoin门罗币是一种虚拟的数字货币,采用POWProofofwork的挖矿算法。POW挖矿算法的重点在于,在单位时间内,算力越高,获得的虚拟货币越多,功耗越小,花费的电费越少,则获得的收益越多。现有技术中,xmrcoin的主流挖矿设备为GPU显卡,但算力不高,约为1000Hashs,即每秒完成1000次siacoin算法所规定的运算,功耗较大,约为135W,浪费能源。发明内容本发明提供一种XMR挖矿算法的硬件实现方法及装置,解决现有技术中xmrcoin挖矿设备算力不高、功耗较大、浪费能源的技术问题。本发明的目的是通过以下技术方案实现的:一种XMR挖矿算法的硬件实现方法,包括:步骤S1、获取初始数据;步骤S2、通过Keccak算法,对所述初始数据进行计算,以生成第一数据;步骤S3、对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中,其中,AES加密计算由8个并行的AES加密计算模块完成;步骤S4、从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,并将所述第三数据写回所述存储区,并根据所述第三数据,获得下次读取16字节的所述第二数据的读取地址;根据获得的读取地址,从所述存储区中读取16字节的所述第二数据,执行100万次本步骤的逻辑运算操作,以获取每次操作的第三数据;步骤S5、根据最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。一种XMR挖矿算法的硬件实现装置,包括:获取模块,用于获取初始数据;Keccak算法模块,用于通过Keccak算法,对所述初始数据进行计算,以生成第一数据;加密计算模块,用于对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中,其中,AES加密计算由8个并行的AES加密计算模块完成;存储区,用于存储第二数据;逻辑运算模块,用于从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,并将所述第三数据写回所述存储区,并根据所述第三数据,获得下次读取16字节的所述第二数据的读取地址;根据获得的读取地址,从所述存储区中读取16字节的所述第二数据,执行100万次本步骤的逻辑运算操作,以获取每次操作的第三数据;哈希运算模块,用于根据逻辑运算模块最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。本发明提供一种XMR挖矿算法的硬件实现方法及装置,通过获取初始数据;通过Keccak算法,对所述初始数据进行计算,以生成第一数据;对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中;从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,执行100万次该操作,以获取每次操作的第三数据;根据最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。本发明实现的算力高达12k,为GPU设备性能的十几倍,功耗低、节约能源。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可根据这些附图获得其他的附图。图1为本发明实施例的一种XMR挖矿算法的硬件实现方法的流程图;图2为本发明实施例的一种XMR挖矿算法的硬件实现装置的结构图。具体实施方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明实施例提供了一种XMR挖矿算法的硬件实现方法,如图1所示,包括:步骤S1、获取初始数据;其中,从矿池中获得约80字节的初始数据。步骤S2、通过Keccak算法,对所述初始数据进行计算,以生成第一数据;步骤S3、对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中;其中,AES加密计算由8个并行的AES加密计算模块完成;所述存储区由32个存储单元组成,每个存储单元设有1个地址通道,所述存储单元的深度为4K位,宽度为16字节。本步骤中每次由8个AES加密计算模块并行输出128B字节的输出数据,存储起来,共生成16K*128B=2MB数据。步骤S4、从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,执行100万次该操作,以获取每次操作的第三数据;其中,从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,并将所述第三数据写回所述存储区,并根据所述第三数据,获得下次读取16字节的所述第二数据的读取地址;根据获得的读取地址,从所述存储区中读取16字节的所述第二数据,执行100万次本步骤的逻辑运算操作,以获取每次操作的第三数据;步骤S4中的100万次的逻辑运算操作划分为25万轮操作,每轮操作包括4次逻辑运算操作,具体包括:步骤S4-1、根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_c的更新值,其中,查找表输入值为每次读取的16字节的第二数据;根据中间寄存器ctx_c更新值的第20位至第4位作为步骤S4-2中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第一次逻辑运算的第三数据;本发明实施例中预先设置有16个查找表,每个查找表都是8bit地址输入,8bit输出结果。查找表为固定的,由算法设定16个查找表的输入,是每次读回来的16B的第二数据rddata,输出依次为:tfn_00~tfn_33,00,01,02,03,10,11,…33,相应地,按照步骤S4-1的操作,ctx_c[0*32+:32]=ctx_a[0*32+:32]^tfn_00^tfn_01^tfn_02^tfn_03;ctx_c[1*32+:32]=ctx_a[1*32+:32]^tfn_10^tfn_11^tfn_12^tfn_13;ctx_c[2*32+:32]=ctx_a[2*32+:32]^tfn_20^tfn_21^tfn_22^tfn_23;ctx_c[3*32+:32]=ctx_a[3*32+:32]^tfn_30^tfn_31^tfn_32^tfn_33;下一次骤S4-2中读取16字节的第二数据的读取地址为:ctx_c[20:4]17bit,对应128K地址范围。第一次逻辑运算的第三数据等于ctx_b^ctx_c;另外,正常情况下需要花费1个时钟周期读出数据,下一个时钟周期完成运算,将结果数据写回存储区,同时用第二数据结果数据去读下一个地址,取得数据。因此预计每次运算花费2个时钟周期,100万次共计200万个时钟周期。但是有的时候,运算结果指向的下一次地址和本次的数据地址在同一个小的存储区中,就存在需要同时对1个小存储子单元同时读写的情况,而我们只设定了每个存储单元只有1个地址接口,不能同时读写,因此这种情况下,需要额外等一拍,用于错开读写。由于每次运算近似随机,共有32块小存储单元,产生地址冲突的概率就是132.因此总计花费的时间为100*2*3132+3*132=202万个时钟周期,比200万大约多了1%。步骤S4-2、根据步骤S4-1获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_c的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第一中间值mult_o_1的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第一中间值mult_o_1的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第一中间值mult_o_1的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第一中间值mult_o_1的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第二次逻辑运算的第三数据;步骤S4-2的操作用公式表示如下:mult_o_1=rddata[63:0]*ctx_c[63:0]ctx_a[63:0]=rddata[63:0]^{mult_o_1[127:64]+ctx_a[63:0]};ctx_a[127:64]=rddata[127:64]^{mult_o_1[63:0]+ctx_a[127:64]};下一次步骤S4-3读取16字节的第二数据的读取地址为ctx_a[20:4];{mult_o_1[63:0]+ctx_a[127:64]或mult_o_1[127:64]+ctx_a[63:0]}。步骤S4-3、根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_b的更新值;根据中间寄存器ctx_b更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第三次逻辑运算的第三数据;步骤S4-3的操作用公式表示如下:ctx_b[0*32+:32]=ctx_a[0*32+:32]^tfn_00^tfn_01^tfn_02^tfn_03;ctx_b[1*32+:32]=ctx_a[1*32+:32]^tfn_10^tfn_11^tfn_12^tfn_13;ctx_b[2*32+:32]=ctx_a[2*32+:32]^tfn_20^tfn_21^tfn_22^tfn_23;ctx_b[3*32+:32]=ctx_a[3*32+:32]^tfn_30^tfn_31^tfn_32^tfn_33;下一次骤S4-4中读取16字节的第二数据的读取地址为:ctx_b[20:4]17bit,对应128K地址范围。第三次逻辑运算的第三数据等于ctx_c^ctx_b;步骤S4-4、根据步骤S4-3获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_b的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第二中间值mult_o_2的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第二中间值mult_o_2的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第二中间值mult_o_2的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第二中间值mult_o_2的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第四次逻辑运算的第三数据。步骤S4-4的操作用公式表示如下:mult_o_2=rddata[63:0]*ctx_b[63:0];ctx_a[63:0]=rddata[63:0]^{mult_o_2[127:64]+ctx_a[63:0]};ctx_a[127:64]=rddata[127:64]^{mult_o_2[63:0]+ctx_a[127:64]};下一次步骤S4-1读取16字节的第二数据的读取地址为ctx_a[20:4];{mult_o_2[63:0]+ctx_a[127:64]或mult_o_2[127:64]+ctx_a[63:0]}。步骤S4之前还可以包括从步骤S3中最终生成的一个第二数据中随机选取3个16字节的存入3个16字节的中间寄存器ctx_a、ctx_b、ctx_c中作为初始值。步骤S5、根据最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。本发明实施例提供一种XMR挖矿算法的硬件实现方法,通过获取初始数据;通过Keccak算法,对所述初始数据进行计算,以生成第一数据;对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中;从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,执行100万次该操作,以获取每次操作的第三数据;根据最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。本发明实现的算力高达12k,为GPU设备性能的十几倍,功耗低、节约能源。本发明实施例还提供了一种XMR挖矿算法的硬件实现装置,如图2所示,包括:获取模块210,用于获取初始数据;Keccak算法模块220,用于通过Keccak算法,对所述初始数据进行计算,以生成第一数据;加密计算模块230,用于对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中,其中,AES加密计算由8个并行的AES加密计算模块完成;存储区240,用于存储第二数据;逻辑运算模块250,用于从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,并将所述第三数据写回所述存储区,并根据所述第三数据,获得下次读取16字节的所述第二数据的读取地址;根据获得的读取地址,从所述存储区中读取16字节的所述第二数据,执行100万次本步骤的逻辑运算操作,以获取每次操作的第三数据;哈希运算模块260,用于根据逻辑运算模块最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。其中,逻辑运算模块250,包括:第一逻辑运算单元251,用于根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_c的更新值,其中,查找表输入值为每次读取的16字节的第二数据;根据中间寄存器ctx_c更新值的第20位至第4位作为步骤S4-2中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第一次逻辑运算的第三数据;第二逻辑运算单元252,用于根据步骤S4-1获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_c的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第一中间值mult_o_1的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第一中间值mult_o_1的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第一中间值mult_o_1的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第一中间值mult_o_1的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第二次逻辑运算的第三数据;第三逻辑运算单元253,用于根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_b的更新值;根据中间寄存器ctx_b更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第三次逻辑运算的第三数据;第四逻辑运算单元254,用于根据步骤S4-3获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_b的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第二中间值mult_o_2的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第二中间值mult_o_2的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第二中间值mult_o_2的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第二中间值mult_o_2的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第四次逻辑运算的第三数据。所述逻辑运算模块250还用于从所述加密计算模块230中最终生成的一个第二数据中随机选取3个16字节的存入3个16字节的中间寄存器ctx_a、ctx_b、ctx_c中作为初始值。所述获取模块210与矿池连接,并具体用于从矿池中获得80字节的初始数据。所述存储区240包括32个存储单元,每个存储单元设有1个地址通道,所述存储单元的深度为4K位,宽度为16字节。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROMRAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备可以是个人计算机,服务器,或者网络设备等执行本发明各个实施例或者实施例的某些部分所述的方法。以上对本发明进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

权利要求:1.一种XMR挖矿算法的硬件实现方法,其特征在于,包括:步骤S1、获取初始数据;步骤S2、通过Keccak算法,对所述初始数据进行计算,以生成第一数据;步骤S3、对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中,其中,AES加密计算由8个并行的AES加密计算模块完成;步骤S4、从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,并将所述第三数据写回所述存储区,并根据所述第三数据,获得下次读取16字节的所述第二数据的读取地址;根据获得的读取地址,从所述存储区中读取16字节的所述第二数据,执行100万次本步骤的逻辑运算操作,以获取每次操作的第三数据;步骤S5、根据最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。2.根据权利要求1所述的XMR挖矿算法的硬件实现方法,其特征在于,步骤S4中的100万次的逻辑运算操作划分为25万轮操作,每轮操作包括4次逻辑运算操作,具体包括:步骤S4-1、根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_c的更新值,其中,查找表输入值为每次读取的16字节的第二数据;根据中间寄存器ctx_c更新值的第20位至第4位作为步骤S4-2中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第一次逻辑运算的第三数据;步骤S4-2、根据步骤S4-1获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_c的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第一中间值mult_o_1的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第一中间值mult_o_1的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第一中间值mult_o_1的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第一中间值mult_o_1的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第二次逻辑运算的第三数据;步骤S4-3、根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_b的更新值;根据中间寄存器ctx_b更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第三次逻辑运算的第三数据;步骤S4-4、根据步骤S4-3获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_b的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第二中间值mult_o_2的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第二中间值mult_o_2的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第二中间值mult_o_2的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第二中间值mult_o_2的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第四次逻辑运算的第三数据。3.根据权利要求2所述的XMR挖矿算法的硬件实现方法,其特征在于,步骤S4之前包括:从步骤S3中最终生成的一个第二数据中随机选取3个16字节的存入3个16字节的中间寄存器ctx_a、ctx_b、ctx_c中作为初始值。4.根据权利要求1所述的XMR挖矿算法的硬件实现方法,其特征在于,步骤S1包括:从矿池中获得80字节的初始数据。5.根据权利要求1所述的XMR挖矿算法的硬件实现方法,其特征在于,所述存储区由32个存储单元组成,每个存储单元设有1个地址通道,所述存储单元的深度为4K位,宽度为16字节。6.一种XMR挖矿算法的硬件实现装置,其特征在于,包括:获取模块,用于获取初始数据;Keccak算法模块,用于通过Keccak算法,对所述初始数据进行计算,以生成第一数据;加密计算模块,用于对所述第一数据循环执行1.6万次AES加密计算,并将每次生成的128字节的第二数据存储于存储区中,其中,AES加密计算由8个并行的AES加密计算模块完成;存储区,用于存储第二数据;逻辑运算模块,用于从所述存储区中读取16字节的所述第二数据,进行逻辑运算,以获得16字节的第三数据,并将所述第三数据写回所述存储区,并根据所述第三数据,获得下次读取16字节的所述第二数据的读取地址;根据获得的读取地址,从所述存储区中读取16字节的所述第二数据,执行100万次本步骤的逻辑运算操作,以获取每次操作的第三数据;哈希运算模块,用于根据逻辑运算模块最后一次获取的第三数据的最低两比特,从4个哈希算法中选择其中之一对所述最后一个第三数据进行哈希计算,以获得最终结果。7.根据权利要求6所述的XMR挖矿算法的硬件实现装置,其特征在于,逻辑运算模块,包括:第一逻辑运算单元,用于根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_c的更新值,其中,查找表输入值为每次读取的16字节的第二数据;根据中间寄存器ctx_c更新值的第20位至第4位作为步骤S4-2中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第一次逻辑运算的第三数据;第二逻辑运算单元,用于根据步骤S4-1获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_c的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第一中间值mult_o_1的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第一中间值mult_o_1的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第一中间值mult_o_1的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第一中间值mult_o_1的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第二次逻辑运算的第三数据;第三逻辑运算单元,用于根据中间寄存器ctx_a的数值及4组16字节的查找表输出值进行逻辑异或运算获得中间寄存器ctx_b的更新值;根据中间寄存器ctx_b更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;通过中间寄存器ctx_b的数值与中间寄存器ctx_c的更新值进行异或运算,以获得第三次逻辑运算的第三数据;第四逻辑运算单元,用于根据步骤S4-3获得的读取地址,读取的128比特的第二数据rddata;将中间寄存器ctx_b的更新值的63位至0位与第二数据rddata的63位至0位进行相乘操作,以获得128比特的第一中间值mult_o_1;将第二数据rddata的63位至0位与第二中间值mult_o_2的127位至64位和中间寄存器ctx_a的63位至0位之和进行异或运算,以获得中间寄存器ctx_a的63位至0位的更新值;将第二数据rddata的127位至64位与第二中间值mult_o_2的63位至0位和中间寄存器ctx_a的127位至64位之和进行异或运算获得中间寄存器ctx_a的127位至64位的更新值;将中间寄存器ctx_a更新值的第20位至第4位作为步骤S4-3中读取16字节的第二数据的读取地址;将第二中间值mult_o_2的63位至0位与中间寄存器ctx_a更新值的第127位至第64位之和,或第二中间值mult_o_2的127位至64位与中间寄存器ctx_a更新值的第63位至第0位之和作为第四次逻辑运算的第三数据。8.根据权利要求7所述的XMR挖矿算法的硬件实现装置,其特征在于,所述逻辑运算模块还用于从所述加密计算模块中最终生成的一个第二数据中随机选取3个16字节的存入3个16字节的中间寄存器ctx_a、ctx_b、ctx_c中作为初始值。9.根据权利要求6所述的XMR挖矿算法的硬件实现装置,其特征在于,获取模块与矿池连接,并具体用于从矿池中获得80字节的初始数据。10.根据权利要求6所述的XMR挖矿算法的硬件实现装置,其特征在于,所述存储区包括32个存储单元,每个存储单元设有1个地址通道,所述存储单元的深度为4K位,宽度为16字节。

百度查询: 北京比特大陆科技有限公司 一种XMR挖矿算法的硬件实现方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。