本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,特別是涉及一種挖礦業(yè)務(wù)處理方法、裝置和系統(tǒng)。
背景技術(shù):
比特幣(Bit Coin)是一種分布式的虛擬貨幣,它可以通過(guò)“挖礦”來(lái)生成新的比特幣。所謂“挖礦”實(shí)質(zhì)上就是利用計(jì)算機(jī)解決一項(xiàng)復(fù)雜的數(shù)學(xué)問(wèn)題,來(lái)保證比特幣分布式記賬系統(tǒng)的一致性。網(wǎng)絡(luò)會(huì)自動(dòng)調(diào)整數(shù)學(xué)問(wèn)題的難度,讓整個(gè)網(wǎng)絡(luò)約每10分鐘得到一個(gè)合格的答案。隨后會(huì)新生成一定量的比特幣作為賞金,獎(jiǎng)勵(lì)獲得答案的人。
云計(jì)算(Cloud Computing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過(guò)互聯(lián)網(wǎng)來(lái)提供動(dòng)態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。云計(jì)算是通過(guò)網(wǎng)絡(luò)提供可伸縮的廉價(jià)的分布式計(jì)算能力。將云計(jì)算技術(shù)與比特幣結(jié)合就產(chǎn)生了云計(jì)算礦池,也稱為云礦池。
云礦池通過(guò)向礦機(jī)下發(fā)工作任務(wù)(job)通知礦機(jī)進(jìn)行“挖礦”,隨著越來(lái)越多礦工的加入,挖礦業(yè)務(wù)的競(jìng)爭(zhēng)日益激烈,對(duì)礦機(jī)運(yùn)算能力(也稱為算力)的需求也不斷提升。
目前,在云礦池向礦機(jī)下發(fā)工作任務(wù)后,礦機(jī)通過(guò)中央控制單元(CPU)進(jìn)行運(yùn)算產(chǎn)生工作數(shù)據(jù)(work),發(fā)送給算力板,同時(shí)CPU接收算力板返回的輸出結(jié)果數(shù)據(jù)(gd nonce),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),將符合預(yù)設(shè)難度值的輸出結(jié)果數(shù)據(jù)返回云礦池,完成“挖礦”。其中,工作數(shù)據(jù)的產(chǎn)生與輸出結(jié)果數(shù)據(jù)的校驗(yàn)均由于礦機(jī)的控制單元進(jìn)行,使礦機(jī)的算力受到了一定程度的制約。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例要解決的一個(gè)技術(shù)問(wèn)題是:提供一種挖礦業(yè)務(wù)處理方法、裝置和系統(tǒng),以提升礦機(jī)的算力。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供一種挖礦業(yè)務(wù)處理方法,包括:
控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;
所述運(yùn)算單元根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送所述工作數(shù)據(jù);其中,所述運(yùn)算單元在根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)中間結(jié)果數(shù)據(jù),并對(duì)所述中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),所述工作數(shù)據(jù)包括所述中間結(jié)果數(shù)據(jù);
所述運(yùn)算單元接收算力板對(duì)所述工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ);
所述控制單元每獲取一個(gè)所述中間結(jié)果數(shù)據(jù),保持所述中間結(jié)果數(shù)據(jù)不變,獲取所述輸出結(jié)果數(shù)據(jù),對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的所述輸出結(jié)果數(shù)據(jù)。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述哈希運(yùn)算采用Sha256算法。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述工作任務(wù)中的數(shù)據(jù)包括:獎(jiǎng)勵(lì)數(shù)據(jù)和交易數(shù)據(jù)。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述運(yùn)算單元根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù)包括:
根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第一哈希值;
根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值;
判斷當(dāng)前的交易數(shù)據(jù)是否為最后一個(gè)交易數(shù)據(jù);
若當(dāng)前的交易數(shù)據(jù)為最后一個(gè)交易數(shù)據(jù),以所述第二哈希值作為交易根,根據(jù)所述交易根進(jìn)行哈希運(yùn)算,獲得一個(gè)中間結(jié)果數(shù)據(jù);
根據(jù)所述中間結(jié)果數(shù)據(jù),生成工作數(shù)據(jù),以向算力板發(fā)送所述工作數(shù)據(jù);
若當(dāng)前的交易數(shù)據(jù)不為最后一個(gè)交易數(shù)據(jù),以下一個(gè)交易數(shù)據(jù)作為當(dāng)前的交易數(shù)據(jù),執(zhí)行所述根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值的操作。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述獲得第一哈希值包括:
根據(jù)所述獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第三哈希值;
根據(jù)所述第三哈希值與預(yù)設(shè)的第一數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得所述第一哈希值。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述獲得第二哈希值包括:
根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第四哈希值;
根據(jù)所述第四哈希值與預(yù)設(shè)的第二數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得所述第二哈希值。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算之前還包括:
將所述獎(jiǎng)勵(lì)數(shù)據(jù)擴(kuò)展為滿足Sha256算法要求的數(shù)據(jù)。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述運(yùn)算單元向算力板發(fā)送工作數(shù)據(jù)包括:
所述運(yùn)算單元向算力板每發(fā)送一個(gè)工作數(shù)據(jù),生成一個(gè)表示所述工作數(shù)據(jù)次序的工作ID;
對(duì)所述工作ID進(jìn)行存儲(chǔ),并根據(jù)所述工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址;
將所述工作數(shù)據(jù)對(duì)應(yīng)的中間結(jié)果數(shù)據(jù)存儲(chǔ)于所述存儲(chǔ)地址。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述控制單元獲取一個(gè)所述中間結(jié)果數(shù)據(jù)包括:所述運(yùn)算單元接收算力板返回的初始輸出結(jié)果數(shù)據(jù),對(duì)所述初始輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),并向所述控制單元返回一個(gè)工作ID;
所述控制單元根據(jù)所述工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址,從所述存儲(chǔ)地址中獲取一個(gè)所述中間結(jié)果數(shù)據(jù)。
在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述控制單元對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn)包括:
所述控制單元檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值;
若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果大于或等于預(yù)設(shè)的難度值,將所述當(dāng)前的輸出結(jié)果數(shù)據(jù)返回所述礦池;
若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果小于預(yù)設(shè)的難度值,獲取下一個(gè)輸出結(jié)果數(shù)據(jù)作為當(dāng)前的輸出結(jié)果數(shù)據(jù),執(zhí)行所述檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值的操作。
根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供一種挖礦業(yè)務(wù)處理裝置,包括:
控制單元,用于將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;以及每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持所述中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的所述輸出結(jié)果數(shù)據(jù);
運(yùn)算單元,用于根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送所述工作數(shù)據(jù);其中,所述運(yùn)算單元在根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)所述中間結(jié)果數(shù)據(jù),并對(duì)所述中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),所述工作數(shù)據(jù)包括所述中間結(jié)果數(shù)據(jù);以及接收算力板對(duì)所述工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的所述輸出結(jié)果數(shù)據(jù),對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ)。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述哈希運(yùn)算采用Sha256算法。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述工作任務(wù)中的數(shù)據(jù)包括:獎(jiǎng)勵(lì)數(shù)據(jù)和交易數(shù)據(jù)。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述運(yùn)算單元,具體用于:
根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第一哈希值;
根據(jù)所述第一哈希值與當(dāng)前交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值;
判斷當(dāng)前交易數(shù)據(jù)是否為最后一個(gè)交易數(shù)據(jù);
若當(dāng)前的交易數(shù)據(jù)為最后一個(gè)交易數(shù)據(jù),以所述第二哈希值作為交易根,根據(jù)所述交易根進(jìn)行哈希運(yùn)算,獲得一個(gè)中間結(jié)果數(shù)據(jù);
根據(jù)所述中間結(jié)果數(shù)據(jù),生成工作數(shù)據(jù),以向算力板發(fā)送所述工作數(shù)據(jù);
若當(dāng)前的交易數(shù)據(jù)不為最后一個(gè)交易數(shù)據(jù),以下一個(gè)交易數(shù)據(jù)作為當(dāng)前的交易數(shù)據(jù),執(zhí)行所述根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值的操作。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述運(yùn)算單元,具體用于:
根據(jù)所述獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第三哈希值;
根據(jù)所述第三哈希值與預(yù)設(shè)的第一數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得所述第一哈希值。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述運(yùn)算單元,具體用于:
根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第四哈希值;
根據(jù)所述第四哈希值與預(yù)設(shè)的第二數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得所述第二哈希值。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述運(yùn)算單元,還用于將所述獎(jiǎng)勵(lì)數(shù)據(jù)擴(kuò)展為滿足Sha256算法要求的數(shù)據(jù)。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述運(yùn)算單元,具體用于:
向算力板每發(fā)送一個(gè)工作數(shù)據(jù),生成一個(gè)表示所述工作數(shù)據(jù)次序的工作ID;
對(duì)所述工作ID進(jìn)行存儲(chǔ),并根據(jù)所述工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址;
將所述工作數(shù)據(jù)對(duì)應(yīng)的中間結(jié)果數(shù)據(jù)存儲(chǔ)于所述存儲(chǔ)地址。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述運(yùn)算單元,具體用于接收算力板返回的初始輸出結(jié)果數(shù)據(jù),對(duì)所述初始輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),并向所述控制單元返回一個(gè)工作ID;
所述控制單元,具體用于根據(jù)所述工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址,從所述存儲(chǔ)地址中獲取一個(gè)所述中間結(jié)果數(shù)據(jù)。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述控制單元,具體用于:
檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值;
若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果大于或等于預(yù)設(shè)的難度值,將所述當(dāng)前的輸出結(jié)果數(shù)據(jù)返回所述礦池;
若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果小于預(yù)設(shè)的難度值,獲取下一個(gè)輸出結(jié)果數(shù)據(jù)作為當(dāng)前的輸出結(jié)果數(shù)據(jù),執(zhí)行所述檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值的操作。
在基于本發(fā)明上述裝置的另一個(gè)實(shí)施例中,所述運(yùn)算單元包括:現(xiàn)場(chǎng)可編程門陣列FPGA;所述控制單元包括:中央處理單元CPU。
根據(jù)本發(fā)明實(shí)施例的又一個(gè)方面,提供一種挖礦業(yè)務(wù)處理系統(tǒng),包括:上述任意一項(xiàng)所述的挖礦業(yè)務(wù)處理裝置。
基于本發(fā)明實(shí)施例提供的挖礦業(yè)務(wù)處理方法、裝置和系統(tǒng),控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;運(yùn)算單元根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù);其中,運(yùn)算單元在根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)中間結(jié)果數(shù)據(jù),并對(duì)中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),工作數(shù)據(jù)包括中間結(jié)果數(shù)據(jù);運(yùn)算單元接收算力板對(duì)工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ);控制單元每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的輸出結(jié)果數(shù)據(jù)。本發(fā)明實(shí)施例通過(guò)運(yùn)算單元不斷地接收工作任務(wù)中的數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生工作數(shù)據(jù),向算力板發(fā)送工作數(shù)據(jù),同時(shí),通過(guò)控制單元在每一個(gè)中間結(jié)果數(shù)據(jù)保持不變時(shí),不斷地對(duì)算力板返回的輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),分工協(xié)作,可以提升礦機(jī)的算力,使礦機(jī)滿足不斷提升的算力需求,以適應(yīng)挖礦業(yè)務(wù)日益激烈的競(jìng)爭(zhēng)。
附圖說(shuō)明
構(gòu)成說(shuō)明書的一部分的附圖描述了本發(fā)明的實(shí)施例,并且連同描述一起用于解釋本發(fā)明的原理。
參照附圖,根據(jù)下面的詳細(xì)描述,可以更加清楚地理解本發(fā)明,其中:
圖1為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理方法一個(gè)實(shí)施例的流程圖。
圖2為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理方法另一個(gè)實(shí)施例的流程圖。
圖3為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理方法又一個(gè)實(shí)施例的流程圖。
圖4為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理裝置的一個(gè)實(shí)施例的結(jié)構(gòu)圖。
圖5為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理系統(tǒng)的一個(gè)實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施方式
現(xiàn)在將參照附圖來(lái)詳細(xì)描述本發(fā)明的各種示例性實(shí)施例。應(yīng)注意到:除非另外具體說(shuō)明,否則在這些實(shí)施例中闡述的部件的相對(duì)布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。
同時(shí),應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個(gè)部分的尺寸并不是按照實(shí)際的比例關(guān)系繪制的。
以下對(duì)至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說(shuō)明性的,決不作為對(duì)本發(fā)明及其應(yīng)用或使用的任何限制。
對(duì)于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為說(shuō)明書的一部分。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步討論。
圖1為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理方法一個(gè)實(shí)施例的流程圖。如圖1所示,該實(shí)施例的挖礦業(yè)務(wù)處理方法包括:
102,控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元。
具體實(shí)現(xiàn)中,哈希運(yùn)算采用Sha256算法,Sha256算法的哈希值大小為256bit。Sha256算法是安全散列算法(Secure Hash Algorithm,SHA)系列算法的一種,SHA是美國(guó)國(guó)家安全局設(shè)計(jì),美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院發(fā)布的,主要適用于數(shù)字簽名標(biāo)準(zhǔn)(Digital Signature Standard,DSS)里面定義的數(shù)字簽名算法(Digital Signature Algorithm,DSA)。
104,運(yùn)算單元根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù);其中,運(yùn)算單元在根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)中間結(jié)果數(shù)據(jù),并對(duì)中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),工作數(shù)據(jù)包括中間結(jié)果數(shù)據(jù)。
106,運(yùn)算單元接收算力板對(duì)工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ)。
108,控制單元每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的輸出結(jié)果數(shù)據(jù)。
在實(shí)際應(yīng)用中,上述操作102和108可以通過(guò)中央控制單元CPU實(shí)現(xiàn),即控制單元可以采用CPU,上述操作104和106可以通過(guò)現(xiàn)場(chǎng)可編程門陣列FPGA實(shí)現(xiàn),即運(yùn)算單元可以采用FPGA。例如:CPU采用微處理器MPU,F(xiàn)PGA與MPU通過(guò)AXI接口連接,F(xiàn)PGA與算力板通過(guò)UART連接,其中根據(jù)需要FPGA可以與多塊算力板連接。
由于FPGA以并行運(yùn)算為主,因此FPGA相比于CPU可以同時(shí)處理512bit的數(shù)據(jù),而不需要將512bit的數(shù)據(jù)分割成多個(gè)64bit的數(shù)據(jù)分別進(jìn)行處理,處理速度更快,可以實(shí)現(xiàn)對(duì)礦機(jī)的加速。
基于本發(fā)明實(shí)施例提供的挖礦業(yè)務(wù)處理方法,控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;運(yùn)算單元根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù);其中,運(yùn)算單元在根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)中間結(jié)果數(shù)據(jù),并對(duì)中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),工作數(shù)據(jù)包括中間結(jié)果數(shù)據(jù);運(yùn)算單元接收算力板對(duì)工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ);控制單元每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的輸出結(jié)果數(shù)據(jù)。本發(fā)明實(shí)施例通過(guò)運(yùn)算單元不斷地接收工作任務(wù)中的數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生工作數(shù)據(jù),向算力板發(fā)送工作數(shù)據(jù),同時(shí),通過(guò)控制單元在每一個(gè)中間結(jié)果數(shù)據(jù)保持不變時(shí),不斷地對(duì)算力板返回的輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),分工協(xié)作,可以提升礦機(jī)的算力,使礦機(jī)滿足不斷提升的算力需求,以適應(yīng)挖礦業(yè)務(wù)日益激烈的競(jìng)爭(zhēng)。
圖2為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理方法另一個(gè)實(shí)施例的流程圖。如圖2所示,該實(shí)施例的挖礦業(yè)務(wù)處理方法包括:
202,控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;其中,工作任務(wù)中的數(shù)據(jù)包括:獎(jiǎng)勵(lì)數(shù)據(jù)coinbase和交易數(shù)據(jù)merkle bin。
204,運(yùn)算單元根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第一哈希值。
具體實(shí)現(xiàn)中,由于獎(jiǎng)勵(lì)數(shù)據(jù)通常不符合Sha256算法的要求,因此在操作204之前還可以包括:將獎(jiǎng)勵(lì)數(shù)據(jù)擴(kuò)展為滿足Sha256算法要求的數(shù)據(jù)的操作。
206,運(yùn)算單元根據(jù)第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值。
具體實(shí)現(xiàn)中,對(duì)于操作204,可以根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行兩次哈希運(yùn)算,獲得第一哈希值;同樣地,對(duì)于操作206,可以根據(jù)第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行兩次哈希運(yùn)算,獲得第二哈希值。
具體地,操作204包括:根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第三哈希值;根據(jù)第三哈希值與預(yù)設(shè)的第一數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得第一哈希值。
具體地,操作206包括:根據(jù)第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第四哈希值;根據(jù)第四哈希值與預(yù)設(shè)的第二數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得第二哈希值。
其中,操作204與操作206中的第一數(shù)據(jù)與第二數(shù)據(jù)不同,第一數(shù)據(jù)與第二數(shù)據(jù)至少為256bit。
208,運(yùn)算單元判斷當(dāng)前的交易數(shù)據(jù)是否為最后一個(gè)交易數(shù)據(jù)。
若當(dāng)前的交易數(shù)據(jù)為最后一個(gè)交易數(shù)據(jù),以第二哈希值作為交易根,執(zhí)行操作210;否則,若當(dāng)前的交易數(shù)據(jù)不為最后一個(gè)交易數(shù)據(jù),以下一個(gè)交易數(shù)據(jù)作為當(dāng)前的交易數(shù)據(jù),執(zhí)行操作206。
210,運(yùn)算單元根據(jù)交易根進(jìn)行哈希運(yùn)算,獲得一個(gè)中間結(jié)果數(shù)據(jù)。
212,運(yùn)算單元根據(jù)中間結(jié)果數(shù)據(jù),生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù)。
214,運(yùn)算單元接收算力板對(duì)工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ)。
216,控制單元每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的輸出結(jié)果數(shù)據(jù)。
基于本發(fā)明實(shí)施例提供的挖礦業(yè)務(wù)處理方法,通過(guò)采用兩次哈希運(yùn)算,可以增加工作量,增加破解的難度。
圖3為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理方法又一個(gè)實(shí)施例的流程圖。如圖3所示,該實(shí)施例的挖礦業(yè)務(wù)處理方法包括:
302,控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;其中,工作任務(wù)中的數(shù)據(jù)包括:獎(jiǎng)勵(lì)數(shù)據(jù)coinbase和交易數(shù)據(jù)merkle bin。
304,運(yùn)算單元根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第一哈希值。
具體實(shí)現(xiàn)中,由于獎(jiǎng)勵(lì)數(shù)據(jù)通常不符合Sha256算法的要求,因此在操作204之前還可以包括:將獎(jiǎng)勵(lì)數(shù)據(jù)擴(kuò)展為滿足Sha256算法要求的數(shù)據(jù)的操作。
306,運(yùn)算單元根據(jù)第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值。
具體實(shí)現(xiàn)中,對(duì)于操作304,可以根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行兩次哈希運(yùn)算,獲得第一哈希值;同樣地,對(duì)于操作306,可以根據(jù)第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行兩次哈希運(yùn)算,獲得第二哈希值。
308,運(yùn)算單元判斷當(dāng)前的交易數(shù)據(jù)是否為最后一個(gè)交易數(shù)據(jù)。
若當(dāng)前的交易數(shù)據(jù)為最后一個(gè)交易數(shù)據(jù),以第二哈希值作為交易根,執(zhí)行操作310;否則,若當(dāng)前的交易數(shù)據(jù)不為最后一個(gè)交易數(shù)據(jù),以下一個(gè)交易數(shù)據(jù)作為當(dāng)前的交易數(shù)據(jù),執(zhí)行操作306。
310,運(yùn)算單元根據(jù)交易根進(jìn)行哈希運(yùn)算,獲得一個(gè)中間結(jié)果數(shù)據(jù)。
312,運(yùn)算單元根據(jù)中間結(jié)果數(shù)據(jù),生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù)。
314,運(yùn)算單元向算力板每發(fā)送一個(gè)工作數(shù)據(jù),生成一個(gè)表示工作數(shù)據(jù)次序的工作ID(work ID)。
具體實(shí)現(xiàn)中,工作ID可以由計(jì)數(shù)器生成,例如工作ID為1、2、3、4、5等。
316,運(yùn)算單元對(duì)工作ID進(jìn)行存儲(chǔ);并根據(jù)工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址。
具體實(shí)現(xiàn)中,工作ID存儲(chǔ)于符合先進(jìn)先出原則的存儲(chǔ)隊(duì)列中,根據(jù)工作ID計(jì)算的存儲(chǔ)地址=起始地址+work ID*Number,其中Number表示所要存儲(chǔ)的數(shù)據(jù)占用的內(nèi)存大小。
318,運(yùn)算單元將工作數(shù)據(jù)對(duì)應(yīng)的中間結(jié)果數(shù)據(jù)存儲(chǔ)于存儲(chǔ)地址。
具體實(shí)現(xiàn)中,中間結(jié)果數(shù)據(jù)占用的內(nèi)存大小為64byte,則根據(jù)工作ID計(jì)算的存儲(chǔ)地址=起始地址+work ID*64byte。例如,將中間結(jié)果數(shù)據(jù)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器存儲(chǔ)于(Double Data Rate,DDR)內(nèi)。
320,運(yùn)算單元接收算力板對(duì)工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ)。
具體實(shí)現(xiàn)中,隨機(jī)數(shù)據(jù)為一個(gè)32bit的整數(shù)。
322,控制單元每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的輸出結(jié)果數(shù)據(jù)。
具體實(shí)現(xiàn)中,控制單元獲取一個(gè)中間結(jié)果數(shù)據(jù)可以包括:運(yùn)算單元接收算力板返回的初始輸出結(jié)果數(shù)據(jù),對(duì)初始輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),并向控制單元返回一個(gè)工作ID;控制單元根據(jù)工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址,從存儲(chǔ)地址中獲取一個(gè)中間結(jié)果數(shù)據(jù)。
具體實(shí)現(xiàn)中,控制單元對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn)可以包括:控制單元檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值;若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果大于或等于預(yù)設(shè)的難度值,將當(dāng)前的輸出結(jié)果數(shù)據(jù)返回礦池;若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果小于預(yù)設(shè)的難度值,獲取下一個(gè)輸出結(jié)果數(shù)據(jù)作為當(dāng)前的輸出結(jié)果數(shù)據(jù),執(zhí)行檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值的操作。
其中,輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算采用Sha256算法,具體地,輸出結(jié)果數(shù)據(jù)進(jìn)行兩次哈希運(yùn)算。
基于本發(fā)明實(shí)施例提供的提升挖礦業(yè)務(wù)算力的方法,輸出結(jié)果數(shù)據(jù)的校驗(yàn)過(guò)程采用兩次哈希運(yùn)算獲取滿足難度目標(biāo)的輸出結(jié)果數(shù)據(jù),其工作量證明是無(wú)數(shù)次哈希運(yùn)算窮舉并比對(duì)的過(guò)程。
圖4為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理裝置的一個(gè)實(shí)施例的結(jié)構(gòu)圖。如圖4所示,該實(shí)施例的挖礦業(yè)務(wù)處理裝置包括:控制單元和運(yùn)算單元。其中:
控制單元,用于將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;以及每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的輸出結(jié)果數(shù)據(jù)。
具體實(shí)現(xiàn)中,哈希運(yùn)算采用Sha256算法,Sha256算法的哈希值大小為256bit。Sha256算法是安全散列算法(Secure Hash Algorithm,SHA)系列算法的一種,SHA是美國(guó)國(guó)家安全局設(shè)計(jì),美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院發(fā)布的,主要適用于數(shù)字簽名標(biāo)準(zhǔn)(Digital Signature Standard,DSS)里面定義的數(shù)字簽名算法(Digital Signature Algorithm,DSA)。
運(yùn)算單元,用于根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù);其中,運(yùn)算單元在根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)中間結(jié)果數(shù)據(jù),并對(duì)中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),工作數(shù)據(jù)包括中間結(jié)果數(shù)據(jù);以及。接收算力板對(duì)工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ);
在實(shí)際應(yīng)用中,上述控制單元可以采用CPU,上述運(yùn)算單元可以采用FPGA。例如:CPU采用微處理器MPU,F(xiàn)PGA與MPU通過(guò)AXI接口連接,F(xiàn)PGA與算力板通過(guò)UART連接,其中根據(jù)需要FPGA可以與多塊算力板連接。
由于FPGA以并行運(yùn)算為主,因此FPGA相比于CPU可以同時(shí)處理512bit的數(shù)據(jù),而不需要將512bit的數(shù)據(jù)分割成多個(gè)64bit的數(shù)據(jù)分別進(jìn)行處理,處理速度更快,可以實(shí)現(xiàn)對(duì)礦機(jī)的加速。
基于本發(fā)明實(shí)施例提供的挖礦業(yè)務(wù)處理裝置,控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;運(yùn)算單元根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù);其中,運(yùn)算單元在根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)中間結(jié)果數(shù)據(jù),并對(duì)中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),工作數(shù)據(jù)包括中間結(jié)果數(shù)據(jù);運(yùn)算單元接收算力板對(duì)工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ);控制單元每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的輸出結(jié)果數(shù)據(jù)。本發(fā)明實(shí)施例通過(guò)運(yùn)算單元不斷地接收工作任務(wù)中的數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生工作數(shù)據(jù),向算力板發(fā)送工作數(shù)據(jù),同時(shí),通過(guò)控制單元在每一個(gè)中間結(jié)果數(shù)據(jù)保持不變時(shí),不斷地對(duì)算力板返回的輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),分工協(xié)作,可以提升礦機(jī)的算力,使礦機(jī)滿足不斷提升的算力需求,以適應(yīng)挖礦業(yè)務(wù)日益激烈的競(jìng)爭(zhēng)。
在本發(fā)明的另一個(gè)實(shí)施例中,控制單元,具體用于將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;其中,工作任務(wù)中的數(shù)據(jù)包括:獎(jiǎng)勵(lì)數(shù)據(jù)coinbase和交易數(shù)據(jù)merkle bin。
運(yùn)算單元,具體用于根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第一哈希值;根據(jù)第一哈希值與當(dāng)前交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值;判斷當(dāng)前交易數(shù)據(jù)是否為最后一個(gè)交易數(shù)據(jù);若當(dāng)前的交易數(shù)據(jù)為最后一個(gè)交易數(shù)據(jù),以第二哈希值作為交易根,根據(jù)交易根進(jìn)行哈希運(yùn)算,獲得一個(gè)中間結(jié)果數(shù)據(jù);根據(jù)中間結(jié)果數(shù)據(jù),生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù);若當(dāng)前的交易數(shù)據(jù)不為最后一個(gè)交易數(shù)據(jù),以下一個(gè)交易數(shù)據(jù)作為當(dāng)前的交易數(shù)據(jù),執(zhí)行根據(jù)第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值的操作。
具體實(shí)現(xiàn)中,由于獎(jiǎng)勵(lì)數(shù)據(jù)通常不符合Sha256算法的要求,因此運(yùn)算單元,還用于將獎(jiǎng)勵(lì)數(shù)據(jù)擴(kuò)展為滿足Sha256算法要求的數(shù)據(jù)。
具體實(shí)現(xiàn)中,運(yùn)算單元,可以根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行兩次哈希運(yùn)算,獲得第一哈希值;同樣地,可以根據(jù)第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行兩次哈希運(yùn)算,獲得第二哈希值。
具體地,運(yùn)算單元,具體用于根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第三哈希值;根據(jù)第三哈希值與預(yù)設(shè)的第一數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得第一哈希值;以及根據(jù)第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第四哈希值;根據(jù)第四哈希值與預(yù)設(shè)的第二數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得第二哈希值。
其中,第一數(shù)據(jù)與第二數(shù)據(jù)不同,第一數(shù)據(jù)與第二數(shù)據(jù)至少為256bit。
基于本發(fā)明實(shí)施例提供的挖礦業(yè)務(wù)處理裝置,通過(guò)采用兩次哈希運(yùn)算,可以增加工作量,增加破解的難度。
在本發(fā)明的又一個(gè)實(shí)施例中,運(yùn)算單元,具體用于向算力板每發(fā)送一個(gè)工作數(shù)據(jù),生成一個(gè)表示所述工作數(shù)據(jù)次序的工作ID;對(duì)工作ID進(jìn)行存儲(chǔ),并根據(jù)工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址;將工作數(shù)據(jù)對(duì)應(yīng)的中間結(jié)果數(shù)據(jù)存儲(chǔ)于存儲(chǔ)地址。
具體實(shí)現(xiàn)中,工作ID可以由計(jì)數(shù)器生成,例如工作ID為1、2、3、4、5等。
具體實(shí)現(xiàn)中,工作ID存儲(chǔ)于符合先進(jìn)先出原則的存儲(chǔ)隊(duì)列中,根據(jù)工作ID計(jì)算的存儲(chǔ)地址=起始地址+work ID*Number,其中Number表示所要存儲(chǔ)的數(shù)據(jù)占用的內(nèi)存大小。
具體地,中間結(jié)果數(shù)據(jù)占用的內(nèi)存大小為64byte,則根據(jù)工作ID計(jì)算的存儲(chǔ)地址=起始地址+work ID*64byte。
運(yùn)算單元,還具體用于接收算力板返回的初始輸出結(jié)果數(shù)據(jù),對(duì)初始輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),并向控制單元返回一個(gè)工作ID。例如,將中間結(jié)果數(shù)據(jù)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器存儲(chǔ)于(Double Data Rate,DDR)內(nèi)。具體實(shí)現(xiàn)中,隨機(jī)數(shù)據(jù)為一個(gè)32bit的整數(shù)。
控制單元,具體用于根據(jù)工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址,從存儲(chǔ)地址中獲取一個(gè)中間結(jié)果數(shù)據(jù)。
控制單元,具體用于檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值;若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果大于或等于預(yù)設(shè)的難度值,將當(dāng)前的輸出結(jié)果數(shù)據(jù)返回礦池;若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果小于預(yù)設(shè)的難度值,獲取下一個(gè)輸出結(jié)果數(shù)據(jù)作為當(dāng)前的輸出結(jié)果數(shù)據(jù),執(zhí)行檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值的操作。
其中,輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算采用Sha256算法,具體地,輸出結(jié)果數(shù)據(jù)進(jìn)行兩次哈希運(yùn)算。
基于本發(fā)明實(shí)施例提供的提升挖礦業(yè)務(wù)算力的方法,輸出結(jié)果數(shù)據(jù)的校驗(yàn)過(guò)程采用兩次哈希運(yùn)算獲取滿足難度目標(biāo)的輸出結(jié)果數(shù)據(jù),其工作量證明是無(wú)數(shù)次哈希運(yùn)算窮舉并比對(duì)的過(guò)程。
本發(fā)明實(shí)施例還提供了一種挖礦業(yè)務(wù)處理系統(tǒng),包括:上述任意一個(gè)實(shí)施例的挖礦業(yè)務(wù)處理裝置。
具體實(shí)現(xiàn)中,挖礦業(yè)務(wù)處理裝置集成于礦機(jī)中。
如圖5所示,圖5為本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理系統(tǒng)的一個(gè)實(shí)施例的結(jié)構(gòu)圖。該本發(fā)明實(shí)施例挖礦業(yè)務(wù)處理系統(tǒng)包括:礦機(jī)和云礦池,其中,在礦機(jī)中集成有挖礦業(yè)務(wù)處理裝置。
在實(shí)際應(yīng)用中,挖礦業(yè)務(wù)處理裝置中的控制單元可以采用CPU,挖礦業(yè)務(wù)處理裝置中的運(yùn)算單元可以采用FPGA。例如:CPU采用微處理器MPU,F(xiàn)PGA與MPU通過(guò)AXI接口連接,F(xiàn)PGA與算力板通過(guò)UART連接,其中根據(jù)需要FPGA可以與多塊算力板連接。
由于FPGA以并行運(yùn)算為主,因此FPGA相比于CPU可以同時(shí)處理512bit的數(shù)據(jù),而不需要將512bit的數(shù)據(jù)分割成多個(gè)64bit的數(shù)據(jù)分別進(jìn)行處理,處理速度更快,可以實(shí)現(xiàn)對(duì)礦機(jī)的加速。
基于本發(fā)明實(shí)施例提供的挖礦業(yè)務(wù)處理系統(tǒng),包括:上述任意一個(gè)實(shí)施例的提供的挖礦業(yè)務(wù)處理裝置,其中控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;運(yùn)算單元根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送工作數(shù)據(jù);其中,運(yùn)算單元在根據(jù)工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)中間結(jié)果數(shù)據(jù),并對(duì)中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),工作數(shù)據(jù)包括中間結(jié)果數(shù)據(jù);運(yùn)算單元接收算力板對(duì)工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ);控制單元每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的輸出結(jié)果數(shù)據(jù)。本發(fā)明實(shí)施例通過(guò)運(yùn)算單元不斷地接收工作任務(wù)中的數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生工作數(shù)據(jù),向算力板發(fā)送工作數(shù)據(jù),同時(shí),通過(guò)控制單元在每一個(gè)中間結(jié)果數(shù)據(jù)保持不變時(shí),不斷地對(duì)算力板返回的輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),分工協(xié)作,可以提升礦機(jī)的算力,使礦機(jī)滿足不斷提升的算力需求,以適應(yīng)挖礦業(yè)務(wù)日益激烈的競(jìng)爭(zhēng)。
本發(fā)明可以采用以下方案實(shí)現(xiàn):
1、一種挖礦業(yè)務(wù)處理方法,包括:
控制單元將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;
所述運(yùn)算單元根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送所述工作數(shù)據(jù);其中,所述運(yùn)算單元在根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)中間結(jié)果數(shù)據(jù),并對(duì)所述中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),所述工作數(shù)據(jù)包括所述中間結(jié)果數(shù)據(jù);
所述運(yùn)算單元接收算力板對(duì)所述工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的輸出結(jié)果數(shù)據(jù),對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ);
所述控制單元每獲取一個(gè)所述中間結(jié)果數(shù)據(jù),保持所述中間結(jié)果數(shù)據(jù)不變,獲取所述輸出結(jié)果數(shù)據(jù),對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的所述輸出結(jié)果數(shù)據(jù)。
2、根據(jù)1所述的方法,所述哈希運(yùn)算采用Sha256算法。
3、根據(jù)2所述的方法,所述工作任務(wù)中的數(shù)據(jù)包括:獎(jiǎng)勵(lì)數(shù)據(jù)和交易數(shù)據(jù)。
4、根據(jù)3所述的方法,所述運(yùn)算單元根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù)包括:
根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第一哈希值;
根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值;
判斷當(dāng)前的交易數(shù)據(jù)是否為最后一個(gè)交易數(shù)據(jù);
若當(dāng)前的交易數(shù)據(jù)為最后一個(gè)交易數(shù)據(jù),以所述第二哈希值作為交易根,根據(jù)所述交易根進(jìn)行哈希運(yùn)算,獲得一個(gè)中間結(jié)果數(shù)據(jù);
根據(jù)所述中間結(jié)果數(shù)據(jù),生成工作數(shù)據(jù),以向算力板發(fā)送所述工作數(shù)據(jù);
若當(dāng)前的交易數(shù)據(jù)不為最后一個(gè)交易數(shù)據(jù),以下一個(gè)交易數(shù)據(jù)作為當(dāng)前的交易數(shù)據(jù),執(zhí)行所述根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值的操作。
5、根據(jù)4所述的方法,所述獲得第一哈希值包括:
根據(jù)所述獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第三哈希值;
根據(jù)所述第三哈希值與預(yù)設(shè)的第一數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得所述第一哈希值。
6、根據(jù)4或5所述的方法,所述獲得第二哈希值包括:
根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第四哈希值;
根據(jù)所述第四哈希值與預(yù)設(shè)的第二數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得所述第二哈希值。
7、根據(jù)4至6任意一項(xiàng)所述的方法,所述根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算之前還包括:
將所述獎(jiǎng)勵(lì)數(shù)據(jù)擴(kuò)展為滿足Sha256算法要求的數(shù)據(jù)。
8、根據(jù)1至7任意一項(xiàng)所述的方法,所述運(yùn)算單元向算力板發(fā)送工作數(shù)據(jù)包括:
所述運(yùn)算單元向算力板每發(fā)送一個(gè)工作數(shù)據(jù),生成一個(gè)表示所述工作數(shù)據(jù)次序的工作ID;
對(duì)所述工作ID進(jìn)行存儲(chǔ),并根據(jù)所述工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址;
將所述工作數(shù)據(jù)對(duì)應(yīng)的中間結(jié)果數(shù)據(jù)存儲(chǔ)于所述存儲(chǔ)地址。
9、根據(jù)8所述的方法,所述控制單元獲取一個(gè)所述中間結(jié)果數(shù)據(jù)包括:所述運(yùn)算單元接收算力板返回的初始輸出結(jié)果數(shù)據(jù),對(duì)所述初始輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),并向所述控制單元返回一個(gè)工作ID;
所述控制單元根據(jù)所述工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址,從所述存儲(chǔ)地址中獲取一個(gè)所述中間結(jié)果數(shù)據(jù)。
10、根據(jù)9所述的方法,所述控制單元對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn)包括:
所述控制單元檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值;
若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果大于或等于預(yù)設(shè)的難度值,將所述當(dāng)前的輸出結(jié)果數(shù)據(jù)返回所述礦池;
若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果小于預(yù)設(shè)的難度值,獲取下一個(gè)輸出結(jié)果數(shù)據(jù)作為當(dāng)前的輸出結(jié)果數(shù)據(jù),執(zhí)行所述檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值的操作。
11、一種挖礦業(yè)務(wù)處理裝置,包括:
控制單元,用于將礦池下發(fā)的工作任務(wù)中的數(shù)據(jù)發(fā)送給運(yùn)算單元;以及每獲取一個(gè)中間結(jié)果數(shù)據(jù),保持所述中間結(jié)果數(shù)據(jù)不變,獲取輸出結(jié)果數(shù)據(jù),對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行校驗(yàn),直至獲得符合預(yù)設(shè)條件的所述輸出結(jié)果數(shù)據(jù);
運(yùn)算單元,用于根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算,生成工作數(shù)據(jù),以向算力板發(fā)送所述工作數(shù)據(jù);其中,所述運(yùn)算單元在根據(jù)所述工作任務(wù)中的數(shù)據(jù)進(jìn)行哈希運(yùn)算的過(guò)程中,獲得一個(gè)所述中間結(jié)果數(shù)據(jù),并對(duì)所述中間結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),所述工作數(shù)據(jù)包括所述中間結(jié)果數(shù)據(jù);以及接收算力板對(duì)所述工作數(shù)據(jù)進(jìn)行運(yùn)算產(chǎn)生的所述輸出結(jié)果數(shù)據(jù),對(duì)所述輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ)。
12、根據(jù)11所述的裝置,所述哈希運(yùn)算采用Sha256算法。
13、根據(jù)12所述的裝置,所述工作任務(wù)中的數(shù)據(jù)包括:獎(jiǎng)勵(lì)數(shù)據(jù)和交易數(shù)據(jù)。
14、根據(jù)13所述的裝置,所述運(yùn)算單元,具體用于:
根據(jù)獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第一哈希值;
根據(jù)所述第一哈希值與當(dāng)前交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值;
判斷當(dāng)前交易數(shù)據(jù)是否為最后一個(gè)交易數(shù)據(jù);
若當(dāng)前的交易數(shù)據(jù)為最后一個(gè)交易數(shù)據(jù),以所述第二哈希值作為交易根,根據(jù)所述交易根進(jìn)行哈希運(yùn)算,獲得一個(gè)中間結(jié)果數(shù)據(jù);
根據(jù)所述中間結(jié)果數(shù)據(jù),生成工作數(shù)據(jù),以向算力板發(fā)送所述工作數(shù)據(jù);
若當(dāng)前的交易數(shù)據(jù)不為最后一個(gè)交易數(shù)據(jù),以下一個(gè)交易數(shù)據(jù)作為當(dāng)前的交易數(shù)據(jù),執(zhí)行所述根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行哈希運(yùn)算,獲得第二哈希值的操作。
15、根據(jù)14所述的裝置,所述運(yùn)算單元,具體用于:
根據(jù)所述獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第三哈希值;
根據(jù)所述第三哈希值與預(yù)設(shè)的第一數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得所述第一哈希值。
16、根據(jù)14或15所述的裝置,所述運(yùn)算單元,具體用于:
根據(jù)所述第一哈希值與當(dāng)前的交易數(shù)據(jù)進(jìn)行第一次哈希運(yùn)算,獲得第四哈希值;
根據(jù)所述第四哈希值與預(yù)設(shè)的第二數(shù)據(jù)進(jìn)行第二次哈希運(yùn)算,獲得所述第二哈希值。
17、根據(jù)14至16任意一項(xiàng)所述的裝置,所述運(yùn)算單元,還用于將所述獎(jiǎng)勵(lì)數(shù)據(jù)擴(kuò)展為滿足Sha256算法要求的數(shù)據(jù)。
18、根據(jù)11至17任意一項(xiàng)所述的裝置,所述運(yùn)算單元,具體用于:
向算力板每發(fā)送一個(gè)工作數(shù)據(jù),生成一個(gè)表示所述工作數(shù)據(jù)次序的工作ID;
對(duì)所述工作ID進(jìn)行存儲(chǔ),并根據(jù)所述工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址;
將所述工作數(shù)據(jù)對(duì)應(yīng)的中間結(jié)果數(shù)據(jù)存儲(chǔ)于所述存儲(chǔ)地址。
19、根據(jù)18所述的裝置,所述運(yùn)算單元,具體用于接收算力板返回的初始輸出結(jié)果數(shù)據(jù),對(duì)所述初始輸出結(jié)果數(shù)據(jù)進(jìn)行存儲(chǔ),并向所述控制單元返回一個(gè)工作ID;
所述控制單元,具體用于根據(jù)所述工作ID按照預(yù)設(shè)的算法計(jì)算一個(gè)存儲(chǔ)地址,從所述存儲(chǔ)地址中獲取一個(gè)所述中間結(jié)果數(shù)據(jù)。
20、根據(jù)19所述的裝置,所述控制單元,具體用于:
檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值;
若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果大于或等于預(yù)設(shè)的難度值,將所述當(dāng)前的輸出結(jié)果數(shù)據(jù)返回所述礦池;
若當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果小于預(yù)設(shè)的難度值,獲取下一個(gè)輸出結(jié)果數(shù)據(jù)作為當(dāng)前的輸出結(jié)果數(shù)據(jù),執(zhí)行所述檢測(cè)當(dāng)前的輸出結(jié)果數(shù)據(jù)進(jìn)行哈希運(yùn)算的結(jié)果是否小于預(yù)設(shè)的難度值的操作。
21、根據(jù)20所述的裝置,所述運(yùn)算單元包括:現(xiàn)場(chǎng)可編程門陣列FPGA;所述控制單元包括:中央處理單元CPU。
22、一種挖礦業(yè)務(wù)處理系統(tǒng),包括:根據(jù)11至21任意一項(xiàng)所述的挖礦業(yè)務(wù)處理裝置。
本說(shuō)明書中各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似的部分相互參見即可。對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。
可能以許多方式來(lái)實(shí)現(xiàn)本發(fā)明的方法、裝置和系統(tǒng)。例如,可通過(guò)軟件、硬件、固件或者軟件、硬件、固件的任何組合來(lái)實(shí)現(xiàn)本發(fā)明的方法、裝置和系統(tǒng)。用于所述方法的步驟的上述順序僅是為了進(jìn)行說(shuō)明,本發(fā)明的方法的步驟不限于以上具體描述的順序,除非以其它方式特別說(shuō)明。此外,在一些實(shí)施例中,還可將本發(fā)明實(shí)施為記錄在記錄介質(zhì)中的程序,這些程序包括用于實(shí)現(xiàn)根據(jù)本發(fā)明的方法的機(jī)器可讀指令。因而,本發(fā)明還覆蓋存儲(chǔ)用于執(zhí)行根據(jù)本發(fā)明的方法的程序的記錄介質(zhì)。
本發(fā)明的描述是為了示例和描述起見而給出的,而并不是無(wú)遺漏的或者將本發(fā)明限于所公開的形式。很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實(shí)施例是為了更好說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)適于特定用途的帶有各種修改的各種實(shí)施例。