本發(fā)明屬于區(qū)塊鏈技術(shù)領(lǐng)域,具體涉及一種基于權(quán)重的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)通信方法。
背景技術(shù):
在區(qū)塊鏈網(wǎng)絡(luò)中,作為保存數(shù)據(jù)副本的服務(wù)器節(jié)點(diǎn)可擔(dān)任不同角色,如發(fā)出、驗(yàn)證、接收和通知等;網(wǎng)絡(luò)系統(tǒng)中任意兩個(gè)節(jié)點(diǎn)通過(guò)相互發(fā)送、接收、處理、返回?cái)?shù)據(jù)的模式形態(tài)以實(shí)現(xiàn)節(jié)點(diǎn)通信。
在常規(guī)技術(shù)方案下,區(qū)塊鏈交易啟動(dòng)后,發(fā)布和記錄交易時(shí),會(huì)采用全網(wǎng)廣播的模式進(jìn)行賬本復(fù)制,然后通過(guò)共識(shí)機(jī)制達(dá)成共識(shí)后予以交易確認(rèn),隨后根據(jù)時(shí)間指紋信息,線性的追加在交易記錄中。此種情況下,在全網(wǎng)廣播、達(dá)成共識(shí)的過(guò)程,將會(huì)產(chǎn)生o(n2)的時(shí)間復(fù)雜度,尤其是隨著區(qū)塊鏈規(guī)模的變大后,多種不同類型的硬件設(shè)備對(duì)數(shù)據(jù)的處理能力和速度會(huì)逐漸出現(xiàn)較大差異化,如此復(fù)雜度將不堪重負(fù),嚴(yán)重降低交易的實(shí)時(shí)性(即節(jié)點(diǎn)或節(jié)點(diǎn)分組對(duì)數(shù)據(jù)請(qǐng)求和響應(yīng)的時(shí)間效率)。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述,本發(fā)明提供了一種基于權(quán)重的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)通信方法,能夠解決全網(wǎng)廣播、驗(yàn)證和確認(rèn)實(shí)時(shí)性差的問(wèn)題,利用節(jié)點(diǎn)和節(jié)點(diǎn)分組的信息優(yōu)化通信過(guò)程。
一種基于權(quán)重的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)通信方法,包括如下步驟:
(1)根據(jù)邏輯以及物理關(guān)系對(duì)區(qū)塊鏈網(wǎng)絡(luò)中的所有節(jié)點(diǎn)進(jìn)行分類,得到n個(gè)節(jié)點(diǎn)分組,并為每個(gè)節(jié)點(diǎn)分組分配一個(gè)全局唯一的分組指紋gid,n為大于1的自然數(shù);
(2)對(duì)于任一節(jié)點(diǎn)分組,通過(guò)相應(yīng)算法從該分組內(nèi)選取出一個(gè)節(jié)點(diǎn)作為中轉(zhuǎn)節(jié)點(diǎn),并設(shè)定最小共識(shí)達(dá)成比例t且50%<t≤100%;
(3)當(dāng)網(wǎng)絡(luò)中的任一節(jié)點(diǎn)a進(jìn)行交易通信時(shí),其通過(guò)所在分組內(nèi)的中轉(zhuǎn)節(jié)點(diǎn)a1主動(dòng)發(fā)起交易,中轉(zhuǎn)節(jié)點(diǎn)a1先將交易數(shù)據(jù)在組內(nèi)進(jìn)行廣播,然后再?gòu)V播給其他分組內(nèi)的中轉(zhuǎn)節(jié)點(diǎn);
(4)對(duì)于其他任一分組內(nèi)的中轉(zhuǎn)節(jié)點(diǎn)b1,其收到交易數(shù)據(jù)后根據(jù)最小共識(shí)達(dá)成比例t隨機(jī)從組內(nèi)選取部分節(jié)點(diǎn)進(jìn)行數(shù)據(jù)拷貝以及數(shù)據(jù)驗(yàn)證過(guò)程,這些節(jié)點(diǎn)若驗(yàn)證成功后則向中轉(zhuǎn)節(jié)點(diǎn)b1進(jìn)行反饋;若中轉(zhuǎn)節(jié)點(diǎn)b1收到組內(nèi)超過(guò)tgb個(gè)節(jié)點(diǎn)返回的共識(shí)響應(yīng),則將本組的分組指紋gid以及共識(shí)達(dá)成結(jié)果發(fā)送給中轉(zhuǎn)節(jié)點(diǎn)a1,然后再對(duì)組內(nèi)未參與共識(shí)的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)拷貝;gb為中轉(zhuǎn)節(jié)點(diǎn)b1所在分組內(nèi)的節(jié)點(diǎn)數(shù)量;
(5)若中轉(zhuǎn)節(jié)點(diǎn)a1收到包括其自身在內(nèi)超過(guò)tn個(gè)中轉(zhuǎn)節(jié)點(diǎn)返回的共識(shí)響應(yīng),則使節(jié)點(diǎn)a完成交易處理,即交易完成。
進(jìn)一步地,所述節(jié)點(diǎn)分組內(nèi)的各個(gè)節(jié)點(diǎn)無(wú)主從和狀態(tài)區(qū)分,可直接相互通信;節(jié)點(diǎn)分組之間則通過(guò)中轉(zhuǎn)節(jié)點(diǎn)進(jìn)行通信。
進(jìn)一步地,所述中轉(zhuǎn)節(jié)點(diǎn)a1在廣播交易數(shù)據(jù)的同時(shí),還將最小共識(shí)達(dá)成比例t發(fā)送給其他分組內(nèi)的中轉(zhuǎn)節(jié)點(diǎn)。
進(jìn)一步地,所述中轉(zhuǎn)節(jié)點(diǎn)a1將交易數(shù)據(jù)在組內(nèi)進(jìn)行廣播,使組內(nèi)其他所有節(jié)點(diǎn)進(jìn)行數(shù)據(jù)拷貝以及數(shù)據(jù)驗(yàn)證過(guò)程,這些節(jié)點(diǎn)若驗(yàn)證成功后則向中轉(zhuǎn)節(jié)點(diǎn)a1進(jìn)行反饋,若中轉(zhuǎn)節(jié)點(diǎn)a1收到組內(nèi)超過(guò)tga個(gè)節(jié)點(diǎn)返回的共識(shí)響應(yīng),則中轉(zhuǎn)節(jié)點(diǎn)a1所在分組達(dá)成共識(shí);ga為中轉(zhuǎn)節(jié)點(diǎn)a1所在分組內(nèi)的節(jié)點(diǎn)數(shù)量。
進(jìn)一步地,如果節(jié)點(diǎn)在未完成數(shù)據(jù)拷貝時(shí)發(fā)起數(shù)據(jù)查詢操作且命中其本身,此時(shí)引入一個(gè)重定向機(jī)制,將該節(jié)點(diǎn)指向數(shù)據(jù)拷貝的源節(jié)點(diǎn),防止節(jié)點(diǎn)查詢失敗或造成不一致情況;如出現(xiàn)異常造成不一致,組內(nèi)將根據(jù)多數(shù)派協(xié)定修正為同一結(jié)果。
本發(fā)明利用實(shí)際區(qū)塊鏈中節(jié)點(diǎn)的網(wǎng)絡(luò)邏輯和物理拓?fù)浣Y(jié)構(gòu),構(gòu)建了一種新的區(qū)塊鏈節(jié)點(diǎn)通信方法,該方法的核心思想是利用節(jié)點(diǎn)分組信息,選取有效節(jié)點(diǎn)進(jìn)行通信,將通信過(guò)程的全網(wǎng)廣播優(yōu)化成全網(wǎng)局部廣播,節(jié)點(diǎn)分組內(nèi)局部廣播的模式,同時(shí)根據(jù)分組和節(jié)點(diǎn)有選擇的選取節(jié)點(diǎn),用于驗(yàn)證和確認(rèn),加速通信過(guò)程。
本發(fā)明由于非一次性全局廣播同步,全局一致性需要一個(gè)異步同步過(guò)程,故在同步時(shí)間內(nèi),查詢記錄信息可能需要增加一個(gè)二次查詢過(guò)程,但是在技術(shù)方案整體上,二次查詢過(guò)程不會(huì)對(duì)整體方案帶來(lái)太多效率損失。因此,本發(fā)明方法利用網(wǎng)絡(luò)中節(jié)點(diǎn)位置生成權(quán)重,能夠提高交易時(shí)通信的實(shí)時(shí)性,增強(qiáng)區(qū)塊鏈交易技術(shù)平臺(tái)的處理能力。
附圖說(shuō)明
圖1為區(qū)塊鏈網(wǎng)絡(luò)中的節(jié)點(diǎn)分組示意圖。
圖2為節(jié)點(diǎn)分組內(nèi)的節(jié)點(diǎn)連接結(jié)構(gòu)示意圖。
圖3為區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)的交易通信流程示意圖。
具體實(shí)施方式
為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實(shí)施方式對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
如圖1所示,整個(gè)區(qū)塊鏈網(wǎng)絡(luò)包含節(jié)點(diǎn)分組an~zn,節(jié)點(diǎn)分組an通過(guò)網(wǎng)絡(luò)與節(jié)點(diǎn)分組bn、cn、dn……xn連接,并能相互通信。如圖2所示,節(jié)點(diǎn)分組內(nèi)各個(gè)節(jié)點(diǎn)構(gòu)成對(duì)等網(wǎng)絡(luò)結(jié)構(gòu),無(wú)主從和狀態(tài)區(qū)分,本實(shí)施方式中節(jié)點(diǎn)可被視作虛擬機(jī)實(shí)例。
根據(jù)原有通信方式,如果從節(jié)點(diǎn)分組an中選取節(jié)點(diǎn)a1主動(dòng)發(fā)起交易,則通信方式是由節(jié)點(diǎn)a1向組內(nèi)廣播,然后分組an再分別廣播給bn、cn、dn……xn,各個(gè)分組內(nèi)的節(jié)點(diǎn)接收到廣播后,各自對(duì)數(shù)據(jù)進(jìn)行克隆副本后進(jìn)行驗(yàn)證和確認(rèn)處理,節(jié)點(diǎn)a1則等待自己分組內(nèi)所有節(jié)點(diǎn)和所有其他的節(jié)點(diǎn)分組內(nèi)節(jié)點(diǎn)完成驗(yàn)證和確認(rèn)處理后,接收到響應(yīng),完成自己的交易處理。
在本發(fā)明基于權(quán)重的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)通信方法中,我們引入最小共識(shí)達(dá)成比例t(50%<t≤100%)。易知,在實(shí)際共識(shí)率r>t時(shí),繼續(xù)等待節(jié)點(diǎn)返回共識(shí)響應(yīng)對(duì)改變結(jié)果是無(wú)意義的,故我們可以在不影響結(jié)果的情況下,放棄部分過(guò)程以達(dá)到優(yōu)化的目的。
為了遍于區(qū)分分組信息,我們給每個(gè)節(jié)點(diǎn)分組定義全局唯一分組指紋gid,分組內(nèi)節(jié)點(diǎn)數(shù)量gc。
如圖3所示,當(dāng)進(jìn)行交易通信時(shí),an中選取節(jié)點(diǎn)a1發(fā)起交易,在發(fā)送交易數(shù)據(jù)的同時(shí),發(fā)送最小共識(shí)達(dá)成比例t,并對(duì)bn、cn、dn……xn等節(jié)點(diǎn)分組進(jìn)行全局廣播,每個(gè)節(jié)點(diǎn)分組與a1采用同樣的算法選出b1、c1、d1……x1節(jié)點(diǎn),該節(jié)點(diǎn)根據(jù)gc數(shù)量,參考t的比例,隨機(jī)選取該分組的部分節(jié)點(diǎn)進(jìn)行副本克隆和驗(yàn)證和確認(rèn)過(guò)程,完成后將結(jié)果返回給a1,再對(duì)未參與達(dá)成共識(shí)的節(jié)點(diǎn)進(jìn)行復(fù)制數(shù)據(jù)副本。a1在接受結(jié)果后,根據(jù)gc總量和匯報(bào)節(jié)點(diǎn)總量,當(dāng)匯報(bào)節(jié)點(diǎn)總量占比大于t比例時(shí),結(jié)合超時(shí)配置,可以迅速拿到結(jié)果。
如果在未完成數(shù)據(jù)副本復(fù)制時(shí),存在節(jié)點(diǎn)發(fā)起查詢操作命中本身,此時(shí)引入一個(gè)重定向機(jī)制,將選取到的本身節(jié)點(diǎn)指向復(fù)制副本的源節(jié)點(diǎn),防止節(jié)點(diǎn)查詢失敗或者造成不一致,如出現(xiàn)異常造成不一致,組內(nèi)將根據(jù)多數(shù)派,協(xié)定修正為同一結(jié)果。
上述對(duì)實(shí)施例的描述是為便于本技術(shù)領(lǐng)域的普通技術(shù)人員能理解和應(yīng)用本發(fā)明。熟悉本領(lǐng)域技術(shù)的人員顯然可以容易地對(duì)上述實(shí)施例做出各種修改,并把在此說(shuō)明的一般原理應(yīng)用到其他實(shí)施例中而不必經(jīng)過(guò)創(chuàng)造性的勞動(dòng)。因此,本發(fā)明不限于上述實(shí)施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的揭示,對(duì)于本發(fā)明做出的改進(jìn)和修改都應(yīng)該在本發(fā)明的保護(hù)范圍之內(nèi)。