技術(shù)領(lǐng)域
[0001] 本
發(fā)明涉及區(qū)塊鏈技術(shù)領(lǐng)域,特別是涉及一種區(qū)塊鏈共識方法及裝置。
背景技術(shù)
[0002] 區(qū)塊鏈是一個
分布式賬本,每一個交易參與者都是區(qū)塊鏈網(wǎng)絡(luò)的
節(jié)點,每個節(jié)點都有一份完整的公共賬簿備份,上面記載著交易歷史信息。任何一個節(jié)點發(fā)起交易行為都需要將相關(guān)信息更新到區(qū)塊網(wǎng)絡(luò)中的每一個節(jié)點的賬簿,從而所有節(jié)點均可參與對這一筆交易的驗證。怎樣協(xié)調(diào)、保持各個賬本之間的一致性,就是共識機制需要解決的問題。
[0003] 共識機制的基本思路是每次臨時選擇一個節(jié)點作為記賬節(jié)點,其他節(jié)點核實該記賬節(jié)點記錄的每一筆交易是否真實有效,如果不是則需要更換下一個記賬節(jié)點。由于安全性問題,區(qū)塊鏈設(shè)計時規(guī)定每次記賬都需要重新選擇記賬節(jié)點,而現(xiàn)有的共識機制的區(qū)別主要是在記賬節(jié)點的選取方式上,例如,DPoS(股權(quán)授權(quán)證明)機制其核心思路就是選取見證節(jié)點輪流記賬,這種方法的公正性不高,依賴于見證節(jié)點的可信度和選取見證節(jié)點的方案,該共識機制會存在見證節(jié)點的信任問題,因此無法公平的選擇記賬節(jié)點。
發(fā)明內(nèi)容
[0004] 針對于上述問題,本發(fā)明提供一種區(qū)塊鏈共識方法及裝置,基于量子密鑰的使用,解決了見證節(jié)點的信任問題及如何在見證節(jié)點中公平選擇記賬節(jié)點的問題。
[0005] 為了實現(xiàn)上述目的,本發(fā)明提供了如下技術(shù)方案:
[0006] 一種區(qū)塊鏈共識方法,包括:
[0007] 確定見證節(jié)點;
[0008] 基于量子密鑰分發(fā)網(wǎng)絡(luò),為各個所述見證節(jié)點分發(fā)全局密鑰;
[0009] 利用所述全局密鑰和交易數(shù)據(jù)選取出所述見證節(jié)點中滿足預(yù)設(shè)條件的節(jié)點作為記賬節(jié)點。
[0010] 可選地,所述基于量子密鑰分發(fā)網(wǎng)絡(luò),為各個所述見證節(jié)點分發(fā)全局密鑰,包括:
[0011] 在所述見證節(jié)點之間構(gòu)建量子密鑰分發(fā)網(wǎng)絡(luò);
[0012] 在所述量子密鑰分發(fā)網(wǎng)絡(luò)中,隨機選取一對量子網(wǎng)絡(luò)節(jié)點,并生成一組對稱密鑰,將所述對稱密鑰作為全局密鑰;
[0013] 將所述全局密鑰分發(fā)至所有量子網(wǎng)絡(luò)節(jié)點,并指示所述見證節(jié)點從與之對應(yīng)的量子網(wǎng)絡(luò)節(jié)點中提取所述全局密鑰,實現(xiàn)所有所述見證節(jié)點獲得完全相同的全局密鑰。
[0014] 可選地,還包括:
[0015] 當所述見證節(jié)點從與之對應(yīng)的量子網(wǎng)絡(luò)節(jié)點中提取到所述全局密鑰之后,通過發(fā)送所述見證節(jié)點的
摘要校驗所述全局密鑰的準確性,若校驗成功,則指示所述見證節(jié)點記錄所述全局密鑰。
[0016] 可選地,所述利用所述全局密鑰和交易數(shù)據(jù)選取出所述見證節(jié)點中滿足預(yù)設(shè)條件的節(jié)點作為記賬節(jié)點,包括:
[0017] 響應(yīng)于交易數(shù)據(jù)積累完成前,根據(jù)所述見證節(jié)點的全局密鑰生成組密鑰;
[0018] 將所述組密鑰進行劃分得到若干塊組密鑰,將每一塊組密鑰發(fā)送至各個所述見證節(jié)點,其中,所述每一塊組密鑰僅作為一個所述見證節(jié)點的憑證;
[0019] 響應(yīng)于交易數(shù)據(jù)收集完成,將交易數(shù)據(jù)和對應(yīng)上一個區(qū)塊的散列值組合在一起生成散列數(shù)據(jù);
[0020] 獲取各個所述見證節(jié)點的差值信息,將差值最小的見證節(jié)點作為候選記賬節(jié)點;
[0021] 對所述候選記賬節(jié)點的憑證和交易數(shù)據(jù)進行驗證,若驗證成功將所述候選記賬節(jié)點作為記賬節(jié)點。
[0022] 可選地,所述響應(yīng)于交易數(shù)據(jù)收集完成,將交易數(shù)據(jù)和對應(yīng)上一個區(qū)塊的散列值組合在一起生成散列數(shù)據(jù),包括:
[0023] 獲取所述見證節(jié)點全局密鑰中未使用的隨機數(shù);
[0024] 將所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)和上一區(qū)塊的散列值進行組合,生成組合后的數(shù)據(jù);
[0025] 通過所述未使用的隨機數(shù)生成預(yù)設(shè)矩陣,并將所述預(yù)設(shè)矩陣與所述組合后的數(shù)據(jù)相乘,得到所述散列數(shù)據(jù);
[0026] 其中,所述差值信息表征所述散列數(shù)據(jù)與對應(yīng)的見證節(jié)點的憑證之間的差值。
[0027] 可選地,所述響應(yīng)于交易數(shù)據(jù)收集完成,將交易數(shù)據(jù)和對應(yīng)上一個區(qū)塊的散列值組合在一起生成散列數(shù)據(jù),包括:
[0028] 獲取所述見證節(jié)點全局密鑰中未使用的隨機數(shù);
[0029] 將所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)和上一區(qū)塊的散列值進行組合,生成組合后的數(shù)據(jù);
[0030] 通過所述見證節(jié)點的憑證生成預(yù)設(shè)矩陣,并將所述預(yù)設(shè)矩陣與所述組合后的數(shù)據(jù)相乘,得到所述散列數(shù)據(jù);
[0031] 其中,所述差值信息表征所述散列數(shù)據(jù)與所述未使用的隨機數(shù)之間的差值。
[0032] 可選地,所述響應(yīng)于交易數(shù)據(jù)收集完成,將交易數(shù)據(jù)和對應(yīng)上一個區(qū)塊的散列值組合在一起生成散列數(shù)據(jù),包括:
[0033] 獲取所述見證節(jié)點全局密鑰中未使用的隨機數(shù);
[0034] 將所有所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)、上一區(qū)塊的散列值和憑證進行組合,生成組合后的數(shù)據(jù);
[0035] 通過預(yù)設(shè)哈希函數(shù)對所述組合后的數(shù)據(jù)進行散列,得到所述散列數(shù)據(jù);
[0036] 其中,所述差值信息表征所述散列數(shù)據(jù)與所述未使用的隨機數(shù)之間的差值。
[0037] 一種區(qū)塊鏈共識裝置,包括:
[0038] 確定單元,用于確定見證節(jié)點;
[0039] 分發(fā)單元,用于基于量子密鑰分發(fā)網(wǎng)絡(luò),為各個所述見證節(jié)點分發(fā)全局密鑰;
[0040] 選取單元,用于利用所述全局密鑰和交易數(shù)據(jù)選取出所述見證節(jié)點中滿足預(yù)設(shè)條件的節(jié)點作為記賬節(jié)點。
[0041] 可選地,所述分發(fā)單元包括:
[0042] 構(gòu)建子單元,用于在所述見證節(jié)點之間構(gòu)建量子密鑰分發(fā)網(wǎng)絡(luò);
[0043] 密鑰生成子單元,用于在所述量子密鑰分發(fā)網(wǎng)絡(luò)中,隨機選取一對量子網(wǎng)絡(luò)節(jié)點,并生成一組對稱密鑰,將所述對稱密鑰作為全局密鑰;
[0044] 密鑰提取子單元,用于將所述全局密鑰分發(fā)至所有量子網(wǎng)絡(luò)節(jié)點,并指示所述見證節(jié)點從與之對應(yīng)的量子網(wǎng)絡(luò)節(jié)點中提取所述全局密鑰,實現(xiàn)所有所述見證節(jié)點獲得完全相同的全局密鑰。
[0045] 可選地,還包括:
[0046] 校驗子單元,用于當所述見證節(jié)點從與之對應(yīng)的量子網(wǎng)絡(luò)節(jié)點中提取到所述全局密鑰之后,通過發(fā)送所述見證節(jié)點的摘要校驗所述全局密鑰的準確性,若校驗成功,則指示所述見證節(jié)點記錄所述全局密鑰。
[0047] 可選地,所述選取單元包括:
[0048] 組密鑰生成子單元,用于響應(yīng)于交易數(shù)據(jù)積累完成前,根據(jù)所述見證節(jié)點的全局密鑰生成組密鑰;
[0049] 劃分子單元,用于將所述組密鑰進行劃分得到若干塊組密鑰,將每一塊組密鑰發(fā)送至各個所述見證節(jié)點,其中,所述每一塊組密鑰僅作為一個所述見證節(jié)點的憑證;
[0050] 散列生成子單元,用于響應(yīng)于交易數(shù)據(jù)收集完成,將交易數(shù)據(jù)和對應(yīng)上一個區(qū)塊的散列值組合在一起生成散列數(shù)據(jù);
[0051] 差值確
定子單元,用于獲取各個所述見證節(jié)點的差值信息,將差值最小的見證節(jié)點作為候選記賬節(jié)點;
[0052] 驗證子單元,用于對所述候選記賬節(jié)點的憑證和交易數(shù)據(jù)進行驗證,若驗證成功將所述候選記賬節(jié)點作為記賬節(jié)點。
[0053] 可選地,所述散列生成子單元包括:
[0054] 第一隨機數(shù)獲取子單元,用于獲取全局密鑰中未使用的隨機數(shù);
[0055] 第一組合子單元,用于將所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)和上一區(qū)塊的散列值進行組合,生成組合后的數(shù)據(jù);
[0056] 第一散列數(shù)據(jù)生成子單元,用于通過所述未使用的隨機數(shù)生成預(yù)設(shè)矩陣,并將所述預(yù)設(shè)矩陣與所述組合后的數(shù)據(jù)相乘,得到所述散列數(shù)據(jù);
[0057] 其中,所述差值信息表征所述散列數(shù)據(jù)與對應(yīng)的見證節(jié)點的憑證之間的差值。
[0058] 可選地,所述散列生成子單元包括:
[0059] 第二隨機數(shù)獲取子單元,用于獲取全局密鑰中未使用的隨機數(shù);
[0060] 第二組合子單元,用于將所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)和上一區(qū)塊的散列值進行組合,生成組合后的數(shù)據(jù);
[0061] 第二散列數(shù)據(jù)生成子單元,用于通過所述見證節(jié)點的憑證生成預(yù)設(shè)矩陣,并將所述預(yù)設(shè)矩陣與所述組合后的數(shù)據(jù)相乘,得到所述散列數(shù)據(jù);
[0062] 其中,所述差值信息表征所述散列數(shù)據(jù)與所述未使用的隨機數(shù)之間的差值。
[0063] 可選地,所述散列生成子單元包括:
[0064] 第三隨機數(shù)獲取子單元,獲取所述見證節(jié)點全局密鑰中未使用的隨機數(shù);
[0065] 第三組合子單元,用于將所有所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)、上一區(qū)塊的散列值和憑證進行組合,生成組合后的數(shù)據(jù);
[0066] 第三散列數(shù)據(jù)生成子單元,用于通過預(yù)設(shè)哈希函數(shù)對所述組合后的數(shù)據(jù)進行散列,得到所述散列數(shù)據(jù);
[0067] 其中,所述差值信息表征所述散列數(shù)據(jù)與所述未使用的隨機數(shù)之間的差值。
[0068] 相較于
現(xiàn)有技術(shù),本發(fā)明提供了一種區(qū)塊鏈共識方法及裝置,首先確定見證節(jié)點,然后通過在見證節(jié)點中構(gòu)建的量子密鑰分發(fā)網(wǎng)絡(luò)中使得各個見證節(jié)點獲得相同的全局密鑰,因為所有見證節(jié)點共同持有該全局密鑰,利用該全局密鑰選出滿足預(yù)設(shè)條件的節(jié)點,即通過量子彩票機制選擇得到記賬節(jié)點,因此,基于量子密鑰的使用,解決了見證節(jié)點的信任問題及如何在見證節(jié)點中公平選擇記賬節(jié)點的問題。
附圖說明
[0069] 為了更清楚地說明本發(fā)明
實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0070] 圖1為本發(fā)明實施例提供的一種區(qū)塊鏈共識方法的流程示意圖;
[0071] 圖2為本發(fā)明實施例提供的一種確定全局密鑰的方法的流程示意圖;
[0072] 圖3為本發(fā)明實施例提供的一種選取記賬節(jié)點的方法的流程示意圖;
[0073] 圖4為本發(fā)明實施例提供的一種區(qū)塊鏈共識裝置的結(jié)構(gòu)示意圖。
具體實施方式
[0074] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0075] 本發(fā)明的
說明書和
權(quán)利要求書及上述附圖中的術(shù)語“第一”和“第二”等是用于區(qū)別不同的對象,而不是用于描述特定的順序。此外術(shù)語“包括”和“具有”以及他們?nèi)魏?a href='/zhuanli/list-13233-1.html' target='_blank'>變形,意圖在于
覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備沒有設(shè)定于已列出的步驟或單元,而是可包括沒有列出的步驟或單元。
[0076] 在本發(fā)明實施例中提供了一種區(qū)塊鏈共識方法,參見圖1,包括:
[0077] S11、確定見證節(jié)點;
[0078] 在本發(fā)明實施例中確定見證節(jié)點時,不是PoW(工作證明)機制的完全去中心化信任的。量子網(wǎng)絡(luò)與區(qū)塊鏈結(jié)合基本只能考慮聯(lián)盟鏈和私有鏈。聯(lián)盟鏈中各成員在組建聯(lián)盟鏈時就會投票選出見證節(jié)點(也稱為見證人節(jié)點或者見證人),并為它們構(gòu)建量子網(wǎng)絡(luò)。如果是公有鏈,也可以參照DPoS機制進行股份投票選見證人。
[0079] S12、基于量子密鑰分發(fā)網(wǎng)絡(luò),為各個所述見證節(jié)點分發(fā)全局密鑰;
[0080] 在確定了見證節(jié)點之后,至少要在見證節(jié)點之間構(gòu)建量子密鑰分發(fā)網(wǎng)絡(luò)。然后各個見證節(jié)點(在該量子密鑰分發(fā)網(wǎng)絡(luò)中也為量
子節(jié)點)通過可信密鑰中繼,分發(fā)全局密鑰,即讓所有量子節(jié)點持續(xù)生成相同的隨機數(shù)。
[0081] 參見圖2,在本發(fā)明實施例中提供了一種確定全局密鑰的方法,包括:
[0082] S121、在所述見證節(jié)點之間構(gòu)建量子密鑰分發(fā)網(wǎng)絡(luò);
[0083] 通過在見證節(jié)點之間構(gòu)建量子密鑰分發(fā)網(wǎng)絡(luò),然后各個見證節(jié)點可以基于該專用的量子密鑰分發(fā)網(wǎng)絡(luò)通過可信密鑰中繼,分發(fā)全局密鑰,即讓所有量子節(jié)點持續(xù)地生成相同的隨機數(shù),即通過量子密鑰分發(fā)網(wǎng)絡(luò)保證了節(jié)點獲得的隨時數(shù)是真隨機數(shù)。
[0084] S122、在所述量子密鑰分發(fā)網(wǎng)絡(luò)中,隨機選取一對量子網(wǎng)絡(luò)節(jié)點,并生成一組對稱密鑰,將所述對稱密鑰作為全局密鑰;
[0085] 隨機選擇一對量子節(jié)點(量子網(wǎng)絡(luò)節(jié)點),生成一組對稱密鑰。需要說明的是,量子密鑰分發(fā)網(wǎng)和區(qū)塊鏈網(wǎng)絡(luò)是分開的,被選中的區(qū)塊鏈節(jié)點通知自己的量子節(jié)點分發(fā)全局密鑰,通過量子網(wǎng)絡(luò)將全局密鑰傳給各個量子網(wǎng)絡(luò)節(jié)點(即密鑰中繼),然后各個區(qū)塊鏈工作節(jié)點提取全局密鑰。除非被選中的一對節(jié)點(對稱密鑰)聯(lián)合替換了量子網(wǎng)絡(luò)中量子設(shè)備的程序,協(xié)同對密鑰造假,否則就是量子隨機數(shù)。替換程序會導(dǎo)致與其他量子設(shè)備的認證無法通過。
[0086] S123、將所述全局密鑰分發(fā)至所有量子網(wǎng)絡(luò)節(jié)點,并指示所述見證節(jié)點從與之對應(yīng)的量子網(wǎng)絡(luò)節(jié)點中提取所述全局密鑰,實現(xiàn)所有所述見證節(jié)點獲得完全相同的全局密鑰。
[0087] 所有見證節(jié)點都從自己的量子網(wǎng)絡(luò)節(jié)點提取密鑰后,需要發(fā)送摘要校驗密鑰的準確性,這樣全部見證節(jié)點都得到了完全相同的隨機數(shù),即全局密鑰。
[0088] S13、利用所述全局密鑰和交易數(shù)據(jù)選取出所述見證節(jié)點中滿足預(yù)設(shè)條件的節(jié)點作為記賬節(jié)點。
[0089] 生成了所有節(jié)點共同持有的全局密鑰,利用全局密鑰可以公平地選出記賬節(jié)點(也稱為記賬人節(jié)點或者記賬人)。在本發(fā)明實施例中是利用量子真隨機數(shù)來選擇由哪個節(jié)點記賬,實現(xiàn)過程類似彩票搖獎過程,這種共識機制可以叫做量子彩票機制。
[0090] 舉例說明,其購買彩票的過程就是:利用量子網(wǎng)絡(luò)的密鑰分發(fā),為每個節(jié)點分發(fā)一個隨機數(shù),且每個節(jié)點都知道其他節(jié)點被分發(fā)了什么隨機數(shù)(為集體公證誰是中獎?wù)?;搖獎過程就是:當積累了足夠的交易數(shù)據(jù)后,所有節(jié)點將當前交易數(shù)據(jù)和上一個區(qū)塊的交易數(shù)據(jù)的散列值組合在一起計算新的散列值(哈希值),公布該新的散列值與分配給它的隨機數(shù)的差值,差值最小的節(jié)點當選下一個記賬節(jié)點;兌獎過程就是:所有節(jié)點驗證新當選的記賬節(jié)點記錄地交易數(shù)據(jù)是否可靠,上一個區(qū)塊的散列值是否正確,分配給它的隨機數(shù)是否正確,計算的差值是否正確。當一定數(shù)量的節(jié)點確認新的記賬節(jié)點無誤后,區(qū)塊鏈承認該記賬節(jié)點記錄的交易數(shù)據(jù)。其中,區(qū)塊鏈是由多個區(qū)塊組成的,而每個區(qū)塊中會有一個時間戳即記錄該區(qū)塊生成的時間,這樣基于時間戳就能保證整條區(qū)塊鏈上的區(qū)塊都按照時間順序進行排列。每個區(qū)塊包含兩部分,即
區(qū)塊頭和區(qū)塊體,區(qū)塊頭記錄了當前區(qū)塊的元信息,區(qū)塊體為實際數(shù)據(jù),區(qū)塊頭中的元信息可以包括時間戳、區(qū)塊體的哈希值和上一個區(qū)塊的哈希值。若區(qū)塊鏈是用來記錄交易數(shù)據(jù)的,則區(qū)塊體的實際數(shù)據(jù)即為交易數(shù)據(jù),當對該區(qū)塊的區(qū)塊體進行哈希計算或驗證時,則需要獲知在該區(qū)塊時間戳之前的且緊鄰的區(qū)塊的哈希值來進行計算。
[0091] 具體的,參見圖3,本發(fā)明實施例提供的確認記賬節(jié)點的方法,可以包括以下步驟:
[0092] S131、響應(yīng)于交易數(shù)據(jù)積累完成前,根據(jù)所述見證節(jié)點的全局密鑰生成組密鑰;
[0093] 每次交易數(shù)據(jù)積累完成前,生成一串全局密鑰(真隨機數(shù)),又稱為組密鑰,即將每個見證節(jié)點對應(yīng)的全局密鑰存放至密鑰池中,這樣該密鑰池就會對應(yīng)一串全局密鑰即組密鑰。
[0094] S132、將所述組密鑰進行劃分得到若干塊組密鑰,將每一塊組密鑰發(fā)送至各個所述見證節(jié)點,其中,所述每一塊組密鑰僅作為一個所述見證節(jié)點的憑證;
[0095] 將上述的組密鑰分成若干個塊,每個節(jié)點從中認領(lǐng)一塊作為憑證。
[0096] S133、響應(yīng)于交易數(shù)據(jù)收集完成,將交易數(shù)據(jù)和對應(yīng)上一個區(qū)塊的散列值組合在一起生成散列數(shù)據(jù);
[0097] S134、獲取各個所述見證節(jié)點的差值信息,將差值最小的見證節(jié)點作為候選記賬節(jié)點,其中,所述差值信息表征所述散列數(shù)據(jù)與對應(yīng)的見證節(jié)點的憑證之間的差值;
[0098] 交易數(shù)據(jù)收集完成時,所有節(jié)點取出全局密鑰中未使用的隨機數(shù),將交易數(shù)據(jù)和上一個區(qū)塊的散列值組合在一起進行散列,生成散列數(shù)據(jù)。散列的方式為使用取出的隨機數(shù)生成Toeplitz矩陣,與組合后的數(shù)據(jù)相乘,各個節(jié)點公布散列后的數(shù)據(jù)與自己憑證的差值,差值最小的節(jié)點獲得記賬權(quán),也就是根據(jù)差值的大小設(shè)定了記賬節(jié)點應(yīng)該滿足的預(yù)設(shè)條件。
[0099] S135、對所述候選記賬節(jié)點的憑證和交易數(shù)據(jù)進行驗證,若驗證成功將所述候選記賬節(jié)點作為記賬節(jié)點。
[0100] 由于各個節(jié)點均知道其他節(jié)點的憑證,也知道交易數(shù)據(jù)、上一個區(qū)塊的散列值和本次散列所用的隨機數(shù),可以對記賬權(quán)和交易數(shù)據(jù)進行核實。
[0101] 還包括:重新生成新的全局密鑰,供下一次共識使用。例如,參考表1,表1為全局密鑰池內(nèi)密鑰用途表。
[0102] 表1
[0103]
[0104]
[0105] 無論交易數(shù)據(jù)傳播,還是共識時數(shù)據(jù)傳遞均采用量子隨機數(shù),加上共識的抽獎機制也采用量子隨機數(shù),杜絕了外部節(jié)點攻擊或參與記賬的可能。
[0106] 對應(yīng)的,在確定記賬節(jié)點時,在本發(fā)明實施例中還可以包括如下方法:
[0107] 方法一為:
[0108] 獲取所述見證節(jié)點全局密鑰中未使用的隨機數(shù);
[0109] 將所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)和上一區(qū)塊的散列值進行組合,生成組合后的數(shù)據(jù);
[0110] 通過所述見證節(jié)點的憑證生成預(yù)設(shè)矩陣,并將所述預(yù)設(shè)矩陣與所述組合后的數(shù)據(jù)相乘,得到所述散列數(shù)據(jù);
[0111] 各個所述見證節(jié)點公布所述散列數(shù)據(jù)與所述未使用的隨機數(shù)的差值,將差值最小的見證節(jié)點作為候選記賬節(jié)點。
[0112] 方法二為:
[0113] 獲取所述見證節(jié)點全局密鑰中未使用的隨機數(shù);
[0114] 將所有所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)、上一區(qū)塊的散列值和憑證進行組合,生成組合后的數(shù)據(jù);
[0115] 使用預(yù)設(shè)哈希函數(shù)對所述組合后的數(shù)據(jù)進行散列,得到所述散列數(shù)據(jù);
[0116] 各個所述見證節(jié)點公布所述散列數(shù)據(jù)與所述未使用的隨機數(shù)的差值,將差值最小的見證節(jié)點作為候選記賬節(jié)點。
[0117] 具體的,根據(jù)上述實施例中的描述,確定記賬節(jié)點的方法為上述量子彩票機制中的搖獎
算法,則該搖獎算法可以替換為以下幾種:
[0118] 所有節(jié)點將交易數(shù)據(jù)和上一個區(qū)塊的散列值組合在一起,使用自己的憑證隨機數(shù)構(gòu)建Toeplitz矩陣進行散列,然后與全局密鑰中沒有被認領(lǐng)的第n+1
片段隨機數(shù)比較。最接近的節(jié)點就是新的記賬節(jié)點。
[0119] 或者所有節(jié)點將交易數(shù)據(jù)、上一個區(qū)塊的散列值和自己的憑證隨機數(shù)組合在一起,使用普通的Hash函數(shù)進行散列,然后與全局密鑰中沒有被認領(lǐng)的第n+1片段隨機數(shù)比較。最接近的節(jié)點就是新的記賬節(jié)點。
[0120] 由于本發(fā)明的前提是讓所有節(jié)點相信隨機數(shù)是真隨機數(shù),不是由某個節(jié)點特意制作的隨機數(shù)。相當于發(fā)行彩票需要保證足夠的公正、隨機,能使所有節(jié)點都信服,而且能實現(xiàn)記賬人的真隨機性,而不會被人為操控。根據(jù)物理量子不可克隆原理和微觀世界隨機概率的特性,使用量子密鑰分發(fā)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)上述要求。因此,選擇記賬節(jié)點可以做到公平和真隨機性,完全無規(guī)律,杜絕了一些見證人節(jié)點通過尋找輪流記賬規(guī)律預(yù)知和聯(lián)合控制區(qū)塊鏈走向的可能性。隨機數(shù)來自量子密鑰分發(fā),所有節(jié)點可以相信隨機數(shù)不會被人篡改和操縱。利用量子密鑰的不可竊聽原理保證共識機制免于外部節(jié)點的攻擊,只要網(wǎng)內(nèi)大部分量子節(jié)點是可信的,區(qū)塊鏈的共識過程就是安全的。由于公平和真隨機性,攻擊該共識機制需要聯(lián)合51%的節(jié)點,而不是51%的計算
力,可以避免個別節(jié)點使用超級計算機或
量子計算機實現(xiàn)算例攻擊,提升安全性。
[0121] 在本發(fā)明實施例中還提供了一種區(qū)塊鏈共識裝置,參見圖4,包括:
[0122] 確定單元10,用于確定見證節(jié)點;
[0123] 分發(fā)單元20,用于基于量子密鑰分發(fā)網(wǎng)絡(luò),為各個所述見證節(jié)點分發(fā)全局密鑰;
[0124] 選取單元30,用于利用所述全局密鑰和交易數(shù)據(jù)選取出所述見證節(jié)點中滿足預(yù)設(shè)條件的節(jié)點作為記賬節(jié)點。
[0125] 可選地,所述分發(fā)單元20包括:
[0126] 構(gòu)建子單元,用于在所述見證節(jié)點之間構(gòu)建量子密鑰分發(fā)網(wǎng)絡(luò);
[0127] 密鑰生成子單元,用于在所述量子密鑰分發(fā)網(wǎng)絡(luò)中,隨機選取一對量子網(wǎng)絡(luò)節(jié)點,并生成一組對稱密鑰,將所述對稱密鑰作為全局密鑰;
[0128] 密鑰提取子單元,用于將所述全局密鑰分發(fā)至所有量子網(wǎng)絡(luò)節(jié)點,并指示所述見證節(jié)點從與之對應(yīng)的量子網(wǎng)絡(luò)節(jié)點中提取所述全局密鑰,實現(xiàn)所有所述見證節(jié)點獲得完全相同的全局密鑰。
[0129] 可選地,還包括:
[0130] 校驗子單元,用于當所述見證節(jié)點從與之對應(yīng)的量子網(wǎng)絡(luò)節(jié)點中提取到所述全局密鑰之后,通過發(fā)送所述見證節(jié)點的摘要校驗所述全局密鑰的準確性,若校驗成功,則指示所述見證節(jié)點記錄所述全局密鑰。
[0131] 可選地,所述選取單元30包括:
[0132] 組密鑰生成子單元,用于響應(yīng)于交易數(shù)據(jù)積累完成前,根據(jù)所述見證節(jié)點的全局密鑰生成組密鑰;
[0133] 劃分子單元,用于將所述組密鑰進行劃分得到若干塊組密鑰,將每一塊組密鑰發(fā)送至各個所述見證節(jié)點,其中,所述每一塊組密鑰僅作為一個所述見證節(jié)點的憑證;
[0134] 散列生成子單元,用于響應(yīng)于交易數(shù)據(jù)收集完成,將交易數(shù)據(jù)和對應(yīng)上一個區(qū)塊的散列值組合在一起生成散列數(shù)據(jù);
[0135] 差值確定子單元,用于獲取各個所述見證節(jié)點的差值信息,將差值最小的見證節(jié)點作為候選記賬節(jié)點;
[0136] 驗證子單元,用于對所述候選記賬節(jié)點的憑證和交易數(shù)據(jù)進行驗證,若驗證成功將所述候選記賬節(jié)點作為記賬節(jié)點。
[0137] 可選地,所述散列生成子單元包括:
[0138] 第一隨機數(shù)獲取子單元,用于獲取全局密鑰中未使用的隨機數(shù);
[0139] 第一組合子單元,用于將所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)和上一區(qū)塊的散列值進行組合,生成組合后的數(shù)據(jù);
[0140] 第一散列數(shù)據(jù)生成子單元,用于通過所述未使用的隨機數(shù)生成預(yù)設(shè)矩陣,并將所述預(yù)設(shè)矩陣與所述組合后的數(shù)據(jù)相乘,得到所述散列數(shù)據(jù);
[0141] 其中,所述差值信息表征所述散列數(shù)據(jù)與對應(yīng)的見證節(jié)點的憑證之間的差值。
[0142] 可選地,所述散列生成子單元包括:
[0143] 第二隨機數(shù)獲取子單元,用于獲取全局密鑰中未使用的隨機數(shù);
[0144] 第二組合子單元,用于將所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)和上一區(qū)塊的散列值進行組合,生成組合后的數(shù)據(jù);
[0145] 第二散列數(shù)據(jù)生成子單元,用于通過所述見證節(jié)點的憑證生成預(yù)設(shè)矩陣,并將所述預(yù)設(shè)矩陣與所述組合后的數(shù)據(jù)相乘,得到所述散列數(shù)據(jù);
[0146] 其中,所述差值信息表征所述散列數(shù)據(jù)與所述未使用的隨機數(shù)之間的差值。
[0147] 或者,所述散列生成子單元包括:
[0148] 第三隨機數(shù)獲取子單元,獲取所述見證節(jié)點全局密鑰中未使用的隨機數(shù);
[0149] 第三組合子單元,用于將所有所述見證節(jié)點對應(yīng)的交易數(shù)據(jù)、上一區(qū)塊的散列值和憑證進行組合,生成組合后的數(shù)據(jù);
[0150] 第三散列數(shù)據(jù)生成子單元,用于通過預(yù)設(shè)哈希函數(shù)對所述組合后的數(shù)據(jù)進行散列,得到所述散列數(shù)據(jù);
[0151] 其中,所述差值信息表征所述散列數(shù)據(jù)與所述未使用的隨機數(shù)之間的差值。
[0152] 相較于現(xiàn)有技術(shù),本發(fā)明提供了一種區(qū)塊鏈共識裝置,首先通過確定單元確定見證節(jié)點,然后通過分發(fā)單元在見證節(jié)點中構(gòu)建的量子密鑰分發(fā)網(wǎng)絡(luò)中使得各個見證節(jié)點獲得相同的全局密鑰,因為所有見證節(jié)點共同持有該全局密鑰,利用該全局密鑰選出滿足預(yù)設(shè)條件的節(jié)點,即通過量子彩票機制選擇得到記賬節(jié)點,因此,基于量子密鑰的使用,解決了見證節(jié)點的信任問題及如何在見證節(jié)點中公平選擇記賬節(jié)點的問題。
[0153] 本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
[0154] 對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種
修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。