本发明属于数据处理领域,特别是涉及一种挖矿业务处理方法、装置和系统。
背景技术:
比特币(Bit Coin)是一种分布式的虚拟货币,它可以通过“挖矿”来生成新的比特币。所谓“挖矿”实质上就是利用计算机解决一项复杂的数学问题,来保证比特币分布式记账系统的一致性。网络会自动调整数学问题的难度,让整个网络约每10分钟得到一个合格的答案。随后会新生成一定量的比特币作为赏金,奖励获得答案的人。
云计算(Cloud Computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云计算是通过网络提供可伸缩的廉价的分布式计算能力。将云计算技术与比特币结合就产生了云计算矿池,也称为云矿池。
云矿池通过向矿机下发工作任务(job)通知矿机进行“挖矿”,随着越来越多矿工的加入,挖矿业务的竞争日益激烈,对矿机运算能力(也称为算力)的需求也不断提升。
目前,在云矿池向矿机下发工作任务后,矿机通过中央控制单元(CPU)进行运算产生工作数据(work),发送给算力板,同时CPU接收算力板返回的输出结果数据(gd nonce),对输出结果数据进行校验,将符合预设难度值的输出结果数据返回云矿池,完成“挖矿”。其中,工作数据的产生与输出结果数据的校验均由于矿机的控制单元进行,使矿机的算力受到了一定程度的制约。
技术实现要素:
本发明实施例要解决的一个技术问题是:提供一种挖矿业务处理方法、装置和系统,以提升矿机的算力。
根据本发明实施例的一个方面,提供一种挖矿业务处理方法,包括:
控制单元将矿池下发的工作任务中的数据发送给运算单元;
所述运算单元根据所述工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送所述工作数据;其中,所述运算单元在根据所述工作任务中的数据进行哈希运算的过程中,获得一个中间结果数据,并对所述中间结果数据进行存储,所述工作数据包括所述中间结果数据;
所述运算单元接收算力板对所述工作数据进行运算产生的输出结果数据,对所述输出结果数据进行存储;
所述控制单元每获取一个所述中间结果数据,保持所述中间结果数据不变,获取所述输出结果数据,对所述输出结果数据进行校验,直至获得符合预设条件的所述输出结果数据。
在基于本发明上述方法的另一个实施例中,所述哈希运算采用Sha256算法。
在基于本发明上述方法的另一个实施例中,所述工作任务中的数据包括:奖励数据和交易数据。
在基于本发明上述方法的另一个实施例中,所述运算单元根据所述工作任务中的数据进行哈希运算,生成工作数据包括:
根据奖励数据进行哈希运算,获得第一哈希值;
根据所述第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值;
判断当前的交易数据是否为最后一个交易数据;
若当前的交易数据为最后一个交易数据,以所述第二哈希值作为交易根,根据所述交易根进行哈希运算,获得一个中间结果数据;
根据所述中间结果数据,生成工作数据,以向算力板发送所述工作数据;
若当前的交易数据不为最后一个交易数据,以下一个交易数据作为当前的交易数据,执行所述根据所述第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值的操作。
在基于本发明上述方法的另一个实施例中,所述获得第一哈希值包括:
根据所述奖励数据进行第一次哈希运算,获得第三哈希值;
根据所述第三哈希值与预设的第一数据进行第二次哈希运算,获得所述第一哈希值。
在基于本发明上述方法的另一个实施例中,所述获得第二哈希值包括:
根据所述第一哈希值与当前的交易数据进行第一次哈希运算,获得第四哈希值;
根据所述第四哈希值与预设的第二数据进行第二次哈希运算,获得所述第二哈希值。
在基于本发明上述方法的另一个实施例中,所述根据奖励数据进行哈希运算之前还包括:
将所述奖励数据扩展为满足Sha256算法要求的数据。
在基于本发明上述方法的另一个实施例中,所述运算单元向算力板发送工作数据包括:
所述运算单元向算力板每发送一个工作数据,生成一个表示所述工作数据次序的工作ID;
对所述工作ID进行存储,并根据所述工作ID按照预设的算法计算一个存储地址;
将所述工作数据对应的中间结果数据存储于所述存储地址。
在基于本发明上述方法的另一个实施例中,所述控制单元获取一个所述中间结果数据包括:所述运算单元接收算力板返回的初始输出结果数据,对所述初始输出结果数据进行存储,并向所述控制单元返回一个工作ID;
所述控制单元根据所述工作ID按照预设的算法计算一个存储地址,从所述存储地址中获取一个所述中间结果数据。
在基于本发明上述方法的另一个实施例中,所述控制单元对所述输出结果数据进行校验包括:
所述控制单元检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值;
若当前的输出结果数据进行哈希运算的结果大于或等于预设的难度值,将所述当前的输出结果数据返回所述矿池;
若当前的输出结果数据进行哈希运算的结果小于预设的难度值,获取下一个输出结果数据作为当前的输出结果数据,执行所述检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值的操作。
根据本发明实施例的另一个方面,提供一种挖矿业务处理装置,包括:
控制单元,用于将矿池下发的工作任务中的数据发送给运算单元;以及每获取一个中间结果数据,保持所述中间结果数据不变,获取输出结果数据,对所述输出结果数据进行校验,直至获得符合预设条件的所述输出结果数据;
运算单元,用于根据所述工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送所述工作数据;其中,所述运算单元在根据所述工作任务中的数据进行哈希运算的过程中,获得一个所述中间结果数据,并对所述中间结果数据进行存储,所述工作数据包括所述中间结果数据;以及接收算力板对所述工作数据进行运算产生的所述输出结果数据,对所述输出结果数据进行存储。
在基于本发明上述装置的另一个实施例中,所述哈希运算采用Sha256算法。
在基于本发明上述装置的另一个实施例中,所述工作任务中的数据包括:奖励数据和交易数据。
在基于本发明上述装置的另一个实施例中,所述运算单元,具体用于:
根据奖励数据进行哈希运算,获得第一哈希值;
根据所述第一哈希值与当前交易数据进行哈希运算,获得第二哈希值;
判断当前交易数据是否为最后一个交易数据;
若当前的交易数据为最后一个交易数据,以所述第二哈希值作为交易根,根据所述交易根进行哈希运算,获得一个中间结果数据;
根据所述中间结果数据,生成工作数据,以向算力板发送所述工作数据;
若当前的交易数据不为最后一个交易数据,以下一个交易数据作为当前的交易数据,执行所述根据所述第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值的操作。
在基于本发明上述装置的另一个实施例中,所述运算单元,具体用于:
根据所述奖励数据进行第一次哈希运算,获得第三哈希值;
根据所述第三哈希值与预设的第一数据进行第二次哈希运算,获得所述第一哈希值。
在基于本发明上述装置的另一个实施例中,所述运算单元,具体用于:
根据所述第一哈希值与当前的交易数据进行第一次哈希运算,获得第四哈希值;
根据所述第四哈希值与预设的第二数据进行第二次哈希运算,获得所述第二哈希值。
在基于本发明上述装置的另一个实施例中,所述运算单元,还用于将所述奖励数据扩展为满足Sha256算法要求的数据。
在基于本发明上述装置的另一个实施例中,所述运算单元,具体用于:
向算力板每发送一个工作数据,生成一个表示所述工作数据次序的工作ID;
对所述工作ID进行存储,并根据所述工作ID按照预设的算法计算一个存储地址;
将所述工作数据对应的中间结果数据存储于所述存储地址。
在基于本发明上述装置的另一个实施例中,所述运算单元,具体用于接收算力板返回的初始输出结果数据,对所述初始输出结果数据进行存储,并向所述控制单元返回一个工作ID;
所述控制单元,具体用于根据所述工作ID按照预设的算法计算一个存储地址,从所述存储地址中获取一个所述中间结果数据。
在基于本发明上述装置的另一个实施例中,所述控制单元,具体用于:
检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值;
若当前的输出结果数据进行哈希运算的结果大于或等于预设的难度值,将所述当前的输出结果数据返回所述矿池;
若当前的输出结果数据进行哈希运算的结果小于预设的难度值,获取下一个输出结果数据作为当前的输出结果数据,执行所述检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值的操作。
在基于本发明上述装置的另一个实施例中,所述运算单元包括:现场可编程门阵列FPGA;所述控制单元包括:中央处理单元CPU。
根据本发明实施例的又一个方面,提供一种挖矿业务处理系统,包括:上述任意一项所述的挖矿业务处理装置。
基于本发明实施例提供的挖矿业务处理方法、装置和系统,控制单元将矿池下发的工作任务中的数据发送给运算单元;运算单元根据工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送工作数据;其中,运算单元在根据工作任务中的数据进行哈希运算的过程中,获得一个中间结果数据,并对中间结果数据进行存储,工作数据包括中间结果数据;运算单元接收算力板对工作数据进行运算产生的输出结果数据,对输出结果数据进行存储;控制单元每获取一个中间结果数据,保持中间结果数据不变,获取输出结果数据,对输出结果数据进行校验,直至获得符合预设条件的输出结果数据。本发明实施例通过运算单元不断地接收工作任务中的数据进行运算产生工作数据,向算力板发送工作数据,同时,通过控制单元在每一个中间结果数据保持不变时,不断地对算力板返回的输出结果数据进行校验,分工协作,可以提升矿机的算力,使矿机满足不断提升的算力需求,以适应挖矿业务日益激烈的竞争。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1为本发明实施例挖矿业务处理方法一个实施例的流程图。
图2为本发明实施例挖矿业务处理方法另一个实施例的流程图。
图3为本发明实施例挖矿业务处理方法又一个实施例的流程图。
图4为本发明实施例挖矿业务处理装置的一个实施例的结构图。
图5为本发明实施例挖矿业务处理系统的一个实施例的结构图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1为本发明实施例挖矿业务处理方法一个实施例的流程图。如图1所示,该实施例的挖矿业务处理方法包括:
102,控制单元将矿池下发的工作任务中的数据发送给运算单元。
具体实现中,哈希运算采用Sha256算法,Sha256算法的哈希值大小为256bit。Sha256算法是安全散列算法(Secure Hash Algorithm,SHA)系列算法的一种,SHA是美国国家安全局设计,美国国家标准与技术研究院发布的,主要适用于数字签名标准(Digital Signature Standard,DSS)里面定义的数字签名算法(Digital Signature Algorithm,DSA)。
104,运算单元根据工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送工作数据;其中,运算单元在根据工作任务中的数据进行哈希运算的过程中,获得一个中间结果数据,并对中间结果数据进行存储,工作数据包括中间结果数据。
106,运算单元接收算力板对工作数据进行运算产生的输出结果数据,对输出结果数据进行存储。
108,控制单元每获取一个中间结果数据,保持中间结果数据不变,获取输出结果数据,对输出结果数据进行校验,直至获得符合预设条件的输出结果数据。
在实际应用中,上述操作102和108可以通过中央控制单元CPU实现,即控制单元可以采用CPU,上述操作104和106可以通过现场可编程门阵列FPGA实现,即运算单元可以采用FPGA。例如:CPU采用微处理器MPU,FPGA与MPU通过AXI接口连接,FPGA与算力板通过UART连接,其中根据需要FPGA可以与多块算力板连接。
由于FPGA以并行运算为主,因此FPGA相比于CPU可以同时处理512bit的数据,而不需要将512bit的数据分割成多个64bit的数据分别进行处理,处理速度更快,可以实现对矿机的加速。
基于本发明实施例提供的挖矿业务处理方法,控制单元将矿池下发的工作任务中的数据发送给运算单元;运算单元根据工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送工作数据;其中,运算单元在根据工作任务中的数据进行哈希运算的过程中,获得一个中间结果数据,并对中间结果数据进行存储,工作数据包括中间结果数据;运算单元接收算力板对工作数据进行运算产生的输出结果数据,对输出结果数据进行存储;控制单元每获取一个中间结果数据,保持中间结果数据不变,获取输出结果数据,对输出结果数据进行校验,直至获得符合预设条件的输出结果数据。本发明实施例通过运算单元不断地接收工作任务中的数据进行运算产生工作数据,向算力板发送工作数据,同时,通过控制单元在每一个中间结果数据保持不变时,不断地对算力板返回的输出结果数据进行校验,分工协作,可以提升矿机的算力,使矿机满足不断提升的算力需求,以适应挖矿业务日益激烈的竞争。
图2为本发明实施例挖矿业务处理方法另一个实施例的流程图。如图2所示,该实施例的挖矿业务处理方法包括:
202,控制单元将矿池下发的工作任务中的数据发送给运算单元;其中,工作任务中的数据包括:奖励数据coinbase和交易数据merkle bin。
204,运算单元根据奖励数据进行哈希运算,获得第一哈希值。
具体实现中,由于奖励数据通常不符合Sha256算法的要求,因此在操作204之前还可以包括:将奖励数据扩展为满足Sha256算法要求的数据的操作。
206,运算单元根据第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值。
具体实现中,对于操作204,可以根据奖励数据进行两次哈希运算,获得第一哈希值;同样地,对于操作206,可以根据第一哈希值与当前的交易数据进行两次哈希运算,获得第二哈希值。
具体地,操作204包括:根据奖励数据进行第一次哈希运算,获得第三哈希值;根据第三哈希值与预设的第一数据进行第二次哈希运算,获得第一哈希值。
具体地,操作206包括:根据第一哈希值与当前的交易数据进行第一次哈希运算,获得第四哈希值;根据第四哈希值与预设的第二数据进行第二次哈希运算,获得第二哈希值。
其中,操作204与操作206中的第一数据与第二数据不同,第一数据与第二数据至少为256bit。
208,运算单元判断当前的交易数据是否为最后一个交易数据。
若当前的交易数据为最后一个交易数据,以第二哈希值作为交易根,执行操作210;否则,若当前的交易数据不为最后一个交易数据,以下一个交易数据作为当前的交易数据,执行操作206。
210,运算单元根据交易根进行哈希运算,获得一个中间结果数据。
212,运算单元根据中间结果数据,生成工作数据,以向算力板发送工作数据。
214,运算单元接收算力板对工作数据进行运算产生的输出结果数据,对输出结果数据进行存储。
216,控制单元每获取一个中间结果数据,保持中间结果数据不变,获取输出结果数据,对输出结果数据进行校验,直至获得符合预设条件的输出结果数据。
基于本发明实施例提供的挖矿业务处理方法,通过采用两次哈希运算,可以增加工作量,增加破解的难度。
图3为本发明实施例挖矿业务处理方法又一个实施例的流程图。如图3所示,该实施例的挖矿业务处理方法包括:
302,控制单元将矿池下发的工作任务中的数据发送给运算单元;其中,工作任务中的数据包括:奖励数据coinbase和交易数据merkle bin。
304,运算单元根据奖励数据进行哈希运算,获得第一哈希值。
具体实现中,由于奖励数据通常不符合Sha256算法的要求,因此在操作204之前还可以包括:将奖励数据扩展为满足Sha256算法要求的数据的操作。
306,运算单元根据第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值。
具体实现中,对于操作304,可以根据奖励数据进行两次哈希运算,获得第一哈希值;同样地,对于操作306,可以根据第一哈希值与当前的交易数据进行两次哈希运算,获得第二哈希值。
308,运算单元判断当前的交易数据是否为最后一个交易数据。
若当前的交易数据为最后一个交易数据,以第二哈希值作为交易根,执行操作310;否则,若当前的交易数据不为最后一个交易数据,以下一个交易数据作为当前的交易数据,执行操作306。
310,运算单元根据交易根进行哈希运算,获得一个中间结果数据。
312,运算单元根据中间结果数据,生成工作数据,以向算力板发送工作数据。
314,运算单元向算力板每发送一个工作数据,生成一个表示工作数据次序的工作ID(work ID)。
具体实现中,工作ID可以由计数器生成,例如工作ID为1、2、3、4、5等。
316,运算单元对工作ID进行存储;并根据工作ID按照预设的算法计算一个存储地址。
具体实现中,工作ID存储于符合先进先出原则的存储队列中,根据工作ID计算的存储地址=起始地址+work ID*Number,其中Number表示所要存储的数据占用的内存大小。
318,运算单元将工作数据对应的中间结果数据存储于存储地址。
具体实现中,中间结果数据占用的内存大小为64byte,则根据工作ID计算的存储地址=起始地址+work ID*64byte。例如,将中间结果数据双倍速率同步动态随机存储器存储于(Double Data Rate,DDR)内。
320,运算单元接收算力板对工作数据进行运算产生的输出结果数据,对输出结果数据进行存储。
具体实现中,随机数据为一个32bit的整数。
322,控制单元每获取一个中间结果数据,保持中间结果数据不变,获取输出结果数据,对输出结果数据进行校验,直至获得符合预设条件的输出结果数据。
具体实现中,控制单元获取一个中间结果数据可以包括:运算单元接收算力板返回的初始输出结果数据,对初始输出结果数据进行存储,并向控制单元返回一个工作ID;控制单元根据工作ID按照预设的算法计算一个存储地址,从存储地址中获取一个中间结果数据。
具体实现中,控制单元对输出结果数据进行校验可以包括:控制单元检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值;若当前的输出结果数据进行哈希运算的结果大于或等于预设的难度值,将当前的输出结果数据返回矿池;若当前的输出结果数据进行哈希运算的结果小于预设的难度值,获取下一个输出结果数据作为当前的输出结果数据,执行检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值的操作。
其中,输出结果数据进行哈希运算采用Sha256算法,具体地,输出结果数据进行两次哈希运算。
基于本发明实施例提供的提升挖矿业务算力的方法,输出结果数据的校验过程采用两次哈希运算获取满足难度目标的输出结果数据,其工作量证明是无数次哈希运算穷举并比对的过程。
图4为本发明实施例挖矿业务处理装置的一个实施例的结构图。如图4所示,该实施例的挖矿业务处理装置包括:控制单元和运算单元。其中:
控制单元,用于将矿池下发的工作任务中的数据发送给运算单元;以及每获取一个中间结果数据,保持中间结果数据不变,获取输出结果数据,对输出结果数据进行校验,直至获得符合预设条件的输出结果数据。
具体实现中,哈希运算采用Sha256算法,Sha256算法的哈希值大小为256bit。Sha256算法是安全散列算法(Secure Hash Algorithm,SHA)系列算法的一种,SHA是美国国家安全局设计,美国国家标准与技术研究院发布的,主要适用于数字签名标准(Digital Signature Standard,DSS)里面定义的数字签名算法(Digital Signature Algorithm,DSA)。
运算单元,用于根据工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送工作数据;其中,运算单元在根据工作任务中的数据进行哈希运算的过程中,获得一个中间结果数据,并对中间结果数据进行存储,工作数据包括中间结果数据;以及。接收算力板对工作数据进行运算产生的输出结果数据,对输出结果数据进行存储;
在实际应用中,上述控制单元可以采用CPU,上述运算单元可以采用FPGA。例如:CPU采用微处理器MPU,FPGA与MPU通过AXI接口连接,FPGA与算力板通过UART连接,其中根据需要FPGA可以与多块算力板连接。
由于FPGA以并行运算为主,因此FPGA相比于CPU可以同时处理512bit的数据,而不需要将512bit的数据分割成多个64bit的数据分别进行处理,处理速度更快,可以实现对矿机的加速。
基于本发明实施例提供的挖矿业务处理装置,控制单元将矿池下发的工作任务中的数据发送给运算单元;运算单元根据工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送工作数据;其中,运算单元在根据工作任务中的数据进行哈希运算的过程中,获得一个中间结果数据,并对中间结果数据进行存储,工作数据包括中间结果数据;运算单元接收算力板对工作数据进行运算产生的输出结果数据,对输出结果数据进行存储;控制单元每获取一个中间结果数据,保持中间结果数据不变,获取输出结果数据,对输出结果数据进行校验,直至获得符合预设条件的输出结果数据。本发明实施例通过运算单元不断地接收工作任务中的数据进行运算产生工作数据,向算力板发送工作数据,同时,通过控制单元在每一个中间结果数据保持不变时,不断地对算力板返回的输出结果数据进行校验,分工协作,可以提升矿机的算力,使矿机满足不断提升的算力需求,以适应挖矿业务日益激烈的竞争。
在本发明的另一个实施例中,控制单元,具体用于将矿池下发的工作任务中的数据发送给运算单元;其中,工作任务中的数据包括:奖励数据coinbase和交易数据merkle bin。
运算单元,具体用于根据奖励数据进行哈希运算,获得第一哈希值;根据第一哈希值与当前交易数据进行哈希运算,获得第二哈希值;判断当前交易数据是否为最后一个交易数据;若当前的交易数据为最后一个交易数据,以第二哈希值作为交易根,根据交易根进行哈希运算,获得一个中间结果数据;根据中间结果数据,生成工作数据,以向算力板发送工作数据;若当前的交易数据不为最后一个交易数据,以下一个交易数据作为当前的交易数据,执行根据第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值的操作。
具体实现中,由于奖励数据通常不符合Sha256算法的要求,因此运算单元,还用于将奖励数据扩展为满足Sha256算法要求的数据。
具体实现中,运算单元,可以根据奖励数据进行两次哈希运算,获得第一哈希值;同样地,可以根据第一哈希值与当前的交易数据进行两次哈希运算,获得第二哈希值。
具体地,运算单元,具体用于根据奖励数据进行第一次哈希运算,获得第三哈希值;根据第三哈希值与预设的第一数据进行第二次哈希运算,获得第一哈希值;以及根据第一哈希值与当前的交易数据进行第一次哈希运算,获得第四哈希值;根据第四哈希值与预设的第二数据进行第二次哈希运算,获得第二哈希值。
其中,第一数据与第二数据不同,第一数据与第二数据至少为256bit。
基于本发明实施例提供的挖矿业务处理装置,通过采用两次哈希运算,可以增加工作量,增加破解的难度。
在本发明的又一个实施例中,运算单元,具体用于向算力板每发送一个工作数据,生成一个表示所述工作数据次序的工作ID;对工作ID进行存储,并根据工作ID按照预设的算法计算一个存储地址;将工作数据对应的中间结果数据存储于存储地址。
具体实现中,工作ID可以由计数器生成,例如工作ID为1、2、3、4、5等。
具体实现中,工作ID存储于符合先进先出原则的存储队列中,根据工作ID计算的存储地址=起始地址+work ID*Number,其中Number表示所要存储的数据占用的内存大小。
具体地,中间结果数据占用的内存大小为64byte,则根据工作ID计算的存储地址=起始地址+work ID*64byte。
运算单元,还具体用于接收算力板返回的初始输出结果数据,对初始输出结果数据进行存储,并向控制单元返回一个工作ID。例如,将中间结果数据双倍速率同步动态随机存储器存储于(Double Data Rate,DDR)内。具体实现中,随机数据为一个32bit的整数。
控制单元,具体用于根据工作ID按照预设的算法计算一个存储地址,从存储地址中获取一个中间结果数据。
控制单元,具体用于检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值;若当前的输出结果数据进行哈希运算的结果大于或等于预设的难度值,将当前的输出结果数据返回矿池;若当前的输出结果数据进行哈希运算的结果小于预设的难度值,获取下一个输出结果数据作为当前的输出结果数据,执行检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值的操作。
其中,输出结果数据进行哈希运算采用Sha256算法,具体地,输出结果数据进行两次哈希运算。
基于本发明实施例提供的提升挖矿业务算力的方法,输出结果数据的校验过程采用两次哈希运算获取满足难度目标的输出结果数据,其工作量证明是无数次哈希运算穷举并比对的过程。
本发明实施例还提供了一种挖矿业务处理系统,包括:上述任意一个实施例的挖矿业务处理装置。
具体实现中,挖矿业务处理装置集成于矿机中。
如图5所示,图5为本发明实施例挖矿业务处理系统的一个实施例的结构图。该本发明实施例挖矿业务处理系统包括:矿机和云矿池,其中,在矿机中集成有挖矿业务处理装置。
在实际应用中,挖矿业务处理装置中的控制单元可以采用CPU,挖矿业务处理装置中的运算单元可以采用FPGA。例如:CPU采用微处理器MPU,FPGA与MPU通过AXI接口连接,FPGA与算力板通过UART连接,其中根据需要FPGA可以与多块算力板连接。
由于FPGA以并行运算为主,因此FPGA相比于CPU可以同时处理512bit的数据,而不需要将512bit的数据分割成多个64bit的数据分别进行处理,处理速度更快,可以实现对矿机的加速。
基于本发明实施例提供的挖矿业务处理系统,包括:上述任意一个实施例的提供的挖矿业务处理装置,其中控制单元将矿池下发的工作任务中的数据发送给运算单元;运算单元根据工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送工作数据;其中,运算单元在根据工作任务中的数据进行哈希运算的过程中,获得一个中间结果数据,并对中间结果数据进行存储,工作数据包括中间结果数据;运算单元接收算力板对工作数据进行运算产生的输出结果数据,对输出结果数据进行存储;控制单元每获取一个中间结果数据,保持中间结果数据不变,获取输出结果数据,对输出结果数据进行校验,直至获得符合预设条件的输出结果数据。本发明实施例通过运算单元不断地接收工作任务中的数据进行运算产生工作数据,向算力板发送工作数据,同时,通过控制单元在每一个中间结果数据保持不变时,不断地对算力板返回的输出结果数据进行校验,分工协作,可以提升矿机的算力,使矿机满足不断提升的算力需求,以适应挖矿业务日益激烈的竞争。
本发明可以采用以下方案实现:
1、一种挖矿业务处理方法,包括:
控制单元将矿池下发的工作任务中的数据发送给运算单元;
所述运算单元根据所述工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送所述工作数据;其中,所述运算单元在根据所述工作任务中的数据进行哈希运算的过程中,获得一个中间结果数据,并对所述中间结果数据进行存储,所述工作数据包括所述中间结果数据;
所述运算单元接收算力板对所述工作数据进行运算产生的输出结果数据,对所述输出结果数据进行存储;
所述控制单元每获取一个所述中间结果数据,保持所述中间结果数据不变,获取所述输出结果数据,对所述输出结果数据进行校验,直至获得符合预设条件的所述输出结果数据。
2、根据1所述的方法,所述哈希运算采用Sha256算法。
3、根据2所述的方法,所述工作任务中的数据包括:奖励数据和交易数据。
4、根据3所述的方法,所述运算单元根据所述工作任务中的数据进行哈希运算,生成工作数据包括:
根据奖励数据进行哈希运算,获得第一哈希值;
根据所述第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值;
判断当前的交易数据是否为最后一个交易数据;
若当前的交易数据为最后一个交易数据,以所述第二哈希值作为交易根,根据所述交易根进行哈希运算,获得一个中间结果数据;
根据所述中间结果数据,生成工作数据,以向算力板发送所述工作数据;
若当前的交易数据不为最后一个交易数据,以下一个交易数据作为当前的交易数据,执行所述根据所述第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值的操作。
5、根据4所述的方法,所述获得第一哈希值包括:
根据所述奖励数据进行第一次哈希运算,获得第三哈希值;
根据所述第三哈希值与预设的第一数据进行第二次哈希运算,获得所述第一哈希值。
6、根据4或5所述的方法,所述获得第二哈希值包括:
根据所述第一哈希值与当前的交易数据进行第一次哈希运算,获得第四哈希值;
根据所述第四哈希值与预设的第二数据进行第二次哈希运算,获得所述第二哈希值。
7、根据4至6任意一项所述的方法,所述根据奖励数据进行哈希运算之前还包括:
将所述奖励数据扩展为满足Sha256算法要求的数据。
8、根据1至7任意一项所述的方法,所述运算单元向算力板发送工作数据包括:
所述运算单元向算力板每发送一个工作数据,生成一个表示所述工作数据次序的工作ID;
对所述工作ID进行存储,并根据所述工作ID按照预设的算法计算一个存储地址;
将所述工作数据对应的中间结果数据存储于所述存储地址。
9、根据8所述的方法,所述控制单元获取一个所述中间结果数据包括:所述运算单元接收算力板返回的初始输出结果数据,对所述初始输出结果数据进行存储,并向所述控制单元返回一个工作ID;
所述控制单元根据所述工作ID按照预设的算法计算一个存储地址,从所述存储地址中获取一个所述中间结果数据。
10、根据9所述的方法,所述控制单元对所述输出结果数据进行校验包括:
所述控制单元检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值;
若当前的输出结果数据进行哈希运算的结果大于或等于预设的难度值,将所述当前的输出结果数据返回所述矿池;
若当前的输出结果数据进行哈希运算的结果小于预设的难度值,获取下一个输出结果数据作为当前的输出结果数据,执行所述检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值的操作。
11、一种挖矿业务处理装置,包括:
控制单元,用于将矿池下发的工作任务中的数据发送给运算单元;以及每获取一个中间结果数据,保持所述中间结果数据不变,获取输出结果数据,对所述输出结果数据进行校验,直至获得符合预设条件的所述输出结果数据;
运算单元,用于根据所述工作任务中的数据进行哈希运算,生成工作数据,以向算力板发送所述工作数据;其中,所述运算单元在根据所述工作任务中的数据进行哈希运算的过程中,获得一个所述中间结果数据,并对所述中间结果数据进行存储,所述工作数据包括所述中间结果数据;以及接收算力板对所述工作数据进行运算产生的所述输出结果数据,对所述输出结果数据进行存储。
12、根据11所述的装置,所述哈希运算采用Sha256算法。
13、根据12所述的装置,所述工作任务中的数据包括:奖励数据和交易数据。
14、根据13所述的装置,所述运算单元,具体用于:
根据奖励数据进行哈希运算,获得第一哈希值;
根据所述第一哈希值与当前交易数据进行哈希运算,获得第二哈希值;
判断当前交易数据是否为最后一个交易数据;
若当前的交易数据为最后一个交易数据,以所述第二哈希值作为交易根,根据所述交易根进行哈希运算,获得一个中间结果数据;
根据所述中间结果数据,生成工作数据,以向算力板发送所述工作数据;
若当前的交易数据不为最后一个交易数据,以下一个交易数据作为当前的交易数据,执行所述根据所述第一哈希值与当前的交易数据进行哈希运算,获得第二哈希值的操作。
15、根据14所述的装置,所述运算单元,具体用于:
根据所述奖励数据进行第一次哈希运算,获得第三哈希值;
根据所述第三哈希值与预设的第一数据进行第二次哈希运算,获得所述第一哈希值。
16、根据14或15所述的装置,所述运算单元,具体用于:
根据所述第一哈希值与当前的交易数据进行第一次哈希运算,获得第四哈希值;
根据所述第四哈希值与预设的第二数据进行第二次哈希运算,获得所述第二哈希值。
17、根据14至16任意一项所述的装置,所述运算单元,还用于将所述奖励数据扩展为满足Sha256算法要求的数据。
18、根据11至17任意一项所述的装置,所述运算单元,具体用于:
向算力板每发送一个工作数据,生成一个表示所述工作数据次序的工作ID;
对所述工作ID进行存储,并根据所述工作ID按照预设的算法计算一个存储地址;
将所述工作数据对应的中间结果数据存储于所述存储地址。
19、根据18所述的装置,所述运算单元,具体用于接收算力板返回的初始输出结果数据,对所述初始输出结果数据进行存储,并向所述控制单元返回一个工作ID;
所述控制单元,具体用于根据所述工作ID按照预设的算法计算一个存储地址,从所述存储地址中获取一个所述中间结果数据。
20、根据19所述的装置,所述控制单元,具体用于:
检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值;
若当前的输出结果数据进行哈希运算的结果大于或等于预设的难度值,将所述当前的输出结果数据返回所述矿池;
若当前的输出结果数据进行哈希运算的结果小于预设的难度值,获取下一个输出结果数据作为当前的输出结果数据,执行所述检测当前的输出结果数据进行哈希运算的结果是否小于预设的难度值的操作。
21、根据20所述的装置,所述运算单元包括:现场可编程门阵列FPGA;所述控制单元包括:中央处理单元CPU。
22、一种挖矿业务处理系统,包括:根据11至21任意一项所述的挖矿业务处理装置。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于装置实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可能以许多方式来实现本发明的方法、装置和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法、装置和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。