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