本發(fā)明涉及一種基于區(qū)塊鏈聯(lián)盟鏈的快速共識記賬方法及系統(tǒng)。
背景技術(shù):
隨著區(qū)塊鏈技術(shù)發(fā)展與成熟,其應(yīng)用數(shù)量和場景急劇增加。區(qū)塊鏈系統(tǒng)根據(jù)應(yīng)用場景和設(shè)計體系的不同,一般分為公有鏈、聯(lián)盟鏈和專有鏈。其中:
公有鏈的各個節(jié)點(diǎn)可以自由加入和退出網(wǎng)絡(luò),并參加鏈上數(shù)據(jù)的讀寫,運(yùn)行時以扁平的拓?fù)浣Y(jié)構(gòu)互聯(lián)互通,網(wǎng)絡(luò)中不存在任何中心化的服務(wù)端節(jié)點(diǎn)。
聯(lián)盟鏈的各個節(jié)點(diǎn)通常有與之對應(yīng)的實體機(jī)構(gòu)組織,通過授權(quán)后才能加入與退出網(wǎng)絡(luò)。各機(jī)構(gòu)組織組成利益相關(guān)的聯(lián)盟,共同維護(hù)區(qū)塊鏈的健康運(yùn)轉(zhuǎn)。
專有鏈的各個節(jié)點(diǎn)的寫入權(quán)限收歸內(nèi)部控制,而讀取權(quán)限可視需求有選擇性地對外開放。專有鏈仍然具備區(qū)塊鏈多節(jié)點(diǎn)運(yùn)行的通用結(jié)構(gòu),適用于特定機(jī)構(gòu)的內(nèi)部數(shù)據(jù)管理與審計。
區(qū)塊鏈中的各節(jié)點(diǎn)通過共識機(jī)制連接,共識機(jī)制即為區(qū)塊鏈系統(tǒng)中實現(xiàn)不同節(jié)點(diǎn)之間建立信任、獲取權(quán)益的數(shù)學(xué)方法。
與公有鏈相對比、聯(lián)盟鏈有著自己的特點(diǎn):有一定的結(jié)點(diǎn)數(shù)量,但可能不會太多,各實體機(jī)構(gòu)組織有主動維護(hù)系統(tǒng)的意愿而各自又有著自己的利益頃向,基于以上特點(diǎn)在公有鏈上運(yùn)行的pow、pos、dpos等共識機(jī)制,不太適用于聯(lián)盟鏈,這表現(xiàn)在以下兩個方面:
(1)聯(lián)盟鏈的整體系統(tǒng)算力不能巨大到足以抵抗來自某個節(jié)點(diǎn)私自增加的巨大算力攻擊,使得pow共識不適合于聯(lián)盟鏈。
(2)聯(lián)盟鏈中利益相關(guān)的各方,有可能會形成利益聯(lián)盟侵蝕部分小機(jī)構(gòu)的利益,便利pos、dpos等共識機(jī)制不適合于聯(lián)盟鏈。
因此,當(dāng)前聯(lián)盟鏈在共識機(jī)制上普遍采用具有拜占庭容錯能力的pbft共識機(jī)制,該機(jī)制采用許可投票、少數(shù)服從多數(shù)來選舉領(lǐng)導(dǎo)者進(jìn)行記賬的共識機(jī)制,具有允許強(qiáng)監(jiān)管節(jié)點(diǎn)參與,具備權(quán)限分級能力,性能更高,耗能更低,并且允許33%的節(jié)點(diǎn)作惡。該機(jī)制的容錯能力同時帶來了復(fù)雜性,及共識時間長的問題,這使得每次交易確認(rèn)都要等待一段時間,與目前中心化交易平臺秒級確認(rèn)相比,極大的影響用戶體驗。
技術(shù)實現(xiàn)要素:
為克服上述現(xiàn)有技術(shù)的缺陷,本發(fā)明實施例提供了一種基于區(qū)塊鏈聯(lián)盟鏈的快速共識記賬方法及系統(tǒng),通過主權(quán)key的隨機(jī)傳遞,使得交易確認(rèn)權(quán)在系統(tǒng)中隨機(jī)傳遞,從而實現(xiàn)區(qū)塊鏈系統(tǒng)的快速共識。
為了達(dá)到上述目的,提供一種基于區(qū)塊鏈聯(lián)盟鏈的快速共識記賬方法,包括如下步驟:
a)初始化系統(tǒng)時,系統(tǒng)生成一個用于生成新區(qū)塊的主權(quán)key;
b)節(jié)點(diǎn)收集交易信息,等待新區(qū)塊廣播;
c)節(jié)點(diǎn)收到新區(qū)塊廣播后,將新區(qū)塊添加到本地區(qū)塊中;
d)接收到主權(quán)key的節(jié)點(diǎn)生成新區(qū)塊,并創(chuàng)建新的主權(quán)key;
e)向系統(tǒng)所有節(jié)點(diǎn)廣播新區(qū)塊;
f)傳遞新的主權(quán)key。
優(yōu)選的,收到主權(quán)key的節(jié)點(diǎn)用收到的新區(qū)塊上所帶的父哈希與新的主權(quán)key連接,求哈希后,把該值填入新生成區(qū)塊的子驗證哈希,把收到的主權(quán)key寫入本塊的主權(quán)key中,把本節(jié)點(diǎn)收集的交易信息寫入該新生成區(qū)塊的區(qū)塊主體。
優(yōu)選的,步驟a)中,對系統(tǒng)所有節(jié)點(diǎn)進(jìn)行一次pbft同步,并隨機(jī)指定一節(jié)點(diǎn)產(chǎn)生新區(qū)塊并生成主權(quán)key。
優(yōu)選的,步驟c)中,節(jié)點(diǎn)收到新區(qū)塊廣播時,驗證新區(qū)塊的合法性,把合法區(qū)塊添加到本地區(qū)塊鏈中,并刪除交易收集池中已包含在新區(qū)塊中的條目;若該新區(qū)塊不合法,則把廣播該新區(qū)塊的結(jié)點(diǎn)從連接池中刪除。
優(yōu)選的,若節(jié)點(diǎn)超時未接收到生成新區(qū)塊的廣播,則系統(tǒng)強(qiáng)制實施步驟a)。
優(yōu)選的,主權(quán)key的傳遞方法為在所有節(jié)點(diǎn)中隨機(jī)選擇一個節(jié)點(diǎn)進(jìn)行傳遞。
優(yōu)選的,新的主權(quán)key的創(chuàng)建方式為由收到主權(quán)key的節(jié)點(diǎn)隨機(jī)生成。
優(yōu)選的,主權(quán)key為一串十六進(jìn)制字符串。
同時,本發(fā)明提供一種在基于區(qū)塊鏈聯(lián)盟鏈的快速共識記賬系統(tǒng),包括若干節(jié)點(diǎn),節(jié)點(diǎn)中初始設(shè)置有一主節(jié)點(diǎn),主節(jié)點(diǎn)用于生成新區(qū)塊,區(qū)塊包括用于存儲交易信息的區(qū)塊主體以及用于選舉新主節(jié)點(diǎn)的區(qū)塊頭,區(qū)塊頭包括父哈希和主權(quán)key。
優(yōu)選的,區(qū)塊頭還包括子驗證哈希,收到主權(quán)key的節(jié)點(diǎn)隨機(jī)生成新主權(quán)key,子驗證哈希由父哈希與新主權(quán)key連接求哈希值生成。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)為:
當(dāng)需要在誠實的區(qū)塊鏈節(jié)點(diǎn)上傳送一段數(shù)據(jù)時,本發(fā)明通過隨機(jī)選擇系統(tǒng)某個節(jié)點(diǎn)把主權(quán)key傳遞出去的方法,實現(xiàn)任一時間,系統(tǒng)中只有某一無法確定的節(jié)點(diǎn)具備生成新區(qū)塊的能力和權(quán)限,記賬權(quán)在所有誠實節(jié)點(diǎn)間隨機(jī)分配,確保交易信息無法被篡改的同時,系統(tǒng)快速達(dá)到共識,交易確認(rèn)速度從原來的分鐘級縮短到秒級。
附圖說明
圖1是本發(fā)明的區(qū)塊的結(jié)構(gòu)示意圖;
圖2是本發(fā)明涉及的快速共識記賬方法的一種實施例的示意圖。
具體實施方式
在本發(fā)明描述中,術(shù)語“上”、“下”、“前”及“后”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明而不是要求本發(fā)明必須以特定的方位構(gòu)造和操作,因此不能理解為對本發(fā)明的限制。
下面結(jié)合附圖對本發(fā)明的具體實施方式作進(jìn)一步說明。
參見圖1,本發(fā)明提出了一種在基于區(qū)塊鏈聯(lián)盟鏈的快速共識記賬系統(tǒng),包括若干節(jié)點(diǎn),節(jié)點(diǎn)中初始設(shè)置有一主節(jié)點(diǎn),主節(jié)點(diǎn)用于生成新區(qū)塊,區(qū)塊包括用于存儲交易信息的區(qū)塊主體1以及用于選舉新主節(jié)點(diǎn)的區(qū)塊頭2,區(qū)塊頭2包括父哈希和主權(quán)key,作為優(yōu)選實施例,區(qū)塊頭2還包括子驗證哈希,收到主權(quán)key的節(jié)點(diǎn)隨機(jī)生成新主權(quán)key,子驗證哈希由父哈希與新主權(quán)key連接求哈希值生成。
本發(fā)明的系統(tǒng)中僅有收到主權(quán)key的節(jié)點(diǎn)具備生成新區(qū)塊的權(quán)限,本發(fā)明在區(qū)塊頭2中加入了一串“子驗證哈?!?,該值由本區(qū)塊的“父哈?!迸c“主權(quán)key”連接后求哈希得到,而“主權(quán)key”是在每次產(chǎn)生新區(qū)塊時,由本節(jié)點(diǎn)隨機(jī)選擇的一串十六進(jìn)制字符串,默認(rèn)16位,以目前運(yùn)算能力,雖然每次生成新區(qū)塊時,節(jié)點(diǎn)是已經(jīng)收到了上一區(qū)塊,并從中得知了父區(qū)塊的父哈希值,但在沒有收到主權(quán)key時,無法計算出主權(quán)key,使得新生成的區(qū)塊滿足條件,從而實現(xiàn)了區(qū)塊生成權(quán)在系統(tǒng)中的隨機(jī)分配。
本發(fā)明涉及的一種基于區(qū)塊鏈聯(lián)盟鏈的快速共識記賬方法,包括如下步驟:初始化系統(tǒng)時,系統(tǒng)生成一個用于生成新區(qū)塊的主權(quán)key;節(jié)點(diǎn)收集交易信息,等待新區(qū)塊廣播;節(jié)點(diǎn)收到新區(qū)塊廣播后,將新區(qū)塊添加到本地區(qū)塊中;接收到主權(quán)key的節(jié)點(diǎn)生成新區(qū)塊,并創(chuàng)建新的主權(quán)key;向系統(tǒng)所有節(jié)點(diǎn)廣播新區(qū)塊;傳遞新的主權(quán)key。
作為優(yōu)選方案,收到主權(quán)key的節(jié)點(diǎn)用收到的新區(qū)塊上所帶的父哈希與新的主權(quán)key連接,求哈希后,把該值填入新生成區(qū)塊的子驗證哈希,把收到的主權(quán)key寫入本塊的主權(quán)key中,把本節(jié)點(diǎn)收集的交易信息寫入該新生成區(qū)塊的區(qū)塊主體;步驟a)中,對系統(tǒng)所有節(jié)點(diǎn)進(jìn)行一次pbft同步,并隨機(jī)指定一節(jié)點(diǎn)產(chǎn)生新區(qū)塊并生成主權(quán)key;步驟c)中,節(jié)點(diǎn)收到新區(qū)塊廣播時,驗證新區(qū)塊的合法性,把合法區(qū)塊添加到本地區(qū)塊鏈中,并刪除交易收集池中已包含在新區(qū)塊中的條目;若該新區(qū)塊不合法,則把廣播該新區(qū)塊的結(jié)點(diǎn)從連接池中刪除;若節(jié)點(diǎn)超時未接收到生成新區(qū)塊的廣播,則系統(tǒng)強(qiáng)制實施步驟a);主權(quán)key的傳遞方法為在所有節(jié)點(diǎn)中隨機(jī)選擇一個節(jié)點(diǎn)進(jìn)行傳遞;新的主權(quán)key的創(chuàng)建方式為由收到主權(quán)key的節(jié)點(diǎn)隨機(jī)生成。
參照圖2,作為本發(fā)明快速共識記賬方法的優(yōu)選實施例,其具體步驟如下:
s101,初始化時對系統(tǒng)所有節(jié)點(diǎn)進(jìn)行一次pbft同步,保證所有節(jié)點(diǎn)達(dá)成共識,系統(tǒng)隨機(jī)指定一節(jié)點(diǎn)為主節(jié)點(diǎn),主節(jié)點(diǎn)產(chǎn)生區(qū)塊并生成主權(quán)key用于隨機(jī)傳遞;
s102,節(jié)點(diǎn)收集交易信息,同時等待接收新區(qū)塊的同步信息,以及等待主權(quán)key的傳遞;
s103,收到新區(qū)塊廣播時,驗證新區(qū)塊的合法性,把合法區(qū)塊添加到本地區(qū)塊鏈中,刪除交易收集池中已包含在新區(qū)塊中的條目,回到s102狀態(tài)繼續(xù)等待。若收到新區(qū)塊,同時還收到了主權(quán)key,則隨機(jī)生成一個新的主權(quán)key,用剛收到的新區(qū)塊上所帶的父哈希與此新的主權(quán)key連接,求哈希后,把該值填入新生成區(qū)塊的子驗證哈希,把前邊收到的主權(quán)key寫入本塊的主權(quán)key,把本節(jié)點(diǎn)收集的交易信息寫入該新生成區(qū)塊的區(qū)塊主體。到此,生成新區(qū)塊完成;
s104,向系統(tǒng)所有節(jié)點(diǎn)進(jìn)行廣播;
s105,從所有節(jié)點(diǎn)中隨機(jī)選擇一個把new_key傳遞出去。
s106,本節(jié)點(diǎn)回去s102的收集及等待狀態(tài)。
s107,以上s103過程中,如果收到了不合法的區(qū)塊生成廣播,則把廣播本區(qū)塊的結(jié)點(diǎn)從連接池中刪;如果超時未收到生成新區(qū)塊的廣播,則發(fā)起pbft共識,使系統(tǒng)回復(fù)到狀態(tài)s101。本步確保了系統(tǒng)中的不誠實節(jié)點(diǎn)將會被排除在外,以及本該生成新區(qū)塊的節(jié)點(diǎn)臨時故障掉線或停機(jī)時,其他節(jié)點(diǎn)能重新通過一次共識后,繼續(xù)正常運(yùn)行下去。
綜上所述,本發(fā)明提出了一種基于區(qū)塊鏈聯(lián)盟鏈的快速共識記賬方法及系統(tǒng),通過在所有的區(qū)塊鏈節(jié)點(diǎn)上傳遞用于生成下一個區(qū)塊的主權(quán)key,在系統(tǒng)中實現(xiàn)新區(qū)塊的生成及共識,從而能有效解決現(xiàn)有現(xiàn)有共識機(jī)制共識時間過長的問題,該方法能確保系統(tǒng)中單個節(jié)點(diǎn)無法篡改系統(tǒng)共同維護(hù)的區(qū)塊鏈,使得交易快速確認(rèn)的同時達(dá)到了賬本的不可篡改性。
根據(jù)上述說明書的揭示和教導(dǎo),本發(fā)明所屬領(lǐng)域的技術(shù)人員還可以對上述實施方式進(jìn)行變更和修改。因此,本發(fā)明并不局限于上面揭示和描述的具體實施方式,對本發(fā)明的一些修改和變更也應(yīng)當(dāng)落入本發(fā)明的權(quán)利要求的保護(hù)范圍內(nèi)。此外,盡管本說明書中使用了一些特定的術(shù)語,但這些術(shù)語只是為了方便說明,并不對本發(fā)明構(gòu)成任何限制。