本發(fā)明涉及區(qū)塊鏈跨鏈通信技術(shù),尤其涉及一種鏈路由及實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng)。
背景技術(shù):
狹義上的區(qū)塊鏈?zhǔn)且环N按照時(shí)間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),并以密碼學(xué)方式保證的不可篡改和不可偽造的分布式賬本。廣義上的區(qū)塊鏈?zhǔn)侵咐脡K鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來(lái)驗(yàn)證與存儲(chǔ)數(shù)據(jù)、利用分布式節(jié)點(diǎn)共識(shí)算法來(lái)生成和更新數(shù)據(jù)、利用密碼學(xué)的方式保證數(shù)據(jù)傳輸和訪問(wèn)的安全、利用由自動(dòng)化腳本代碼組成的智能合約來(lái)編程和操作數(shù)據(jù)的一種全新的分布式基礎(chǔ)架構(gòu)與計(jì)算范式。區(qū)塊鏈技術(shù)通過(guò)去中心化、去信任的方式集體維護(hù)一個(gè)可靠數(shù)據(jù)庫(kù),解決交易的信任和安全問(wèn)題。
區(qū)塊鏈技術(shù)并不是一種單一的技術(shù),而是多種技術(shù)整合的結(jié)果,這些技術(shù)以新的結(jié)構(gòu)組合在一起,形成了一種新的數(shù)據(jù)記錄、存儲(chǔ)和表達(dá)的方式,主要涉及以下四種技術(shù):
一、分布式賬本。即交易記賬由分布在不同地方的多個(gè)節(jié)點(diǎn)共同完成,而且每一個(gè)節(jié)點(diǎn)都記錄的是完整的賬目,因此它們都可以參與監(jiān)督交易合法性,同時(shí)也可以共同為其作證。不同于傳統(tǒng)的中心化記賬方案,沒(méi)有任何一個(gè)節(jié)點(diǎn)可以單獨(dú)記錄賬目,從而避免了單一記賬人被控制或者被賄賂而記假賬的可能性。另一方面,由于記賬節(jié)點(diǎn)足夠多,理論上講除非所有的節(jié)點(diǎn)被破壞,否則賬目就不會(huì)丟失,從而保證了賬目數(shù)據(jù)的安全性。
二、非對(duì)稱加密和授權(quán)技術(shù)。存儲(chǔ)在區(qū)塊鏈上的交易信息是公開(kāi)的,但是賬戶身份信息是高度加密的,只有在數(shù)據(jù)擁有者授權(quán)的情況下才能訪問(wèn)到,從而保證了數(shù)據(jù)的安全和個(gè)人的隱私。
三、共識(shí)機(jī)制。即所有記賬節(jié)點(diǎn)之間如何達(dá)成共識(shí),去認(rèn)定一個(gè)記錄的有效性,這既是認(rèn)定的手段,也是防止篡改的手段。
四、智能合約。智能合約是基于可信的不可篡改的數(shù)據(jù),可以自動(dòng)化地執(zhí)行一些預(yù)先定義好的規(guī)則和條款。
目前階段區(qū)塊鏈的網(wǎng)絡(luò)屬性僅僅被發(fā)揮到類似局域網(wǎng)的程度,不同的區(qū)塊鏈之間不僅無(wú)法聯(lián)通,更無(wú)信任可言。此外,對(duì)一條區(qū)塊鏈而言,我們也飽受其能力不足的困擾,全局共識(shí)機(jī)制在提供安全性的同時(shí)也大大限制了區(qū)塊鏈系統(tǒng)的發(fā)展,我們無(wú)法通過(guò)增加節(jié)點(diǎn)的方式提高交易的處理能力。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的之一是提供一種鏈路由,通過(guò)其可實(shí)現(xiàn)區(qū)塊鏈之間的通信,從而使得不同區(qū)塊鏈之間可以互信互通,還可以通過(guò)增加節(jié)點(diǎn)的方式提高交易的處理能力。
根據(jù)上述目的,本發(fā)明提出了一種鏈路由,所述鏈路由為實(shí)現(xiàn)通信包接收和轉(zhuǎn)發(fā)的第一區(qū)塊鏈,所述鏈路由與不能實(shí)現(xiàn)通信包轉(zhuǎn)發(fā)的第二區(qū)塊鏈或其他鏈路由連接,用以實(shí)現(xiàn)各第二區(qū)塊鏈之間的通信,所述通信包內(nèi)包括交易,所述交易對(duì)應(yīng)對(duì)數(shù)據(jù)庫(kù)狀態(tài)的改變。
針對(duì)區(qū)塊鏈發(fā)展所面臨的前述問(wèn)題,發(fā)明人提出“鏈路由”的概念。這樣做主要有兩個(gè)目的:其一,增強(qiáng)區(qū)塊鏈系統(tǒng)對(duì)交易的處理能力,實(shí)現(xiàn)區(qū)塊鏈交易處理能力的水平擴(kuò)展;其二,打通區(qū)塊鏈之間的通信壁壘,實(shí)現(xiàn)區(qū)塊鏈之間的互聯(lián),互通,互信。
現(xiàn)有的一些區(qū)塊鏈,如比特幣,以太坊等,是先于所述鏈路由存在的,而且在設(shè)計(jì)之初這些現(xiàn)有的區(qū)塊鏈也不具有與其它區(qū)塊鏈通信的功能。而鏈路由則要像路由器一樣能夠接納一切區(qū)塊鏈,因此發(fā)明人考慮設(shè)計(jì)所述鏈路由的同時(shí),基于鏈路由制定一套區(qū)塊鏈之間的通信協(xié)議,符合這套協(xié)議的區(qū)塊鏈系統(tǒng)可以輕松接入鏈路由。對(duì)于先于所述鏈路由存在的區(qū)塊鏈系統(tǒng),在不改變其本身設(shè)計(jì)的基礎(chǔ)上,可以額外設(shè)計(jì)一套適配系統(tǒng)來(lái)輔助其與所述鏈路由之間的通信。
本發(fā)明中,所述第一區(qū)塊鏈和所述第二區(qū)塊鏈作廣義上的區(qū)塊鏈理解,即包括區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)的、基于區(qū)塊鏈技術(shù)實(shí)現(xiàn)的、具備區(qū)塊鏈數(shù)據(jù)庫(kù)維護(hù)功能的架構(gòu),該架構(gòu)包括相應(yīng)的計(jì)算范式,可以在計(jì)算機(jī)上實(shí)現(xiàn)。
本發(fā)明中,所述鏈路由提供了區(qū)塊鏈之間的聯(lián)通與分發(fā)的功能。通?;阪溌酚芍贫ㄒ惶讌^(qū)塊鏈之間的通信協(xié)議,使不同的區(qū)塊鏈之間可以像網(wǎng)絡(luò)中的各種設(shè)備一樣相互通信,從而使得不同區(qū)塊鏈之間可以互信互通,還可以通過(guò)增加第二區(qū)塊鏈節(jié)點(diǎn)的方式提高交易的處理能力。
本發(fā)明基于區(qū)塊鏈技術(shù)設(shè)計(jì)所述鏈路由,將所述鏈路由本身設(shè)計(jì)為第一區(qū)塊鏈,基于區(qū)塊鏈的交易和數(shù)據(jù)庫(kù)技術(shù)以及通信技術(shù)實(shí)現(xiàn)所述第一區(qū)塊鏈與所述第二區(qū)塊鏈之間安全、可靠的通信,以及實(shí)現(xiàn)區(qū)塊鏈交易處理能力的水平擴(kuò)展。
進(jìn)一步地,本發(fā)明所述的鏈路由中,所述鏈路由包括:路由信息管理模塊、通信包處理器和分發(fā)器,所述路由信息管理模塊內(nèi)存儲(chǔ)有路由表,所述通信包處理器將接收的通信包進(jìn)行解析,然后根據(jù)路由表將通信包經(jīng)由分發(fā)器轉(zhuǎn)發(fā)出去。
上述方案中,所述路由信息管理模塊內(nèi)存儲(chǔ)有路由表是指:所述路由表中的信息由信息管理模塊管理,但通常所述路由表中的信息是存在鏈路由的數(shù)據(jù)庫(kù)中。
上述方案中,所述路由信息管理模塊、通信包處理器和分發(fā)器可以基于鏈間通信協(xié)議(crossblockchaincommunicationprotocol,縮寫(xiě)為cbcp)實(shí)現(xiàn)。
更進(jìn)一步地,上述鏈路由中,所述路由表為動(dòng)態(tài)更新的路由表。
進(jìn)一步地,本發(fā)明所述的鏈路由中,所述鏈路由采用代理權(quán)益拜占庭容錯(cuò)算法對(duì)所述交易進(jìn)行驗(yàn)證,所述鏈路由具有若干個(gè)節(jié)點(diǎn),所述節(jié)點(diǎn)包括具有驗(yàn)證賬號(hào)的驗(yàn)證節(jié)點(diǎn)和不具有驗(yàn)證賬號(hào)的非驗(yàn)證節(jié)點(diǎn),所述非驗(yàn)證節(jié)點(diǎn)將權(quán)益委托給驗(yàn)證節(jié)點(diǎn),以使驗(yàn)證節(jié)點(diǎn)代理非驗(yàn)證節(jié)點(diǎn)進(jìn)行投票以進(jìn)行驗(yàn)證。
上述方案中,由于所述鏈路由本身就是一條區(qū)塊鏈,因此通常具有若干節(jié)點(diǎn)。理論上一個(gè)節(jié)點(diǎn)的區(qū)塊鏈?zhǔn)强梢哉_\(yùn)行的,但實(shí)際上,分布式賬本和拜占庭容錯(cuò)共識(shí)算法的作用要在多個(gè)節(jié)點(diǎn)上才能體現(xiàn)出來(lái),在使用的共識(shí)算法中,建議節(jié)點(diǎn)數(shù)至少為4個(gè)。
上述方案中,所述鏈路由采用代理權(quán)益拜占庭容錯(cuò)算法對(duì)所述交易進(jìn)行驗(yàn)證,其設(shè)計(jì)思路如下:
工作量證明算法(pow)是被應(yīng)用在比特幣和以太坊上的一種拜占庭容錯(cuò)(bft)共識(shí)算法。自比特幣開(kāi)始發(fā)行至今,工作量證明算法已經(jīng)證明了其可靠性,但其對(duì)資源的浪費(fèi)也是有目共睹。權(quán)益證明算法(pos)是一種為了解決工作量證明算法資源浪費(fèi)問(wèn)題而提出的共識(shí)算法,通過(guò)投票人在投票權(quán)益池中的權(quán)益比重來(lái)代替礦工在挖礦時(shí)貢獻(xiàn)的算力,配以相應(yīng)的處罰機(jī)制,確保投票人的誠(chéng)信。然而,算力和權(quán)益之間還是有很大區(qū)別的,最重要的一點(diǎn)區(qū)別就是在于算力是不能分散的,一個(gè)算力固定的礦工不可以同時(shí)在兩條鏈上挖礦且保持總算力翻倍,但是擁有一定權(quán)益的投票人卻可以對(duì)每一個(gè)可能的區(qū)塊投票,只要任何一個(gè)區(qū)塊成為了將來(lái)的勝出者就可以保證自己的權(quán)益不受損。但這樣做是有很大的安全隱患的,因?yàn)檫@樣大大降低了作惡者所需要的作惡成本。
raft作為一種常用的高效共識(shí)算法,其最大的弊病在于不能防止拜占庭節(jié)點(diǎn),一個(gè)擁有強(qiáng)大網(wǎng)絡(luò)配置的拜占庭領(lǐng)導(dǎo)者節(jié)點(diǎn)會(huì)給raft算法的共識(shí)帶來(lái)毀滅性打擊。在拜占庭容錯(cuò)共識(shí)算法的發(fā)展歷程中,一些結(jié)合raft和bft的算法被提出來(lái)。以pbft(practicalbyzantinefaulttolerance,實(shí)用拜占庭容錯(cuò)算法)為例,一部分可靠的節(jié)點(diǎn)被稱為驗(yàn)證人,驗(yàn)證人具有成為領(lǐng)導(dǎo)者的機(jī)會(huì),在每一輪區(qū)塊鏈生成的過(guò)程中,都會(huì)有一個(gè)新的驗(yàn)證人會(huì)默認(rèn)成為該輪的領(lǐng)導(dǎo)者,領(lǐng)導(dǎo)者負(fù)責(zé)打包新的區(qū)塊,并將一個(gè)自己認(rèn)為合理的區(qū)塊廣播給所有驗(yàn)證人。經(jīng)過(guò)兩輪超過(guò)2/3的全部驗(yàn)證人的投票確認(rèn),新的區(qū)塊才會(huì)被共識(shí)。這種共識(shí)方式大大提升了出塊速度,而且只要保證小于1/3的驗(yàn)證人不是拜占庭節(jié)點(diǎn),區(qū)塊就可以被持續(xù)生產(chǎn)。
不可否認(rèn)的是,pbft中所使用的拜占庭節(jié)點(diǎn)容錯(cuò)算法對(duì)于保證1/3以下拜占庭節(jié)點(diǎn)的網(wǎng)絡(luò)的安全是可靠的。但是,在實(shí)際應(yīng)用中,尤其是當(dāng)與經(jīng)濟(jì)利益相關(guān)時(shí),即使驗(yàn)證人是經(jīng)過(guò)挑選的可靠節(jié)點(diǎn),發(fā)明人考慮也不能單純的依賴沒(méi)有處罰機(jī)制的1/3的安全,保證安全必須要做到賞務(wù)速而后有勸,罰務(wù)速而后有懲。而其中的賞與罰必須是與經(jīng)濟(jì)利益直接關(guān)聯(lián)的。因此,發(fā)明人對(duì)原有的共識(shí)機(jī)制進(jìn)行了修改,使驗(yàn)證人投票的權(quán)重與其所抵押的鏈上代幣權(quán)益相對(duì)應(yīng)。這樣一來(lái),原本需要超過(guò)2/3投票人才能確認(rèn)生成區(qū)塊的機(jī)制被修改成超過(guò)2/3的總權(quán)益。此外,在pbft共識(shí)算法中,普通節(jié)點(diǎn)只是在同步來(lái)自領(lǐng)導(dǎo)節(jié)點(diǎn)發(fā)來(lái)的新區(qū)塊,并不參與共識(shí),導(dǎo)致其共識(shí)算法的安全性僅依賴于驗(yàn)證節(jié)點(diǎn)的數(shù)量,普通節(jié)點(diǎn)的數(shù)量增加并不能提升拜占庭容錯(cuò)的安全性。新的共識(shí)機(jī)制中增加了非驗(yàn)證節(jié)點(diǎn)的參與性。一個(gè)驗(yàn)證節(jié)點(diǎn)對(duì)應(yīng)一個(gè)驗(yàn)證人賬號(hào),非驗(yàn)證人可以通過(guò)將權(quán)益委托給驗(yàn)證人,通過(guò)驗(yàn)證人代理投票的方式賺取屬于自己的利益。因?yàn)槔娴年P(guān)系,非驗(yàn)證人會(huì)慎重選擇代理驗(yàn)證人,從而做到了所有人都參與到共識(shí)中,而又沒(méi)有所有節(jié)點(diǎn)參與共識(shí)而帶來(lái)的效率降低的缺陷。這樣的共識(shí)算法發(fā)明人稱之為代理權(quán)益拜占庭容錯(cuò)算法(ds-pbft)。
上述方案中,所述鏈路由使用通過(guò)驗(yàn)證人投票實(shí)現(xiàn)的代理權(quán)益拜占庭容錯(cuò)算法作為共識(shí)算法,使得所有節(jié)點(diǎn)都參與到鏈路由的共識(shí)中,而又沒(méi)有所有節(jié)點(diǎn)參與共識(shí)而帶來(lái)的效率降低的缺陷。
上述方案還有個(gè)好處是為打造輕量級(jí)的客戶端奠定了基礎(chǔ)?,F(xiàn)階段區(qū)塊鏈的客戶端通常都為全節(jié)點(diǎn),即需要存儲(chǔ)區(qū)塊鏈的所有數(shù)據(jù)。輕量級(jí)客戶端,也稱輕客戶端,只存儲(chǔ)少量區(qū)塊鏈數(shù)據(jù),但是同樣可以驗(yàn)證區(qū)塊鏈中的數(shù)據(jù)的真實(shí)性,更適合手機(jī)等移動(dòng)、輕型終端的使用。上述方案的共識(shí)算法是一種更適合輕客戶端使用的算法,因此為輕客戶端的誕生奠定了基礎(chǔ)。
發(fā)明人注意到,普通的區(qū)塊鏈客戶端需要同步區(qū)塊鏈中的所有區(qū)塊才可以驗(yàn)證交易,這樣的客戶端雖然功能強(qiáng)大,但是由于需要存儲(chǔ)的數(shù)據(jù)太多導(dǎo)致其本身過(guò)重,在實(shí)際應(yīng)用中往往有著諸多不便。
輕客戶端中只需要實(shí)時(shí)同步某條區(qū)塊鏈上的最新驗(yàn)證人組,就可以對(duì)該區(qū)塊鏈上的一些信息進(jìn)行驗(yàn)證。如,輕客戶端只需要連續(xù)同步某區(qū)塊鏈的區(qū)塊頭并更新驗(yàn)證人信息,就可以實(shí)時(shí)跟進(jìn)并驗(yàn)證該區(qū)塊鏈上的最新的區(qū)塊高度,世界狀態(tài)等信息。當(dāng)然,相較于全節(jié)點(diǎn)客戶端,輕客戶端能實(shí)現(xiàn)的功能是有限的,但是這樣的客戶端更適合被使用在硬盤(pán)空間不夠大的移動(dòng)端或物聯(lián)網(wǎng)行業(yè),幫助其獲取重要的狀態(tài)。
進(jìn)一步地,本發(fā)明所述的鏈路由中,所述鏈路由具有數(shù)量不斷增加的若干個(gè)區(qū)塊,其中每一個(gè)區(qū)塊均包括區(qū)塊頭部分和數(shù)據(jù)部分。
上述方案中,由于鏈路由本身也是區(qū)塊鏈,其狀態(tài)信息以區(qū)塊的形式保存和更新。所述狀態(tài)信息通常包含于所述數(shù)據(jù)庫(kù)中。
更進(jìn)一步地,上述鏈路由中,其中所述區(qū)塊頭部分至少包括:鏈標(biāo)識(shí)、區(qū)塊高度、時(shí)間、世界狀態(tài)的哈希值、與該區(qū)塊緊鄰的前一個(gè)區(qū)塊的區(qū)塊頭部分的哈希值、與該區(qū)塊緊鄰的前一個(gè)區(qū)塊的分塊、驗(yàn)證人哈希值、數(shù)據(jù)部分的哈希值的至少其中之一。
更進(jìn)一步地,上述鏈路由中,所述數(shù)據(jù)部分至少包括該區(qū)塊內(nèi)的所有交易。
上述方案中,一個(gè)交易是指對(duì)數(shù)據(jù)庫(kù)的狀態(tài)進(jìn)行了一次改變。
本發(fā)明的另一目的是提供一種實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng),其可實(shí)現(xiàn)區(qū)塊鏈之間的通信,從而使得不同區(qū)塊鏈之間可以互信互通,還可以通過(guò)增加節(jié)點(diǎn)的方式提高交易的處理能力。
根據(jù)上述目的,本發(fā)明提出了一種實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng),其包括多個(gè)上述鏈路由以及與該多個(gè)鏈路由連接的多個(gè)第二區(qū)塊鏈。
本發(fā)明所述的實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng)中,所述多個(gè)鏈路由之間以某種連接結(jié)構(gòu)通信連接,所述多個(gè)第二區(qū)塊鏈與所述多個(gè)鏈路由之間以某種連接結(jié)構(gòu)通信連接。其中,一個(gè)鏈路由可以連接一個(gè)或多個(gè)第二區(qū)塊鏈。所述第二區(qū)塊鏈通過(guò)其連接的鏈路由與其它第二區(qū)塊鏈通信,或者通過(guò)其連接的鏈路由與其它第二區(qū)塊鏈連接的鏈路由通信,從而與所述其它第二區(qū)塊鏈通信,從而使得不同區(qū)塊鏈之間可以互信互通,還可以通過(guò)增加第二區(qū)塊鏈節(jié)點(diǎn)的方式提高交易的處理能力。
通常在所述系統(tǒng)中,一些鏈路由可以起到類似路由器的功能,根據(jù)通信協(xié)議將通信請(qǐng)求解析并轉(zhuǎn)發(fā),動(dòng)態(tài)維護(hù)所述系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
在理想狀況下,所述多個(gè)鏈路由之間以鏈狀結(jié)構(gòu)連接,所有第二區(qū)塊鏈通過(guò)該鏈狀結(jié)構(gòu)進(jìn)行通信,這樣的好處是通信速度快。但是隨著新的第二區(qū)塊鏈的不斷增加,通信量也會(huì)增加,鏈路由的存儲(chǔ)和計(jì)算負(fù)擔(dān)將以平方級(jí)增加,因此鏈路由通常需要采用分層結(jié)構(gòu)。
這里將問(wèn)題簡(jiǎn)化,假設(shè)所述多個(gè)鏈路由只包括底層鏈和上層鏈兩層結(jié)構(gòu):底層鏈負(fù)責(zé)連通上層鏈,負(fù)責(zé)維護(hù)上層鏈之間的通信。即,如果目標(biāo)鏈在同一個(gè)上層鏈中,那么就直接通過(guò)上層鏈通信。如果目標(biāo)鏈不在同一個(gè)上層鏈中,則需要通過(guò)底層鏈通信。在實(shí)際應(yīng)用中,所述多個(gè)鏈路由將不止兩層,最底層構(gòu)成路由主干。
進(jìn)一步地,本發(fā)明所述的實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng)中,所述多個(gè)鏈路由呈樹(shù)狀結(jié)構(gòu)分布或呈網(wǎng)狀結(jié)構(gòu)分布。
上述方案中,所述樹(shù)狀結(jié)構(gòu)是指每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)是唯一的拓?fù)浣Y(jié)構(gòu),所述網(wǎng)狀結(jié)構(gòu)是指每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)不是唯一的拓?fù)浣Y(jié)構(gòu),該拓?fù)浣Y(jié)構(gòu)形成分層結(jié)構(gòu),其拓?fù)潢P(guān)系對(duì)應(yīng)分層關(guān)系。
進(jìn)一步地,本發(fā)明所述的實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng)中,所述多個(gè)鏈路由呈樹(shù)狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)結(jié)合的形式分布。
上述方案中,所述樹(shù)狀結(jié)構(gòu)是指每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)是唯一的拓?fù)浣Y(jié)構(gòu),所述網(wǎng)狀結(jié)構(gòu)是指每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)不是唯一的拓?fù)浣Y(jié)構(gòu),該拓?fù)浣Y(jié)構(gòu)形成分層結(jié)構(gòu),其拓?fù)潢P(guān)系對(duì)應(yīng)分層關(guān)系。
鏈路由網(wǎng)絡(luò)的最終結(jié)構(gòu)受諸多因素影響,其中,最主要的影響因素就是需要通信的區(qū)塊鏈的數(shù)量。隨著接入鏈網(wǎng)絡(luò)的區(qū)塊鏈逐漸增多,接入一個(gè)鏈路由中的區(qū)塊鏈會(huì)不斷增多,當(dāng)多到一定的程度超過(guò)一個(gè)鏈路由的負(fù)載,可以采用增加鏈路由的方式來(lái)分?jǐn)倝毫?。?duì)于位于同一層的鏈路由來(lái)講,它們既可以通過(guò)相互間建立連接完成通信傳遞,也可以接入同一個(gè)上層鏈路由,并通過(guò)共同的鏈路由來(lái)實(shí)現(xiàn)通信傳遞。所以樹(shù)形結(jié)構(gòu)是可能存在的,當(dāng)然,網(wǎng)狀結(jié)構(gòu)也是可能存在的。也可能是在最上層的鏈路由中使用類似bgp的規(guī)則,在其下的每個(gè)分域內(nèi)采用樹(shù)形、網(wǎng)狀、樹(shù)形和網(wǎng)狀的結(jié)構(gòu)。
本發(fā)明所述的鏈路由,通過(guò)其可實(shí)現(xiàn)區(qū)塊鏈之間的通信,從而使得不同區(qū)塊鏈之間可以互信互通,還可以通過(guò)增加節(jié)點(diǎn)的方式提高交易的處理能力。
本發(fā)明所述的實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng),其同樣具有上述效果,同時(shí)還擴(kuò)大了節(jié)點(diǎn)容量。
附圖說(shuō)明
圖1為本發(fā)明所述的鏈路由在一種實(shí)施方式下的結(jié)構(gòu)示意圖。
圖2為本發(fā)明所述的鏈路由在一種實(shí)施方式下的代理權(quán)益拜占庭容錯(cuò)算法的流程示意圖。
圖3為本發(fā)明所述的鏈路由在一種實(shí)施方式下的區(qū)塊的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合說(shuō)明書(shū)附圖和具體的實(shí)施例來(lái)對(duì)本發(fā)明所述的鏈路由和實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng)進(jìn)行進(jìn)一步地詳細(xì)說(shuō)明,但是該詳細(xì)說(shuō)明不構(gòu)成對(duì)本發(fā)明的限制。
圖1顯示了本發(fā)明所述的鏈路由在一種實(shí)施方式下的結(jié)構(gòu)。
如圖1所示,該實(shí)施方式下的鏈路由為實(shí)現(xiàn)通信包接收和轉(zhuǎn)發(fā)的第一區(qū)塊鏈,鏈路由與不能實(shí)現(xiàn)通信包轉(zhuǎn)發(fā)的作為第二區(qū)塊鏈的子鏈(本具體實(shí)施方式中,將第二區(qū)塊鏈稱為子鏈,其掛接的鏈路由稱為相應(yīng)的母鏈)連接,用以實(shí)現(xiàn)各第二區(qū)塊鏈之間的通信,通信包內(nèi)包括交易,交易對(duì)應(yīng)對(duì)數(shù)據(jù)庫(kù)狀態(tài)的改變。
在其它實(shí)施方式中,鏈路由還可以與其他鏈路由連接,用以實(shí)現(xiàn)各子鏈之間的通信。
該實(shí)施方式下的鏈路由包括:路由信息管理模塊、通信包處理器和分發(fā)器,路由信息管理模塊內(nèi)存儲(chǔ)有路由表,通信包處理器將接收的通信包進(jìn)行解析,然后根據(jù)路由表將通信包經(jīng)由分發(fā)器轉(zhuǎn)發(fā)出去。該路由表為動(dòng)態(tài)更新的路由表。路由信息管理模塊、通信包處理器和分發(fā)器基于鏈間通信協(xié)議(cbcp)實(shí)現(xiàn)。
該實(shí)施方式中,不同于傳統(tǒng)區(qū)塊鏈系統(tǒng)的機(jī)構(gòu),鏈路由中的共識(shí)算法和p2p網(wǎng)絡(luò)通信模塊是與賬本邏輯分離開(kāi)的,將鏈路由分割為兩個(gè)部分。其中共識(shí)算法與p2p網(wǎng)絡(luò)通信模塊負(fù)責(zé)交易的廣播,共識(shí)等,其可以替代諸多區(qū)塊鏈系統(tǒng)中的共識(shí)及p2p網(wǎng)絡(luò)通信模塊部分。賬本部分負(fù)責(zé)驗(yàn)證,查詢等邏輯。二者之間通過(guò)套接字協(xié)議被結(jié)合在一起。鏈路由使用通訊包處理器解析通信包,然后跟據(jù)其動(dòng)態(tài)維護(hù)的路由表,通過(guò)鏈間通信協(xié)議將消息轉(zhuǎn)發(fā)給子鏈。
該實(shí)施方式下的鏈路由采用代理權(quán)益拜占庭容錯(cuò)算法對(duì)交易進(jìn)行驗(yàn)證,鏈路由具有若干個(gè)節(jié)點(diǎn),節(jié)點(diǎn)包括具有驗(yàn)證賬號(hào)的驗(yàn)證節(jié)點(diǎn)和不具有驗(yàn)證賬號(hào)的非驗(yàn)證節(jié)點(diǎn),非驗(yàn)證節(jié)點(diǎn)將權(quán)益委托給驗(yàn)證節(jié)點(diǎn),以使驗(yàn)證節(jié)點(diǎn)代理非驗(yàn)證節(jié)點(diǎn)進(jìn)行投票以進(jìn)行驗(yàn)證。
圖2顯示了本發(fā)明所述的鏈路由在一種實(shí)施方式下的代理權(quán)益拜占庭容錯(cuò)算法的流程。
如圖2所示,該實(shí)施方式下的鏈路由的代理權(quán)益拜占庭容錯(cuò)算法(ds-pbft)在流程上與pbft算法的流程類似。pbft算法是目前比較成熟的拜占庭容錯(cuò)共識(shí)算法。pbft算法中,一部分可靠的節(jié)點(diǎn)被稱為驗(yàn)證人,驗(yàn)證人具有成為領(lǐng)導(dǎo)者的機(jī)會(huì),在每一輪區(qū)塊鏈生成的過(guò)程中,都會(huì)有一個(gè)新的驗(yàn)證人會(huì)默認(rèn)成為該輪的領(lǐng)導(dǎo)者,領(lǐng)導(dǎo)者負(fù)責(zé)打包新的區(qū)塊,并將一個(gè)自己認(rèn)為合理的區(qū)塊廣播給所有驗(yàn)證人。經(jīng)過(guò)兩輪超過(guò)2/3的全部驗(yàn)證人的投票確認(rèn),新的區(qū)塊才會(huì)被共識(shí)。ds-pbft算法與pbft算法的不同之處在于,ds-pbft算法中,驗(yàn)證人投票的權(quán)重與其所抵押的鏈上代幣權(quán)益相對(duì)應(yīng),即pbft算法中需要超過(guò)2/3投票人才能確認(rèn)生成區(qū)塊的機(jī)制在ds-pbft算法中被修改成超過(guò)2/3的總權(quán)益。此外,在pbft算法中,普通節(jié)點(diǎn)只是在同步來(lái)自領(lǐng)導(dǎo)節(jié)點(diǎn)發(fā)來(lái)的新區(qū)塊,并不參與共識(shí)。ds-pbft算法中增加了非驗(yàn)證節(jié)點(diǎn)的參與性,一個(gè)驗(yàn)證節(jié)點(diǎn)對(duì)應(yīng)一個(gè)驗(yàn)證人賬號(hào),非驗(yàn)證人可以通過(guò)將權(quán)益委托給驗(yàn)證人,通過(guò)驗(yàn)證人代理投票的方式賺取屬于自己的利益。ds-pbft算法與pbft算法的區(qū)別主要體現(xiàn)在設(shè)定上,包括ds-pbft算法中擁有權(quán)益的人可以將權(quán)益抵押給驗(yàn)證人,并通過(guò)驗(yàn)證人誠(chéng)實(shí)投票幫助驗(yàn)證人和權(quán)益擁有者獲利。
圖3顯示了本發(fā)明所述的鏈路由在一種實(shí)施方式下的區(qū)塊的結(jié)構(gòu)。
鏈路由本身也是區(qū)塊鏈,狀態(tài)信息以區(qū)塊的形式保存和更新。該狀態(tài)信息包含于數(shù)據(jù)庫(kù)中。由于該實(shí)施方式下的鏈路由采用了代理權(quán)益拜占庭容錯(cuò)算法作為共識(shí)算法,其區(qū)塊的結(jié)構(gòu)與比特幣、以太坊等區(qū)塊鏈系統(tǒng)的區(qū)塊的組成有很大不同。
如圖3所示,該實(shí)施方式下的鏈路由具有數(shù)量不斷增加的若干個(gè)區(qū)塊,其中每一個(gè)區(qū)塊均包括區(qū)塊頭部分(header)、數(shù)據(jù)部分(data)以及起到認(rèn)證上一個(gè)區(qū)塊的投票部分(lastcommit)。
區(qū)塊頭部分包括:鏈標(biāo)識(shí)(chainid)、區(qū)塊高度(hight)、時(shí)間(time)、世界狀態(tài)的哈希值(apphash)、與該區(qū)塊緊鄰的前一個(gè)區(qū)塊的區(qū)塊頭部分的哈希值(lastheaderhash)、與該區(qū)塊緊鄰的前一個(gè)區(qū)塊的分塊(lastblockparts)、驗(yàn)證人哈希值(validatorshash)、數(shù)據(jù)部分的哈希值(datahash)、投票部分的哈希值(lastcommithash)。其中,后兩部分是對(duì)本區(qū)塊整體性的檢查。
數(shù)據(jù)部分包括該區(qū)塊內(nèi)的所有交易。其中,一個(gè)交易是指對(duì)數(shù)據(jù)庫(kù)的狀態(tài)進(jìn)行了一次改變。
比較不同的是投票部分,這個(gè)部分的目的是建立新的區(qū)塊與上一個(gè)區(qū)塊之間的鏈接。
之前我們提到過(guò),區(qū)塊的共識(shí)需要兩輪超過(guò)2/3驗(yàn)證節(jié)點(diǎn)權(quán)益的投票。其中第二輪的全部2/3驗(yàn)證節(jié)點(diǎn)投票(commit)會(huì)被暫時(shí)保存起來(lái),等到下一個(gè)區(qū)塊被提議時(shí),被放在該區(qū)塊的投票的部分(lastcommit)。所以一個(gè)區(qū)塊的投票部分包括了上一輪投票中超過(guò)2/3驗(yàn)證人的投票。
本實(shí)施方式下的實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng)包括多個(gè)上述鏈路由以及與該多個(gè)鏈路由連接的多個(gè)子鏈。在該系統(tǒng)中,一些鏈路由起到類似路由器的功能,根據(jù)通信協(xié)議將通信請(qǐng)求解析并轉(zhuǎn)發(fā),動(dòng)態(tài)維護(hù)該系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
某些實(shí)施方式中,上述多個(gè)鏈路由呈樹(shù)狀結(jié)構(gòu)分布或呈網(wǎng)狀結(jié)構(gòu)分布。
某些實(shí)施方式中,上述多個(gè)鏈路由呈樹(shù)狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)結(jié)合的形式分布。
上述實(shí)施方式中,樹(shù)狀結(jié)構(gòu)是指每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)是唯一的拓?fù)浣Y(jié)構(gòu),網(wǎng)狀結(jié)構(gòu)是指每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)不是唯一的拓?fù)浣Y(jié)構(gòu),該拓?fù)浣Y(jié)構(gòu)形成分層結(jié)構(gòu),其拓?fù)潢P(guān)系對(duì)應(yīng)分層關(guān)系。
上述實(shí)施方式中,底層鏈負(fù)責(zé)連通上層鏈,負(fù)責(zé)維護(hù)上層鏈之間的通信。即,如果目標(biāo)鏈在同一個(gè)上層鏈中,那么就直接通過(guò)上層鏈通信。如果目標(biāo)鏈不在同一個(gè)上層鏈中,則需要通過(guò)底層鏈通信。最底層構(gòu)成鏈路由主干。
下面進(jìn)一步說(shuō)明該實(shí)施方式下的鏈路由和實(shí)現(xiàn)區(qū)塊鏈跨鏈通信的系統(tǒng)的信息傳輸流程、狀態(tài)維護(hù)以及動(dòng)態(tài)擴(kuò)容。
(1)信息傳輸流程。
假設(shè)子鏈a需要給子鏈b發(fā)送一條消息m,那么需要經(jīng)過(guò)以下流程:
通過(guò)共識(shí),子鏈a將以下包含以下信息的交易寫(xiě)入?yún)^(qū)塊鏈
[消息內(nèi)容:m,消息接收鏈:b];
鏈路由監(jiān)測(cè)到子鏈a上需要傳輸?shù)男畔⒌恼?qǐng)求,一旦發(fā)現(xiàn)需要轉(zhuǎn)發(fā)的消息,便把包含以下信息的交易寫(xiě)入?yún)^(qū)塊鏈
[消息內(nèi)容:m,消息接收鏈:b,消息發(fā)送鏈:a];
子鏈b檢測(cè)到鏈路由上有需要接收的消息,就將包含以下信息的交易寫(xiě)入?yún)^(qū)塊鏈
[消息內(nèi)容:m,消息來(lái)源:a]。
(2)狀態(tài)維護(hù)。
作為不同子鏈之間溝通的橋梁,鏈路由要負(fù)責(zé)維護(hù)關(guān)于子鏈的一些狀態(tài)。
首先,子鏈若希望與鏈路由進(jìn)行通信,則必須在鏈路由上進(jìn)行注冊(cè)。包括子鏈的身份標(biāo)識(shí)(chainid),子鏈上驗(yàn)證節(jié)點(diǎn)的信息,子鏈上資產(chǎn)的種類等。以此來(lái)幫助鏈路由能夠在接收到通信請(qǐng)求的時(shí)候解析出對(duì)應(yīng)的子鏈,完成轉(zhuǎn)發(fā)操作。
其次,鏈路由需要實(shí)時(shí)接收子鏈的最新區(qū)塊信息和對(duì)最新區(qū)塊的投票(commit),以此來(lái)滿足對(duì)子鏈基本狀態(tài)的維護(hù),幫助輕客戶端的用戶實(shí)時(shí)查詢子鏈高度,狀態(tài),驗(yàn)證從子鏈發(fā)來(lái)的交易等等。
此外,因?yàn)轵?yàn)證節(jié)點(diǎn)的身份是實(shí)時(shí)變更的,鏈路由還需要維護(hù)所有子鏈上的動(dòng)態(tài)驗(yàn)證節(jié)點(diǎn)信息,以此來(lái)驗(yàn)證一筆來(lái)自子鏈的交易是否為合法。
同理,子鏈上也需要維護(hù)關(guān)于鏈路由上的相應(yīng)信息,以此來(lái)確定一筆交易確實(shí)是由鏈路由發(fā)來(lái)的。包括鏈路由的身份標(biāo)識(shí),鏈路由上的驗(yàn)證節(jié)點(diǎn)信息,鏈路由上的最新區(qū)塊及投票等。
(3)動(dòng)態(tài)擴(kuò)容。
前文提到,鏈路由機(jī)制的一個(gè)重大意義在于實(shí)現(xiàn)區(qū)塊鏈系統(tǒng)的水平擴(kuò)展。因此,我們可以在現(xiàn)有鏈路由系統(tǒng)交易處理能力接近飽和之前在鏈路由上加入新的子鏈,降低每條鏈上所承載的交易數(shù)量。為了讓新加入鏈路由的子鏈可以迅速分?jǐn)倝毫?,我們制定了能夠?qū)崟r(shí)反應(yīng)的動(dòng)態(tài)路由規(guī)則。
首先,鏈路由會(huì)維護(hù)一個(gè)關(guān)于注冊(cè)在其上的子鏈列表,在子鏈加入到鏈路由之前,子鏈列表會(huì)先行更新。輕客戶端會(huì)效仿分布式配置管理機(jī)制,不定時(shí)向母鏈讀取當(dāng)前的最新子鏈數(shù)量。輕客戶端每次會(huì)在0.5至1秒之間隨機(jī)選取一個(gè)時(shí)間,倒計(jì)時(shí)觸發(fā)向鏈路由子鏈數(shù)量的查詢,并存儲(chǔ)在本地文件中。若查詢結(jié)果與本地存儲(chǔ)數(shù)字不同,則向其他輕客戶端廣播最新子鏈數(shù)量及時(shí)間戳。收到消息的其他輕客戶端對(duì)比本地文件,數(shù)量若一致,則重置倒計(jì)時(shí);若數(shù)量不一致且時(shí)間戳晚于本地?cái)?shù)值寫(xiě)入時(shí)間,則向鏈路由發(fā)起關(guān)于子鏈數(shù)量的查詢,寫(xiě)入新數(shù)據(jù)之后,重啟倒計(jì)時(shí);若數(shù)量不一致但時(shí)間戳早于本地寫(xiě)入時(shí)間,則忽略消息。此外,我們還可以設(shè)定一個(gè)屏蔽機(jī)制,若一個(gè)輕客戶端收到來(lái)自另一個(gè)輕客戶端的廣播,然后觸發(fā)了向母鏈的查詢,但是發(fā)現(xiàn)數(shù)量與本地儲(chǔ)存的子鏈數(shù)量一致。這時(shí)可能是因?yàn)閮纱尾樵冎?,母鏈上的子鏈增減數(shù)量相同,廣播者沒(méi)有撒謊;或者廣播者撒謊。但是這個(gè)輕客戶端可以主動(dòng)選擇屏蔽接受來(lái)自對(duì)方的消息,每次的屏蔽時(shí)間隨受欺騙次數(shù)增加。
通過(guò)以上方法,我們保證了輕客戶端中存儲(chǔ)的子鏈數(shù)量與母鏈中所存的保持實(shí)時(shí)一致。每當(dāng)一筆請(qǐng)求從輕客戶端發(fā)起時(shí),輕客戶端需要指定交易的觸發(fā)鏈,輕客戶端計(jì)算應(yīng)用標(biāo)識(shí)的哈希值,并對(duì)本地儲(chǔ)存的子鏈數(shù)量取模,所得值即為該請(qǐng)求的目標(biāo)鏈的編號(hào)。
需要注意的是,以上列舉的僅為本發(fā)明的具體實(shí)施例,顯然本發(fā)明不限于以上實(shí)施例,隨之有著許多的類似變化。本領(lǐng)域的技術(shù)人員如果從本發(fā)明公開(kāi)的內(nèi)容直接導(dǎo)出或聯(lián)想到的所有變形,均應(yīng)屬于本發(fā)明的保護(hù)范圍。