超級(jí)賬本Fabric怎么利用Gossip實(shí)現(xiàn)區(qū)塊的廣播

超級(jí)賬本Fabric怎么利用Gossip實(shí)現(xiàn)區(qū)塊的廣播,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元西雙版納做網(wǎng)站,已為上家服務(wù),為西雙版納各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

Hyperledger Fabric是一個(gè)分布式區(qū)塊鏈網(wǎng)絡(luò),每個(gè)節(jié)點(diǎn)都存有共享賬本的一個(gè)副本,該副本保存了所有交易的確定性歷史記錄。當(dāng)新的交易發(fā)生時(shí),這些交易必須擴(kuò)散到整個(gè)Hyperledger Fabric網(wǎng)絡(luò)中,以便使賬本的所有副本保持一致。本文將介紹Gossip協(xié)議機(jī)制的原理并說明Hyperledger Fabric如何使用Gossip機(jī)制來(lái)保證所有peer節(jié)點(diǎn)的數(shù)據(jù)同步。

從大的層面講,在Hyperledger Fabric中整個(gè)交易處理流程如下:

  • 新交易被提交給排序節(jié)點(diǎn)

  • 排序節(jié)點(diǎn)創(chuàng)建新的區(qū)塊,其中包含了新產(chǎn)生的交易

  • 排序節(jié)點(diǎn)分發(fā)區(qū)塊給所有的對(duì)等節(jié)點(diǎn)

最后一步,分發(fā),就是gossip協(xié)議發(fā)揮作用的環(huán)節(jié)。即使在一個(gè)僅包含少量成員機(jī)構(gòu)的Hyperledger Fabric網(wǎng)絡(luò)中,也可能會(huì)包含大量的對(duì)等節(jié)點(diǎn)。例如,一個(gè)重度使用IoT設(shè)備的Hyperledger Fabric網(wǎng)絡(luò)可能就需要很多Peer節(jié)點(diǎn)來(lái)將這些IoT設(shè)備接入?yún)^(qū)塊鏈網(wǎng)絡(luò)。更進(jìn)一步講,大范圍網(wǎng)絡(luò)中的peer節(jié)點(diǎn)連接可能是間歇性的,有些peer節(jié)點(diǎn)不是總會(huì)被排序節(jié)點(diǎn)訪問到。另外也沒必要要求排序節(jié)點(diǎn)將新區(qū)塊 分發(fā)給每個(gè)peer節(jié)點(diǎn),而且這一要求在有些情況下也是不可能滿足的。

超級(jí)賬本Fabric怎么利用Gossip實(shí)現(xiàn)區(qū)塊的廣播

Gossip:閑聊; 八卦; 小道消息;

實(shí)際上在Hyperledger Fabric的排序節(jié)點(diǎn)分發(fā)區(qū)塊時(shí),它只會(huì)把新區(qū)塊分發(fā)給每個(gè)機(jī)構(gòu)中的主導(dǎo)peer節(jié)點(diǎn),然后經(jīng)過gossip過程,這些peer節(jié)點(diǎn)自己完成新區(qū)塊在彼此之間的擴(kuò)散:

  • 某個(gè)peer節(jié)點(diǎn)有一個(gè)需要散播給其他peer節(jié)點(diǎn)的消息。例如,主導(dǎo)的peer節(jié)點(diǎn) 有一個(gè)新的區(qū)塊。

  • 該peer節(jié)點(diǎn)將消息發(fā)送給(隨機(jī)選擇的)預(yù)定數(shù)量的其他peer節(jié)點(diǎn)

  • 收到消息的peer節(jié)點(diǎn)再將消息發(fā)送給(隨機(jī)選擇的)預(yù)定數(shù)量的其他peer節(jié)點(diǎn)

  • 如此不斷反復(fù),直到每個(gè)peer節(jié)點(diǎn)都收到消息。

上面的過程被稱為廣播,這一過程被應(yīng)用于Fabric的gossip系統(tǒng)來(lái)向全體peer成員分發(fā)各種類型的消息。

1、網(wǎng)絡(luò)成員gossip流程

Gossip協(xié)議的一個(gè)核心組件,就是每個(gè)peer都會(huì)轉(zhuǎn)發(fā)消息給網(wǎng)絡(luò)中一組隨機(jī)選擇的節(jié)點(diǎn)。這隱含了每個(gè)peer節(jié)點(diǎn)都了解網(wǎng)絡(luò)中有哪些peer節(jié)點(diǎn)因此才可以進(jìn)行隨機(jī)選擇。

在Fabric中,每個(gè)peer節(jié)點(diǎn)都會(huì)周期性的廣播消息來(lái)表示自身的存活并且已經(jīng)接入網(wǎng)絡(luò)。每個(gè)peer節(jié)點(diǎn)都會(huì)維護(hù)一個(gè)清單來(lái)記錄網(wǎng)絡(luò)上的所有peer節(jié)點(diǎn) - 哪些peer是存活的,哪些peer是死翹翹的。

  • 當(dāng)Peer A收到來(lái)自Peer B的alive消息,它就會(huì)將Peer B標(biāo)注為alive。對(duì)于Peer A來(lái)說,Peer B就是網(wǎng)絡(luò)中的一個(gè)成員

  • 如果過了一段時(shí)間,Peer SA不在收到來(lái)自Peer B的alive消息,它就會(huì) 將Peer B標(biāo)注為dead。對(duì)于Peer A來(lái)說,Peer B就不再是網(wǎng)絡(luò)中的一員了。

假設(shè)Peer B并沒有真的死翹翹,Peer A 會(huì)周期性地嘗試連接標(biāo)記為dead的Peer節(jié)點(diǎn)以檢查其是否還存活。例如,有可能是因?yàn)榫W(wǎng)絡(luò)問題或其他Peer節(jié)點(diǎn)的故障導(dǎo)致了Peer B的alive消息無(wú)法到達(dá)Peer A,因此當(dāng)Peer A直接聯(lián)系Peer B時(shí),它就可以確定Peer B的真實(shí)狀態(tài)。

上面描述的過程僅當(dāng)在peer節(jié)點(diǎn)有一組可供發(fā)送alive消息的peer節(jié)點(diǎn)清單時(shí)才可以正常工作。因此每個(gè)peer節(jié)點(diǎn)在啟動(dòng)引導(dǎo)時(shí)都有一個(gè)啟動(dòng)引導(dǎo)節(jié)點(diǎn)集來(lái)提供初始的peer節(jié)點(diǎn)清單。

每個(gè)peer節(jié)點(diǎn)會(huì)簽名其發(fā)送的alive消息,這意味著一個(gè)壞家伙不能偽造消息來(lái)愚弄其他網(wǎng)絡(luò)成員。這個(gè)壞家伙能做的也就是不轉(zhuǎn)發(fā)alive消息。只要其他peer節(jié)點(diǎn)繼續(xù)轉(zhuǎn)發(fā)alive消息,這就不是什么大問題。

2、數(shù)據(jù)擴(kuò)散gossip流程

正如前面所描述的,在Hyperledger Fabric網(wǎng)絡(luò)中數(shù)據(jù)擴(kuò)散的基本原理很簡(jiǎn)單。每個(gè)peer節(jié)點(diǎn)只需將新的數(shù)據(jù)轉(zhuǎn)發(fā)給一組隨機(jī)選擇的peer節(jié)點(diǎn),最終就可以完成新數(shù)據(jù)在整個(gè)網(wǎng)絡(luò)中的擴(kuò)散。這一過程被稱為廣播,以一種基于推送的信息傳遞方案。

然而,如果一個(gè)peer節(jié)點(diǎn)從網(wǎng)絡(luò)斷開并在稍后重連,它可能就會(huì)錯(cuò)過廣播過程。為了跟上網(wǎng)絡(luò)中其他成員的數(shù)據(jù)進(jìn)度,這個(gè)節(jié)點(diǎn)需要一種基于拉取的機(jī)制來(lái)請(qǐng)求 其缺失的數(shù)據(jù)。在Hyperledger Fabric中,peer節(jié)點(diǎn)間會(huì)周期性地交換網(wǎng)絡(luò)成員數(shù)據(jù)和賬本數(shù)據(jù),這是的peer節(jié)點(diǎn)可以保持更新狀態(tài),即使其錯(cuò)過某個(gè)廣播過程。

3、Hyperledger Fabric中的Gossip應(yīng)用

Hyperledger Fabric在peer節(jié)點(diǎn)之間使用Gossip作為一種可伸縮的容錯(cuò)機(jī)制來(lái)保證所有peer節(jié)點(diǎn)上的賬本副本保持同步。使用gossip有效降低了排序節(jié)點(diǎn)的壓力,因?yàn)榕判蚬?jié)點(diǎn)只需要將區(qū)塊分發(fā)給每個(gè)機(jī)構(gòu)中的主導(dǎo)節(jié)點(diǎn),同時(shí)這也讓peer節(jié)點(diǎn)即使在斷線重連的情況下也能跟得上整個(gè)網(wǎng)絡(luò)的狀態(tài)更新。

關(guān)于超級(jí)賬本Fabric怎么利用Gossip實(shí)現(xiàn)區(qū)塊的廣播問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

分享文章:超級(jí)賬本Fabric怎么利用Gossip實(shí)現(xiàn)區(qū)塊的廣播
轉(zhuǎn)載來(lái)源:http://muchs.cn/article40/gdegho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)網(wǎng)站收錄、Google、靜態(tài)網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)