本發(fā)明涉及比特幣挖掘技術(shù),尤其是一種探測和切換數(shù)據(jù)的方法、裝置和電子設(shè)備。
背景技術(shù):
P2P對等網(wǎng)絡(luò),即對等計算機網(wǎng)絡(luò),是一種在對等者(Peer)之間分配任務(wù)和工作負載的分布式應(yīng)用架構(gòu),是對等計算模型在應(yīng)用層形成的一種組網(wǎng)或網(wǎng)絡(luò)形式。P2P電子貨幣系統(tǒng)為一種采用工作量證明機制的點對點網(wǎng)絡(luò)來記錄交易的公開信息,其數(shù)據(jù)保存的基本單位為塊,每個數(shù)據(jù)塊中保存著很多交易,數(shù)據(jù)塊通過鏈?zhǔn)浇Y(jié)構(gòu)連接在一起,每個數(shù)據(jù)塊中保存著上一個數(shù)據(jù)塊的Hash,當(dāng)?shù)V池在計算數(shù)據(jù)塊的時候,當(dāng)發(fā)現(xiàn)難度大于網(wǎng)絡(luò)難度,需要將新的數(shù)據(jù)塊快速的廣播到P2P網(wǎng)絡(luò)中,使整個網(wǎng)絡(luò)能夠在你的新塊的基礎(chǔ)上計算下一個。
然而,在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)至少存在以下問題:如果礦池在新數(shù)據(jù)庫塊工作的切換上存在延遲,延遲的這個時間段內(nèi)產(chǎn)生的數(shù)據(jù)塊將有很大的概率被孤立,因為其他礦池已經(jīng)在更快的更新到新數(shù)據(jù)塊工作,而延遲產(chǎn)生的數(shù)據(jù)塊將比其他最新數(shù)據(jù)塊晚,從而在很大概率上得不到其他礦池的確認。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例所要解決的一個技術(shù)問題是:為了克服礦池因不能及時獲取最新計算數(shù)據(jù)而產(chǎn)生數(shù)據(jù)孤塊的問題。
本發(fā)明實施例提供的一種探測和切換數(shù)據(jù)的方法,包括:
響應(yīng)于當(dāng)前礦池獲取計算數(shù)據(jù)的請求,分別從至少一個其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并對所述獲取的多組計算數(shù)據(jù)進行比對,得到最新計算數(shù)據(jù);
基于所述得到的最新計算數(shù)據(jù)生成新的工作數(shù)據(jù),并將所述新的工作數(shù)據(jù)發(fā)送給與所述當(dāng)前礦池連接的所有礦機。
基于上述方法的另一實施例中,所述從其他礦池獲取計算數(shù)據(jù),包括:
監(jiān)測其他礦池的工作狀態(tài),并獲取其他礦池當(dāng)前計算的工作數(shù)據(jù);
基于所述獲取的工作數(shù)據(jù)轉(zhuǎn)換得到對應(yīng)所述其他礦池的計算數(shù)據(jù)。
基于上述方法的另一實施例中,所述從數(shù)字貨幣客戶端獲取計算數(shù)據(jù),包括:
基于比特幣去中心化挖礦協(xié)議調(diào)用數(shù)字貨幣客戶端,獲取所述數(shù)字貨幣客戶端正在處理的計算數(shù)據(jù)。
基于上述方法的另一實施例中,所述工作數(shù)據(jù)包括:證明信息、上一個數(shù)據(jù)塊的散列值、版本信息、難度信息、發(fā)送時間信息和需計算數(shù)據(jù)信息。
基于上述方法的另一實施例中,所述計算數(shù)據(jù)包括:版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊、開始處理時間信息和計算難度信息。
基于上述方法的另一實施例中,所述對所述獲取的多組計算數(shù)據(jù)進行比對,包括:
對所述獲取的多組計算數(shù)據(jù)分別提取對應(yīng)每組計算數(shù)據(jù)的版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊和時間信息;
比對不同計算數(shù)據(jù)對應(yīng)的時間信息和/或版本信息;
和/或,將一組計算數(shù)據(jù)中的上一個數(shù)據(jù)塊的散列值與另一組計算數(shù)據(jù)中的未確認的交易數(shù)據(jù)塊中的散列值進行比對。
基于上述方法的另一實施例中,所述得到最新計算數(shù)據(jù),包括:
基于時間信息得到最接近當(dāng)前時間的時間信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù);
和/或,基于版本信息得到最新版本信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù);
和/或,基于散列值得到所有其他計算數(shù)據(jù)中都不包括的散列值對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù)。
基于上述方法的另一實施例中,還包括:
所述與當(dāng)前礦池連接的礦機接收所述新的工作數(shù)據(jù),將所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值進行比對;
當(dāng)所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值不匹配時,停止處理所述當(dāng)前正在處理的工作數(shù)據(jù),開始處理所述新的工作數(shù)據(jù)。
基于上述方法的另一實施例中,還包括:當(dāng)所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值匹配時,忽略所述新的工作數(shù)據(jù),繼續(xù)處理所述當(dāng)前正在處理的工作數(shù)據(jù)。
基于上述方法的另一實施例中,還包括:
所述與當(dāng)前礦池連接的所有礦機將結(jié)果數(shù)據(jù)反饋給所述當(dāng)前礦池;所述結(jié)果數(shù)據(jù)是基于所述新的工作數(shù)據(jù)或當(dāng)前處理的工作數(shù)據(jù)計算得到的。
基于上述方法的另一實施例中,所述將所述新的工作數(shù)據(jù)發(fā)送給與所述當(dāng)前礦池連接的所有礦機,包括:
響應(yīng)于與所述當(dāng)前礦池連接的所有礦機的預(yù)估算力,對所述所有礦機按照預(yù)估算力由大到小進行排序,按序?qū)⑺鲂碌墓ぷ鲾?shù)據(jù)發(fā)送給所述所有礦機。
基于上述方法的另一實施例中,所述礦機的預(yù)估算力的獲得,包括:
基于所述礦機反饋的結(jié)果數(shù)據(jù)和反饋所述結(jié)果數(shù)據(jù)的時間計算獲得對應(yīng)所述礦機的預(yù)估算力。
根據(jù)本發(fā)明實施例的另一個方面,提供的一種探測和切換數(shù)據(jù)的裝置,包括:
數(shù)據(jù)獲取單元,用于響應(yīng)于當(dāng)前礦池獲取計算數(shù)據(jù)的請求,分別從至少一個其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并對所述獲取的多組計算數(shù)據(jù)進行比對,得到最新計算數(shù)據(jù);
數(shù)據(jù)發(fā)送單元,用于基于所述得到的最新計算數(shù)據(jù)生成新的工作數(shù)據(jù),并將所述新的工作數(shù)據(jù)發(fā)送給與所述當(dāng)前礦池連接的所有礦機。
根據(jù)本發(fā)明實施例的另一個方面,提供的一種電子設(shè)備,包括處理器,所述處理器包括如上所述的探測和切換數(shù)據(jù)的的裝置。
基于本發(fā)明上述實施例提供的探測和切換數(shù)據(jù)的方法、裝置和電子設(shè)備,通過從其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并判斷獲取最新計算數(shù)據(jù),基于最新計算數(shù)據(jù)生成新的工作數(shù)據(jù)發(fā)送到礦機中,使礦機能夠獲取最新的計算數(shù)據(jù),因此,在同等算力下,該礦池中的礦機能夠最快計算出新的數(shù)據(jù)塊并獲得其他礦池的認可,在最大限度上減小了數(shù)據(jù)孤塊的產(chǎn)生,提高了礦機收益。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
附圖說明
構(gòu)成說明書的一部分的附圖描述了本發(fā)明的實施例,并且連同描述一起用于解釋本發(fā)明的原理。
參照附圖,根據(jù)下面的詳細描述,可以更加清楚地理解本發(fā)明,其中:
圖1為本發(fā)明探測和切換數(shù)據(jù)的方法一個實施例的流程圖。
圖2為本發(fā)明探測和切換數(shù)據(jù)的方法另一個實施例的流程圖。
圖3為本發(fā)明探測和切換數(shù)據(jù)的方法又一個實施例的流程圖。
圖4為本發(fā)明探測和切換數(shù)據(jù)的裝置一個實施例的結(jié)構(gòu)示意圖。
圖5為本發(fā)明探測和切換數(shù)據(jù)的裝置另一個實施例的結(jié)構(gòu)示意圖。
圖6為本發(fā)明探測和切換數(shù)據(jù)的裝置又一個實施例的結(jié)構(gòu)示意圖。
具體實施方式
現(xiàn)在將參照附圖來詳細描述本發(fā)明的各種示例性實施例。應(yīng)注意到:除非另外具體說明,否則在這些實施例中闡述的部件和步驟的相對布置、數(shù)字表達式和數(shù)值不限制本發(fā)明的范圍。
同時,應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個部分的尺寸并不是按照實際的比例關(guān)系繪制的。
以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制。
對于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為說明書的一部分。
應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步討論。
本發(fā)明實施例可以應(yīng)用于計算機系統(tǒng)/服務(wù)器,其可與眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置一起操作。適于與計算機系統(tǒng)/服務(wù)器一起使用的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個人計算機系統(tǒng)、服務(wù)器計算機系統(tǒng)、瘦客戶機、胖客戶機、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機頂盒、可編程消費電子產(chǎn)品、網(wǎng)絡(luò)個人電腦、小型計算機系統(tǒng)﹑大型計算機系統(tǒng)和包括上述任何系統(tǒng)的分布式云計算技術(shù)環(huán)境,等等。
計算機系統(tǒng)/服務(wù)器可以在由計算機系統(tǒng)執(zhí)行的計算機系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或者實現(xiàn)特定的抽象數(shù)據(jù)類型。計算機系統(tǒng)/服務(wù)器可以在分布式云計算環(huán)境中實施,分布式云計算環(huán)境中,任務(wù)是由通過通信網(wǎng)絡(luò)連接的遠程處理設(shè)備執(zhí)行的。在分布式云計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備的本地或遠程計算系統(tǒng)存儲介質(zhì)上。
圖1為本發(fā)明探測和切換數(shù)據(jù)的方法一個實施例的流程圖。如圖1所示,該實施例方法包括:
步驟101,響應(yīng)于當(dāng)前礦池獲取計算數(shù)據(jù)的請求,分別從至少一個其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并對獲取的多組計算數(shù)據(jù)進行比對,得到最新計算數(shù)據(jù)。
其中,上述其他礦池包括與當(dāng)前礦池存在連接關(guān)系的礦池,這個連接關(guān)系可以是通過協(xié)議連接或其他能實現(xiàn)數(shù)據(jù)通信的連接,在本實施例中,可以通過模擬礦機之間的通信協(xié)議的方式實現(xiàn)當(dāng)前礦池與其他礦池之間的通信,進而獲得其他礦池中的計算數(shù)據(jù)。
步驟102,基于得到的最新計算數(shù)據(jù)生成新的工作數(shù)據(jù),并將新的工作數(shù)據(jù)發(fā)送給與當(dāng)前礦池連接的所有礦機。
基于本發(fā)明上述實施例提供的探測和切換數(shù)據(jù)的方法,通過從其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并判斷獲取最新計算數(shù)據(jù),基于最新計算數(shù)據(jù)生成新的工作數(shù)據(jù)發(fā)送到礦機中,使礦機能夠獲取最新的計算數(shù)據(jù),因此,在同等算力下,該礦池中的礦機能夠最快計算出新的數(shù)據(jù)塊并獲得其他礦池的認可,在最大限度上減小了數(shù)據(jù)孤塊的產(chǎn)生,提高了礦機收益。
在本發(fā)明上述實施例的一個具體示例中,步驟101中從其他礦池獲取計算數(shù)據(jù)的過程具體可以包括:
監(jiān)測其他礦池的工作狀態(tài),并獲取其他礦池當(dāng)前計算的工作數(shù)據(jù);基于獲取的工作數(shù)據(jù)轉(zhuǎn)換得到對應(yīng)其他礦池的計算數(shù)據(jù)。
在本示例中,為了保證能實時獲取最新的計算數(shù)據(jù),對與當(dāng)前礦池存在連接關(guān)系的其他礦機采用監(jiān)測手段,每當(dāng)其他礦池接收到或發(fā)出新的工作數(shù)據(jù),當(dāng)前礦池都能第一時間了解并獲取新的工作數(shù)據(jù),保證了當(dāng)前礦池能及時更新計算數(shù)據(jù)。
在本發(fā)明上述實施例的一個具體示例中,步驟101中從數(shù)字貨幣客戶端獲取計算數(shù)據(jù)的過程具體可以包括:
基于比特幣去中心化挖礦協(xié)議調(diào)用數(shù)字貨幣客戶端,獲取數(shù)字貨幣客戶端正在處理的計算數(shù)據(jù)。
GBT比特幣去中心化挖礦協(xié)議(getblocktemplate)為的是分布式去中心化挖礦,為的是克服中心化的缺點,實現(xiàn)節(jié)點與節(jié)點之間的影響,會通過網(wǎng)絡(luò)而形成非線性因果關(guān)系;這種開放式、扁平化、平等性的系統(tǒng)現(xiàn)象或結(jié)構(gòu)稱為去中心化;比特幣是一種分布式的虛擬貨幣,整個網(wǎng)絡(luò)由用戶構(gòu)成,沒有中央銀行。去中心化是比特幣安全與自由的保證。
在本發(fā)明上述實施例的一個具體示例中,工作數(shù)據(jù)可以包括:證明信息、上一個數(shù)據(jù)塊的散列值、版本信息、難度信息、發(fā)送時間信息和需計算數(shù)據(jù)信息。
從其他礦池中可以獲得工作數(shù)據(jù),而通過對工作數(shù)據(jù)中的數(shù)據(jù)進行提取就可以獲得計算數(shù)據(jù),就可以實現(xiàn)與從數(shù)據(jù)貨幣客戶端中獲取的計算數(shù)據(jù)進行比對的目的。
在本發(fā)明上述實施例的一個具體示例中,計算數(shù)據(jù)包括:版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊、開始處理時間信息和計算難度信息。
計算數(shù)據(jù)中包含的數(shù)據(jù)的信息可以用于判斷這個計算數(shù)據(jù)是否是最新計算數(shù)據(jù),如果是最新計算數(shù)據(jù),就可以根據(jù)多個未確認的交易數(shù)據(jù)塊和計算難度信息等信息生成新的工作信息并由礦池發(fā)送到與其相連接的礦機中,由礦機進行計算獲得新的數(shù)據(jù)塊。
在本發(fā)明上述實施例的一個具體示例中,步驟101中對獲取的多組計算數(shù)據(jù)進行比對得到最新計算數(shù)據(jù)的過程具體可以包括:
對獲取的多組計算數(shù)據(jù)分別提取對應(yīng)每組計算數(shù)據(jù)的版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊和時間信息;
比對不同計算數(shù)據(jù)對應(yīng)的時間信息;基于時間信息得到最接近當(dāng)前時間的時間信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù)。
和/或,比對不同計算數(shù)據(jù)對應(yīng)的版本信息;基于版本信息得到最新版本信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù)。
和/或,將一組計算數(shù)據(jù)中的上一個數(shù)據(jù)塊的散列值與另一組計算數(shù)據(jù)中的未確認的交易數(shù)據(jù)塊中的散列值進行比對;基于散列值得到所有其他計算數(shù)據(jù)中都不包括的散列值對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù)。
上述基于三種信息進行比對的方式可以任意組合或單獨使用,都可以達到判斷最新計算數(shù)據(jù)的功能,上述比對方式是有比特幣的特殊性決定的。
圖2為本發(fā)明探測和切換數(shù)據(jù)的方法另一個實施例的流程圖。如圖2所示,該實施例方法包括:
步驟101,響應(yīng)于當(dāng)前礦池獲取計算數(shù)據(jù)的請求,分別從至少一個其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并對獲取的多組計算數(shù)據(jù)進行比對,得到最新計算數(shù)據(jù)。
步驟102,基于得到的最新計算數(shù)據(jù)生成新的工作數(shù)據(jù),并將新的工作數(shù)據(jù)發(fā)送給與當(dāng)前礦池連接的所有礦機。
步驟203,與當(dāng)前礦池連接的礦機接收新的工作數(shù)據(jù),并判斷新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值是否匹配;如果匹配,執(zhí)行步驟205;否則,執(zhí)行步驟204。
步驟204,停止處理當(dāng)前正在處理的工作數(shù)據(jù),開始處理新的工作數(shù)據(jù)。
步驟205,忽略所述新的工作數(shù)據(jù),繼續(xù)處理所述當(dāng)前正在處理的工作數(shù)據(jù)。
在本實施例方法中,與當(dāng)前礦池連接的礦機獲取新的工作數(shù)據(jù)后,首先將其中的散列值進行比對,以確定接收的新的工作數(shù)據(jù)和正在處理的工作數(shù)據(jù)哪個工作數(shù)據(jù)才是最新的,確定了最新的工作數(shù)據(jù)才能最快的計算出新的可以被認可的數(shù)據(jù)塊,使礦機的挖礦效率大大提高。
圖3為本發(fā)明探測和切換數(shù)據(jù)的方法又一個實施例的流程圖。如圖3所示,本實施例方法,包括:
步驟101,響應(yīng)于當(dāng)前礦池獲取計算數(shù)據(jù)的請求,分別從至少一個其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并對獲取的多組計算數(shù)據(jù)進行比對,得到最新計算數(shù)據(jù)。
步驟102,基于得到的最新計算數(shù)據(jù)生成新的工作數(shù)據(jù),并將新的工作數(shù)據(jù)發(fā)送給與當(dāng)前礦池連接的所有礦機。
步驟306,與當(dāng)前礦池連接的所有礦機將結(jié)果數(shù)據(jù)反饋給當(dāng)前礦池。
其中,結(jié)果數(shù)據(jù)是基于新的工作數(shù)據(jù)或當(dāng)前處理的工作數(shù)據(jù)計算得到的。
在本實施例中,礦機將計算完成的結(jié)果數(shù)據(jù)反饋到當(dāng)前礦池,當(dāng)前礦池就可以根據(jù)反饋的結(jié)果數(shù)據(jù)對每個礦機的算力進行預(yù)估,在算力預(yù)估的過程中,可以通過對每個礦機分配一個唯一對應(yīng)的礦機編號對每個礦機進行識別,每次接收到的結(jié)果數(shù)據(jù)中還包括該礦機編號,此時礦池就可以快速確定結(jié)果數(shù)據(jù)來自哪個礦機,進而確定每個礦機的預(yù)估算力,在下次發(fā)送工作數(shù)據(jù)時將基于預(yù)估算力進行發(fā)送。
在本發(fā)明上述實施例的一個具體示例中,步驟102中將新的工作數(shù)據(jù)發(fā)送給與當(dāng)前礦池連接的所有礦機的過程具體可以包括:
響應(yīng)于與當(dāng)前礦池連接的所有礦機的預(yù)估算力,對所有礦機按照預(yù)估算力由大到小進行排序,按序?qū)⑿碌墓ぷ鲾?shù)據(jù)發(fā)送給所述所有礦機。
在本示例中提出了將新的工作數(shù)據(jù)發(fā)送給礦機的過程,基于預(yù)估算力對礦機進行排序,按序?qū)⑿碌墓ぷ鲾?shù)據(jù)發(fā)送到礦機中,此時保證了預(yù)估算力大的礦機能夠更快的更新到新的計算數(shù)據(jù),提升礦池整體性能;但是除了上述排序發(fā)送新的計算數(shù)據(jù)的方式,礦池還可以采用廣播的方式將新的工作數(shù)據(jù)同時發(fā)送給所有與其相連的礦機。
在本發(fā)明上述實施例的一個具體示例中,礦機的預(yù)估算力的獲得可以包括:
基于礦機反饋的結(jié)果數(shù)據(jù)和反饋結(jié)果數(shù)據(jù)的時間計算獲得對應(yīng)該礦機的預(yù)估算力。
在本示例中,衡量一個礦機算力的標(biāo)準(zhǔn)包括反饋的結(jié)果數(shù)據(jù)的準(zhǔn)確性和反饋結(jié)果數(shù)據(jù)的速度;在同樣時間的前提下,結(jié)果數(shù)據(jù)越好,說明礦機的算力越大;而在同樣的結(jié)果數(shù)據(jù)的前提下,反饋結(jié)果的時間越短,說明礦機的算力越大;可以認為礦機的算力大小與結(jié)果數(shù)據(jù)的準(zhǔn)確性成正比,與反饋結(jié)果的時間成反比。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
圖4為本發(fā)明探測和切換數(shù)據(jù)的裝置一個實施例的結(jié)構(gòu)示意圖。該實施例的裝置可用于實現(xiàn)本發(fā)明上述各方法實施例。如圖4所示,該實施例的裝置包括:
數(shù)據(jù)獲取單元1,用于響應(yīng)于當(dāng)前礦池獲取計算數(shù)據(jù)的請求,分別從至少一個其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并對獲取的多組計算數(shù)據(jù)進行比對,得到最新計算數(shù)據(jù)。
數(shù)據(jù)發(fā)送單元2,用于基于所述得到的最新計算數(shù)據(jù)生成新的工作數(shù)據(jù),并將新的工作數(shù)據(jù)發(fā)送給與當(dāng)前礦池連接的所有礦機。
基于本發(fā)明上述實施例提供的探測和切換數(shù)據(jù)的裝置,通過從其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并判斷獲取最新計算數(shù)據(jù),基于最新計算數(shù)據(jù)生成新的工作數(shù)據(jù)發(fā)送到礦機中,使礦機能夠獲取最新的計算數(shù)據(jù),因此,在同等算力下,該礦池中的礦機能夠最快計算出新的數(shù)據(jù)塊并獲得其他礦池的認可,在最大限度上減小了數(shù)據(jù)孤塊的產(chǎn)生,提高了礦機收益。
在本發(fā)明上述實施例的一個具體示例中,數(shù)據(jù)獲取單元1可以包括:
監(jiān)測模塊,用于監(jiān)測其他礦池的工作狀態(tài),并獲取其他礦池當(dāng)前計算的工作數(shù)據(jù);
轉(zhuǎn)換模塊,用于基于獲取的工作數(shù)據(jù)轉(zhuǎn)換得到對應(yīng)其他礦池的計算數(shù)據(jù)。
在本發(fā)明上述實施例的一個具體示例中,數(shù)據(jù)獲取單元1還可以包括:
調(diào)用模塊,用于基于比特幣去中心化挖礦協(xié)議調(diào)用數(shù)字貨幣客戶端,獲取所述數(shù)字貨幣客戶端正在處理的計算數(shù)據(jù)。
在本發(fā)明上述實施例的一個具體示例中,工作數(shù)據(jù)包括:證明信息、上一個數(shù)據(jù)塊的散列值、版本信息、難度信息、發(fā)送時間信息和需計算數(shù)據(jù)信息。
在本發(fā)明上述實施例的一個具體示例中,計算數(shù)據(jù)包括:版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊、開始處理時間信息和計算難度信息。
在本發(fā)明上述實施例的一個具體示例中,數(shù)據(jù)獲取單元1還可以包括:
信息獲取模塊,用于對獲取的多組計算數(shù)據(jù)分別提取對應(yīng)每組計算數(shù)據(jù)的版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊和時間信息;
比對模塊,用于比對不同計算數(shù)據(jù)對應(yīng)的時間信息和/或版本信息;
和/或,將一組計算數(shù)據(jù)中的上一個數(shù)據(jù)塊的散列值與另一組計算數(shù)據(jù)中的未確認的交易數(shù)據(jù)塊中的散列值進行比對。
在本發(fā)明上述實施例的一個具體示例中,數(shù)據(jù)獲取單元1還可以包括:
比對結(jié)果模塊,用于基于時間信息得到最接近當(dāng)前時間的時間信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù);
和/或,基于版本信息得到最新版本信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù);
和/或,基于散列值得到所有其他計算數(shù)據(jù)中都不包括的散列值對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù)。
圖5為本發(fā)明探測和切換數(shù)據(jù)的裝置另一個實施例的結(jié)構(gòu)示意圖,在上述實施例的基礎(chǔ)上,如圖5所示,本裝置實施例還包括:
礦機比對單元3,用于在與當(dāng)前礦池連接的礦機接收新的工作數(shù)據(jù)后,將新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值進行比對。
匹配單元4,用于當(dāng)新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值不匹配時,停止處理當(dāng)前正在處理的工作數(shù)據(jù),開始處理所述新的工作數(shù)據(jù)。
在本實施例中,與當(dāng)前礦池連接的礦機獲取新的工作數(shù)據(jù)后,首先將其中的散列值進行比對,以確定接收的新的工作數(shù)據(jù)和正在處理的工作數(shù)據(jù)哪個工作數(shù)據(jù)才是最新的,確定了最新的工作數(shù)據(jù)才能最快的計算出新的可以被認可的數(shù)據(jù)塊,使礦機的挖礦效率大大提高。
在本發(fā)明上述實施例的一個具體示例中,還可以包括:不匹配單元5,用于當(dāng)新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值匹配時,忽略新的工作數(shù)據(jù),繼續(xù)處理當(dāng)前正在處理的工作數(shù)據(jù)。
圖6為本發(fā)明探測和切換數(shù)據(jù)的裝置又一個實施例的結(jié)構(gòu)示意圖。在上述實施例的基礎(chǔ)上,該實施例裝置還包括:
結(jié)果反饋單元6,用于控制與當(dāng)前礦池連接的所有礦機將結(jié)果數(shù)據(jù)反饋給當(dāng)前礦池。
其中,結(jié)果數(shù)據(jù)是基于所述新的工作數(shù)據(jù)或當(dāng)前處理的工作數(shù)據(jù)計算得到的。
在本實施例中,礦機將計算完成的結(jié)果數(shù)據(jù)反饋到當(dāng)前礦池,當(dāng)前礦池就可以根據(jù)反饋的結(jié)果數(shù)據(jù)對每個礦機的算力進行預(yù)估,在算力預(yù)估的過程中,可以通過對每個礦機分配一個唯一對應(yīng)的礦機編號對每個礦機進行識別,以每次接收到的結(jié)果數(shù)據(jù)中還包括該礦機編號,此時礦池就可以快速確定結(jié)果數(shù)據(jù)來自哪個礦機,進而確定每個礦機的預(yù)估算力,在下次發(fā)送工作數(shù)據(jù)時將基于預(yù)估算力進行發(fā)送。
在本發(fā)明上述實施例的一個具體示例中,數(shù)據(jù)發(fā)送單元2包括:
算力預(yù)估模塊21,用于響應(yīng)于與當(dāng)前礦池連接的所有礦機的預(yù)估算力;
排序發(fā)送模塊22,用于對所有礦機按照預(yù)估算力由大到小進行排序,按序?qū)⑿碌墓ぷ鲾?shù)據(jù)發(fā)送給所述所有礦機。
在本發(fā)明上述實施例的一個具體示例中,算力預(yù)估模塊21具體用于基于礦機反饋的結(jié)果數(shù)據(jù)和反饋結(jié)果數(shù)據(jù)的時間計算獲得對應(yīng)礦機的預(yù)估算力。
本發(fā)明實施例的另一個方面,還提供一種電子設(shè)備,包括處理器,所述處理器包括上述實施例任意一項的探測和切換數(shù)據(jù)的的裝置。
1、一種探測和切換數(shù)據(jù)的方法,包括:
響應(yīng)于當(dāng)前礦池獲取計算數(shù)據(jù)的請求,分別從至少一個其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并對所述獲取的多組計算數(shù)據(jù)進行比對,得到最新計算數(shù)據(jù);
基于所述得到的最新計算數(shù)據(jù)生成新的工作數(shù)據(jù),并將所述新的工作數(shù)據(jù)發(fā)送給與所述當(dāng)前礦池連接的所有礦機。
2、根據(jù)1所述的方法,所述從其他礦池獲取計算數(shù)據(jù),包括:
監(jiān)測其他礦池的工作狀態(tài),并獲取其他礦池當(dāng)前計算的工作數(shù)據(jù);
基于所述獲取的工作數(shù)據(jù)轉(zhuǎn)換得到對應(yīng)所述其他礦池的計算數(shù)據(jù)。
3、根據(jù)1或2所述的方法,所述從數(shù)字貨幣客戶端獲取計算數(shù)據(jù),包括:
基于比特幣去中心化挖礦協(xié)議調(diào)用數(shù)字貨幣客戶端,獲取所述數(shù)字貨幣客戶端正在處理的計算數(shù)據(jù)。
4、根據(jù)2或3所述的方法,所述工作數(shù)據(jù)包括:證明信息、上一個數(shù)據(jù)塊的散列值、版本信息、難度信息、發(fā)送時間信息和需計算數(shù)據(jù)信息。
5、根據(jù)1至4任意一項所述的方法,所述計算數(shù)據(jù)包括:版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊、開始處理時間信息和計算難度信息。
6、根據(jù)5所述的方法,所述對所述獲取的多組計算數(shù)據(jù)進行比對,包括:
對所述獲取的多組計算數(shù)據(jù)分別提取對應(yīng)每組計算數(shù)據(jù)的版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊和時間信息;
比對不同計算數(shù)據(jù)對應(yīng)的時間信息和/或版本信息;
和/或,將一組計算數(shù)據(jù)中的上一個數(shù)據(jù)塊的散列值與另一組計算數(shù)據(jù)中的未確認的交易數(shù)據(jù)塊中的散列值進行比對。
7、根據(jù)6所述的方法,所述得到最新計算數(shù)據(jù),包括:
基于時間信息得到最接近當(dāng)前時間的時間信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù);
和/或,基于版本信息得到最新版本信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù);
和/或,基于散列值得到所有其他計算數(shù)據(jù)中都不包括的散列值對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù)。
8、根據(jù)4至7任意一項所述的方法,還包括:
所述與當(dāng)前礦池連接的礦機接收所述新的工作數(shù)據(jù),將所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值進行比對;
當(dāng)所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值不匹配時,停止處理所述當(dāng)前正在處理的工作數(shù)據(jù),開始處理所述新的工作數(shù)據(jù)。
9、根據(jù)8所述的方法,其特征在于,還包括:當(dāng)所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值匹配時,忽略所述新的工作數(shù)據(jù),繼續(xù)處理所述當(dāng)前正在處理的工作數(shù)據(jù)。
10、根據(jù)1至9任意一項所述的方法,還包括:
所述與當(dāng)前礦池連接的所有礦機將結(jié)果數(shù)據(jù)反饋給所述當(dāng)前礦池;所述結(jié)果數(shù)據(jù)是基于所述新的工作數(shù)據(jù)或當(dāng)前處理的工作數(shù)據(jù)計算得到的。
11、根據(jù)10所述的方法,所述將所述新的工作數(shù)據(jù)發(fā)送給與所述當(dāng)前礦池連接的所有礦機,包括:
響應(yīng)于與所述當(dāng)前礦池連接的所有礦機的預(yù)估算力,對所述所有礦機按照預(yù)估算力由大到小進行排序,按序?qū)⑺鲂碌墓ぷ鲾?shù)據(jù)發(fā)送給所述所有礦機。
12、根據(jù)11所述的方法,所述礦機的預(yù)估算力的獲得,包括:
基于所述礦機反饋的結(jié)果數(shù)據(jù)和反饋所述結(jié)果數(shù)據(jù)的時間計算獲得對應(yīng)所述礦機的預(yù)估算力。
13、一種探測和切換數(shù)據(jù)的裝置,包括:
數(shù)據(jù)獲取單元,用于響應(yīng)于當(dāng)前礦池獲取計算數(shù)據(jù)的請求,分別從至少一個其他礦池和數(shù)字貨幣客戶端獲取多組計算數(shù)據(jù),并對所述獲取的多組計算數(shù)據(jù)進行比對,得到最新計算數(shù)據(jù);
數(shù)據(jù)發(fā)送單元,用于基于所述得到的最新計算數(shù)據(jù)生成新的工作數(shù)據(jù),并將所述新的工作數(shù)據(jù)發(fā)送給與所述當(dāng)前礦池連接的所有礦機。
14、根據(jù)13所述的裝置,所述數(shù)據(jù)獲取單元包括:
監(jiān)測模塊,用于監(jiān)測其他礦池的工作狀態(tài),并獲取其他礦池當(dāng)前計算的工作數(shù)據(jù);
轉(zhuǎn)換模塊,用于基于所述獲取的工作數(shù)據(jù)轉(zhuǎn)換得到對應(yīng)所述其他礦池的計算數(shù)據(jù)。
15、根據(jù)13或14所述的裝置,所述數(shù)據(jù)獲取單元還包括:
調(diào)用模塊,用于基于比特幣去中心化挖礦協(xié)議調(diào)用數(shù)字貨幣客戶端,獲取所述數(shù)字貨幣客戶端正在處理的計算數(shù)據(jù)。
16、根據(jù)14或15所述的裝置,所述工作數(shù)據(jù)包括:證明信息、上一個數(shù)據(jù)塊的散列值、版本信息、難度信息、發(fā)送時間信息和需計算數(shù)據(jù)信息。
17、根據(jù)13至16任意一項所述的裝置,所述計算數(shù)據(jù)包括:版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊、開始處理時間信息和計算難度信息。
18、根據(jù)17所述的裝置,所述數(shù)據(jù)獲取單元還包括:
信息獲取模塊,用于對所述獲取的多組計算數(shù)據(jù)分別提取對應(yīng)每組計算數(shù)據(jù)的版本信息、上一個數(shù)據(jù)塊的散列值、多個未確認的交易數(shù)據(jù)塊和時間信息;
比對模塊,用于比對不同計算數(shù)據(jù)對應(yīng)的時間信息和/或版本信息;
和/或,將一組計算數(shù)據(jù)中的上一個數(shù)據(jù)塊的散列值與另一組計算數(shù)據(jù)中的未確認的交易數(shù)據(jù)塊中的散列值進行比對。
19、根據(jù)18所述的裝置,所述數(shù)據(jù)獲取單元還包括:
比對結(jié)果模塊,用于基于時間信息得到最接近當(dāng)前時間的時間信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù);
和/或,基于版本信息得到最新版本信息對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù);
和/或,基于散列值得到所有其他計算數(shù)據(jù)中都不包括的散列值對應(yīng)的一組計算數(shù)據(jù)作為最新計算數(shù)據(jù)。
20、根據(jù)16至19任意一項所述的裝置,還包括:
礦機比對單元,用于在與當(dāng)前礦池連接的礦機接收所述新的工作數(shù)據(jù)后,將所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值進行比對;
匹配單元,用于當(dāng)所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值不匹配時,停止處理所述當(dāng)前正在處理的工作數(shù)據(jù),開始處理所述新的工作數(shù)據(jù)。
21、根據(jù)20所述的裝置,還包括:
不匹配單元,用于當(dāng)所述新的工作數(shù)據(jù)中上一個數(shù)據(jù)塊的散列值與當(dāng)前正在處理的工作數(shù)據(jù)中的散列值匹配時,忽略所述新的工作數(shù)據(jù),繼續(xù)處理所述當(dāng)前正在處理的工作數(shù)據(jù)。
22、根據(jù)13至21任意一項所述的裝置,還包括:
結(jié)果反饋單元,用于控制與當(dāng)前礦池連接的所有礦機將結(jié)果數(shù)據(jù)反饋給所述當(dāng)前礦池;所述結(jié)果數(shù)據(jù)是基于所述新的工作數(shù)據(jù)或當(dāng)前處理的工作數(shù)據(jù)計算得到的。
23、根據(jù)22所述的裝置,所述數(shù)據(jù)發(fā)送單元包括:
算力預(yù)估模塊,用于響應(yīng)于與所述當(dāng)前礦池連接的所有礦機的預(yù)估算力;
排序發(fā)送模塊,用于對所述所有礦機按照預(yù)估算力由大到小進行排序,按序?qū)⑺鲂碌墓ぷ鲾?shù)據(jù)發(fā)送給所述所有礦機。
24、根據(jù)23所述的裝置,所述算力預(yù)估模塊具體用于基于所述礦機反饋的結(jié)果數(shù)據(jù)和反饋所述結(jié)果數(shù)據(jù)的時間計算獲得對應(yīng)所述礦機的預(yù)估算力。
25、一種電子設(shè)備,包括處理器,所述處理器如13至24任意一項所述的探測和切換數(shù)據(jù)的的裝置。
本說明書中各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似的部分相互參見即可。對于系統(tǒng)實施例而言,由于其與方法實施例基本對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
可能以許多方式來實現(xiàn)本發(fā)明的方法和裝置。例如,可通過軟件、硬件、固件或者軟件、硬件、固件的任何組合來實現(xiàn)本發(fā)明的方法和裝置。用于所述方法的步驟的上述順序僅是為了進行說明,本發(fā)明的方法的步驟不限于以上具體描述的順序,除非以其它方式特別說明。此外,在一些實施例中,還可將本發(fā)明實施為記錄在記錄介質(zhì)中的程序,這些程序包括用于實現(xiàn)根據(jù)本發(fā)明的方法的機器可讀指令。因而,本發(fā)明還覆蓋存儲用于執(zhí)行根據(jù)本發(fā)明的方法的程序的記錄介質(zhì)。
本發(fā)明的描述是為了示例和描述起見而給出的,而并不是無遺漏的或者將本發(fā)明限于所公開的形式。很多修改和變化對于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實施例是為了更好說明本發(fā)明的原理和實際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計適于特定用途的帶有各種修改的各種實施例。