本發(fā)明涉及一種區(qū)塊鏈技術(shù),是一種用一維隨機數(shù)共識確定推舉人方法。
背景技術(shù):
區(qū)塊鏈技術(shù)是當前的熱門技術(shù),其可以分成三類:公有鏈、聯(lián)盟鏈和私有鏈。公有鏈無中心服務(wù)器,參與公有鏈的節(jié)點可以按照系統(tǒng)的規(guī)則自由接入網(wǎng)絡(luò),節(jié)點之間基于共識機制開展工作,比特幣屬于典型的公有鏈。聯(lián)盟鏈是由預(yù)先設(shè)定參與成員的節(jié)點組成,節(jié)點網(wǎng)絡(luò)接入和退出在聯(lián)盟內(nèi)進行。私有鏈一般建立在某個企業(yè)內(nèi)部,系統(tǒng)的運作規(guī)則根據(jù)企業(yè)要求進行設(shè)定,進入私有鏈的成員仍然是由中心控制和制定的。
以上所述的三種區(qū)塊鏈的類型中,只有公有鏈真正解決了信任問題,聯(lián)盟鏈和私有鏈還是建立在一定的信任機制的基礎(chǔ)之上進行的。
但是,由于公有鏈中“挖礦”需求的算力十分龐大,導致其性能在這三種類型的區(qū)塊鏈中是最低的。如,比特幣推舉記賬者的信任機制采用工作量證明方法(即采用“挖礦”的方式),誰率先完成滿足一定條件的計算,誰就是記賬者。
目前比特幣的“挖礦”推舉記賬者的信任機制,是唯一滿足隨機、公開、共識的要求。但是比特幣確定記賬者需要進行大量耗時計算,是一種效率不高的確定記賬者的方法,不適應(yīng)聯(lián)盟鏈的要求。而目前的聯(lián)盟鏈推舉記賬者的方法并不隨機,因而帶有中心化的特征。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種隨機、公證、共識的記賬者確定方法。
為解決上述技術(shù)問題,本發(fā)明提供一種區(qū)塊鏈一維隨機數(shù)共識推舉方法;包括:聯(lián)盟內(nèi)所有特定節(jié)點分別產(chǎn)生隨機數(shù)xi;所有特定節(jié)點之間互相同步隨機數(shù)xi;每個特定節(jié)點分別計算全部隨機數(shù)的平均值m;每個特定節(jié)點中,分別通過比較平均值m與隨機數(shù)xi之間的距離,取距離最小的持有隨機數(shù)xi的節(jié)點pi作為候選記賬者;所有特定節(jié)點之間相互同步候選記賬者及參與平均值計算的節(jié)點數(shù)量值,并推舉出記賬者。
作為本發(fā)明所述的區(qū)塊鏈一維隨機數(shù)共識推舉方法的改進:所述特定節(jié)點為在隨機數(shù)產(chǎn)生時間ti,聯(lián)盟內(nèi)n個節(jié)點中,實際在線的z個節(jié)點。
作為本發(fā)明所述的區(qū)塊鏈一維隨機數(shù)共識推舉方法的進一步改進:所述平均值m與隨機數(shù)xi之間的距離為平均值m和隨機數(shù)xi之間差值的絕對值。
作為本發(fā)明所述的區(qū)塊鏈一維隨機數(shù)共識推舉方法的進一步改進:互相同步隨機數(shù)步驟:所有特定節(jié)點之間相互推送數(shù)據(jù)塊;所述數(shù)據(jù)塊包括但不限于節(jié)點標識pi、隨機數(shù)xi和隨機數(shù)xi產(chǎn)生的時間ti。
作為本發(fā)明所述的區(qū)塊鏈一維隨機數(shù)共識推舉方法的進一步改進:獲得隨機數(shù)平均值步驟:首先,各特定節(jié)點分別驗證所述數(shù)據(jù)塊是否合法;若不合法,則重復(fù)特定節(jié)點分別產(chǎn)生隨機數(shù)步驟;若合法,則各特定節(jié)點分別計算tk到tk+1時間內(nèi)產(chǎn)生的所有合法隨機數(shù)x的平均值m。
作為本發(fā)明所述的區(qū)塊鏈一維隨機數(shù)共識推舉方法的進一步改進:所述驗證步驟包括:隨機數(shù)判定:隨機數(shù)xi是否符合xi≤b,所述b的選值為2e,所述e為適量整數(shù);時間判定:時間ti是否在tk到tk+1的時間范圍內(nèi),所述tk為某一次推舉的開始時間,所述tk+1為下一次推舉的開始時間;節(jié)點標識判定:z個節(jié)點中是否包括節(jié)點標識pi所對應(yīng)的節(jié)點pi;若隨機數(shù)判定、時間判定以及節(jié)點標識判定均合法,則判定數(shù)據(jù)塊合法;若隨機數(shù)判定、時間判定以及節(jié)點標識判定中任意一項不合法,則判定數(shù)據(jù)塊不合法。
作為本發(fā)明所述的區(qū)塊鏈一維隨機數(shù)共識推舉方法的進一步改進:所述平均值計算方法:
作為本發(fā)明所述的區(qū)塊鏈一維隨機數(shù)共識推舉方法的進一步改進:所述推舉出新的記賬者的過程如下:首先,每個特定節(jié)點分別計算記賬者所對應(yīng)的節(jié)點是否是唯一,若該節(jié)點不是唯一,則返回聯(lián)盟內(nèi)所有特定節(jié)點分別產(chǎn)生隨機數(shù)步驟;若該節(jié)點是唯一,則每個特定節(jié)點分別核對任意節(jié)點中參與平均值計算的節(jié)點數(shù)量值是否一致;若不一致,則返回聯(lián)盟內(nèi)所有特定節(jié)點分別產(chǎn)生隨機數(shù)步驟,若一致,則完成推舉。
本發(fā)明的基本原理是聯(lián)盟的每一個成員(聯(lián)盟各成員的節(jié)點服務(wù)器或終端,也稱節(jié)點),隨機產(chǎn)出一個隨機數(shù),每個成員將收到的其它所有成員的隨機數(shù)和自己的隨機數(shù)累加后計算平均值,離平均值最近的隨機數(shù)的成員,就是被隨機公開推舉的記賬者。如果有多個成員的隨機數(shù)離平均值同樣最近,它們之間按此方式再進行一次推舉。通過遞歸,最終推舉一位記賬者。這個方法效率高,隨機、公正、公平,適合聯(lián)盟鏈節(jié)點推舉記賬者的作用,并且對于聯(lián)盟鏈的去中心化具有重要意義。
本發(fā)明的主要優(yōu)勢在于:
1、隨機性:本專利中各節(jié)點中產(chǎn)生的數(shù)據(jù)m的整個計算過程是隨機的,所以記賬者也是隨機選擇出的,這種隨機性實際上與比特幣選出記賬者是同等的。
2、公平性:記賬者是隨機選出,每一個節(jié)點被選為記賬者的概率相等,體現(xiàn)了公平性。一個節(jié)點對一筆業(yè)務(wù)的記賬有作弊行為,除非該節(jié)點本身是記賬者才有可能不被發(fā)現(xiàn)(實際上我們還會重復(fù)算法,選出復(fù)驗者,此外其它節(jié)點也可能對記賬結(jié)果進行檢查)。
3、共識性:這個算法是所有在線節(jié)點參與的,所有節(jié)點按照統(tǒng)一的規(guī)范(算法)進行計算,共同推舉了記賬者。
4、安全性:任何一個節(jié)點作弊,不影響推舉的隨機性和公平性,數(shù)人甚至于大多數(shù)人作弊,只要還有一個節(jié)點采用的是隨機數(shù),算法系統(tǒng)仍可以做出隨機、公平的選擇。
附圖說明
下面結(jié)合附圖對本發(fā)明的具體實施方式作進一步詳細說明。
圖1是本發(fā)明的流程示意圖。
具體實施方式
實施例1、圖1給出了一種區(qū)塊鏈一維隨機數(shù)共識推舉方法bcmor(ablockchainconsensusmethodbyone-dimensionalrandomnumber,orblockchainchoosemethodbyone-dimensionalrandomnumber),該方法適于聯(lián)盟鏈的記賬者推舉。
其具體步驟如下:
步驟一、聯(lián)盟內(nèi)任一節(jié)點p產(chǎn)生隨機數(shù)x:
在一次推舉的時間△(△=|tk-tk+1|,tk為某一次推舉的開始時間,tk+1為下一次推舉的開始時間)范圍內(nèi),聯(lián)盟內(nèi)的n個節(jié)點p中,有z個節(jié)點p實際在線,該z個節(jié)點p分別產(chǎn)生對應(yīng)的隨機數(shù)x;
即,在時間ti(時間ti處于tk到tk+1之間),實際在線的節(jié)點為p1、p2、p3、…、pi、…、pz;則,對應(yīng)產(chǎn)生的隨機數(shù)為x1、x2、x3、…、xi、…、xz;即pi持有xi。
步驟二、節(jié)點p向其他節(jié)點推送數(shù)據(jù)塊,并接收其他節(jié)點p推送來的同類數(shù)據(jù)塊:
在步驟一中,產(chǎn)生隨機數(shù)x的所有節(jié)點p相互進行數(shù)據(jù)塊推送,如節(jié)點pi將其數(shù)據(jù)塊推送到其他z–1個節(jié)點p中,而其他z–1個節(jié)點p又反向推送同類數(shù)據(jù)塊到該節(jié)點pi中,即此時,在任意節(jié)點pi中,均同步z個節(jié)點p的所有數(shù)據(jù)塊。
以上所述的數(shù)據(jù)塊包括但不限于節(jié)點標識pi、隨機數(shù)xi和隨機數(shù)xi產(chǎn)生的時間ti。
步驟三、每個節(jié)點p分別計算全部z個節(jié)點p所產(chǎn)生隨機數(shù)x的平均值m:
在步驟二中,通過節(jié)點p之間的相互數(shù)據(jù)塊推送,使得每個節(jié)點p均持有其他z–1個節(jié)點p的相關(guān)數(shù)據(jù)信息;
通過對相關(guān)數(shù)據(jù)進行驗證,確定本次計算是否合法,該驗證的過程如下:
隨機數(shù)驗證:隨機數(shù)xi是否符合xi≤b,b可選值為2e,e為適量整數(shù);
時間驗證:時間ti是否在t1到t2的時間范圍內(nèi);
節(jié)點標識驗證:節(jié)點pi是否是節(jié)點p1、p2、p3、…、pi、…、pz中的一個;
一旦隨機數(shù)驗證、時間驗證以及節(jié)點標識驗證均符合以上所述的規(guī)則,則確認驗證通過;一旦隨機數(shù)驗證、時間驗證以及節(jié)點標識驗證中的任意一項不均符合以上所述的規(guī)則,則驗證失敗,需返回步驟一,重新執(zhí)行。
驗證通過后,則對在時間ti(時間ti處于tk到tk+1之間)產(chǎn)生的所有隨機數(shù)x通過如下公式計算:
所述xi分別為對應(yīng)的節(jié)點pi產(chǎn)生的隨機數(shù),其中,參與計算的節(jié)點數(shù)量值在此處為z。
步驟四、通過比較平均值m與隨機數(shù)xi之間的距離,取距離最小的持有隨機數(shù)xi的節(jié)點pi作為候選記賬者;
比較各xi與m距離(差的絕對值),獲取距離最小的節(jié)點p作為候選記賬節(jié)點。
在以上計算過程中,如果用m–xi取模b或者xi–m取模b,不影響算法的正確性,記賬者會發(fā)生變化。
步驟五、各節(jié)點p分別向其他所有z–1個節(jié)點p報告計算出的候選記賬者pi、參與計算的節(jié)點數(shù)量值,并接收其他節(jié)點的報告。
此時,每個節(jié)點p均與聯(lián)盟內(nèi)的其他z–1個節(jié)點p互相進行報告,每個節(jié)點p均獲得其他z–1個節(jié)點p計算出的記賬者p,以及參與計算的節(jié)點數(shù)量值。
此時,任意節(jié)點p均對所有節(jié)點p所計算出的新的候選記賬者pi進行核對,一旦發(fā)現(xiàn)有不相同的候選記賬者pi,則重新進行步驟一;一旦所有節(jié)點p均發(fā)現(xiàn)候選記賬者pi是唯一的,則進一步確認所有節(jié)點p在進行隨機數(shù)平均值的計算時刻,參與計算的節(jié)點數(shù)量值是否一致,如,本次計算中,z–1個節(jié)點p報告的參與計算的節(jié)點數(shù)量值相同,而唯有一個節(jié)點p(此處,只要出現(xiàn)任意一個節(jié)點p出現(xiàn)非z的參與計算的節(jié)點數(shù)量值,均要進行則返回步驟一的步驟)報告的參與計算的節(jié)點數(shù)量值為非z的數(shù)值,則返回步驟一;如,此時,任意節(jié)點p均確認所有參與計算的節(jié)點p采用的該時刻參與計算的節(jié)點數(shù)量值均為z,則確認步驟四所獲得的相關(guān)節(jié)點pi為新的記賬者。
最后,還需要注意的是,以上列舉的僅是本發(fā)明的一個具體實施例。顯然,本發(fā)明不限于以上實施例,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直接導出或聯(lián)想到的所有變形,均應(yīng)認為是本發(fā)明的保護范圍。