時(shí)間:2023-06-18|瀏覽:256
我們認(rèn)為,Hyperledger Fabric 在技術(shù)上是一個(gè)由 N 個(gè)節(jié)點(diǎn)組成的分布式網(wǎng)絡(luò)系統(tǒng)。通過把網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)分解為執(zhí)行交易或者背書及提交節(jié)點(diǎn)和交易排序的節(jié)點(diǎn),利用這些被分解后的節(jié)點(diǎn)來優(yōu)化區(qū)塊鏈網(wǎng)絡(luò)性能和安全性及可擴(kuò)展性。但是,分解后的網(wǎng)絡(luò)需要一個(gè)安全、可靠、可擴(kuò)展的數(shù)據(jù)分發(fā)協(xié)議來保障數(shù)據(jù)的完整性和一致性。因此,需要使用 Gossip 這個(gè)數(shù)據(jù)分發(fā)協(xié)議來滿足這個(gè)要求。
那么,是如何實(shí)現(xiàn) Gossip 協(xié)議的呢?在 Fabric 中,各個(gè) Peer 節(jié)點(diǎn)之間利用 Gossip 協(xié)議來完成區(qū)塊的廣播和數(shù)據(jù)狀態(tài)同步的過程。通過 Gossip 消息是連續(xù)的在通道上的每個(gè) Peer 節(jié)點(diǎn)都不斷地接受來自多個(gè)節(jié)點(diǎn)已完成一致性的區(qū)塊數(shù)據(jù),每條傳輸?shù)?Gossip 消息都有相應(yīng)的簽名,使得由拜占庭參與者發(fā)送的偽造消息很容易地被識(shí)別出來,并且可以防止將消息分發(fā)給不在同一通道中的其他節(jié)點(diǎn)。受到延遲、網(wǎng)絡(luò)分區(qū)或者其他因素導(dǎo)致區(qū)塊丟失的相關(guān)節(jié)點(diǎn),最終將通過聯(lián)系已經(jīng)擁有這些缺失區(qū)塊的節(jié)點(diǎn),來實(shí)現(xiàn)與當(dāng)前賬本的狀態(tài)數(shù)據(jù)進(jìn)行同步。
在 Hyperledger Fabric 網(wǎng)絡(luò)中,基于 Gossip 的數(shù)據(jù)傳輸協(xié)議是想在 Fabric 網(wǎng)絡(luò)中來執(zhí)行或者實(shí)現(xiàn)這樣三個(gè)功能:一是通過不斷識(shí)別可用的成員節(jié)點(diǎn)并最終監(jiān)測節(jié)點(diǎn)離線狀態(tài)的方式,對(duì)節(jié)點(diǎn)的發(fā)現(xiàn)和通道中的成員進(jìn)行有效的管理;二是將分類賬本數(shù)據(jù)傳播到通道的所有節(jié)點(diǎn)。使得任何節(jié)點(diǎn)如有缺失的區(qū)塊都可以通過從通道中的其它節(jié)點(diǎn)復(fù)制正確的數(shù)據(jù)來標(biāo)識(shí)缺失的區(qū)塊并實(shí)現(xiàn)自身同步;三是在通道中的所有節(jié)點(diǎn)上同步分類賬狀態(tài)。這是通過允許點(diǎn)對(duì)點(diǎn)狀態(tài)傳輸來更新賬本數(shù)據(jù),以保證新連接的節(jié)點(diǎn)以最快的速度實(shí)現(xiàn)數(shù)據(jù)的同步。正是基于 Gossip 的廣播,由節(jié)點(diǎn)接受來自通道內(nèi)其它節(jié)點(diǎn)的消息,再將這些消息轉(zhuǎn)發(fā)給隨機(jī)選擇的并且再同一通道內(nèi)若干個(gè)鄰居節(jié)點(diǎn),這種循環(huán)會(huì)不斷重復(fù),使通道中所有的成員節(jié)點(diǎn)的賬本和狀態(tài)信息不斷保持與當(dāng)前的最新狀態(tài)同步。至于新區(qū)塊的傳播,通道上的 LeaderPeer 節(jié)點(diǎn)從 Ordering 服務(wù)中提取數(shù)據(jù),并向隨機(jī)選擇的鄰居節(jié)點(diǎn)發(fā)起 Gossip 廣播,隨機(jī)選擇的鄰居節(jié)點(diǎn)數(shù)量可以通過配置文件進(jìn)行配置聲明,節(jié)點(diǎn)也可以使用拉取機(jī)制,而不是等待消息的轉(zhuǎn)遞。比如客戶端的應(yīng)用程序可以將交易提案請(qǐng)求提交給背書節(jié)點(diǎn)(EndorsePeer),背書節(jié)點(diǎn)處理并背書簽名后返回相應(yīng),然后提交給 Ordering 服務(wù)進(jìn)行排序,排序服務(wù)達(dá)成共識(shí)后生成區(qū)塊,通過 deliver 廣播給各個(gè)組織中通過選舉方式選擇的LeaderPeer 節(jié)點(diǎn)隨機(jī)選擇 N 個(gè)節(jié)點(diǎn)將接受到的區(qū)塊進(jìn)行分發(fā),并且為了保持?jǐn)?shù)據(jù)同步,每個(gè)節(jié)點(diǎn)會(huì)在后臺(tái)周期性的與其它隨機(jī)的 N 個(gè)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行比較,如此就能保持區(qū)塊數(shù)據(jù)狀態(tài)同步了。以上就是區(qū)塊鏈技術(shù)在商業(yè)場景應(yīng)用中,如何實(shí)現(xiàn)數(shù)據(jù)同步的解析。
熱點(diǎn):區(qū)塊鏈 區(qū)塊鏈技術(shù) 數(shù)據(jù)