​​​​​​​用大白話解釋區塊鏈分類賬本Hyperledger Fabric

banq發表於2018-10-16

Hyperledger Fabric是一個分散式區塊鏈網路,其中多個元件自己保留的共享分類帳複製副本,即所有交易的歷史記錄。當新交易發生時,它們必須透過網路釋出,使分類帳的所有複製副本同步到一致的資料。

在較高的層次上,該流程如下所示:

1. 新的交易被提交給排序者(orderer,也稱排序服務)。
2. 排序者在區塊鏈上建立一個新區塊(包含新的交易)。
3. 排序者將新塊釋出交給某個對等節點peer。

最後一步,提交是採取goosip協議。即使在成員相對較少的區塊鏈網路中,仍然可能有大量的對等節點peer。例如,大量使用IoT(物聯網)裝置的網路可能需要許多對等節點將裝置連線到網路。此外,有時有些對等節點可能具有間歇性連線 - 某些對等節點可能無法一直從排序者那裡獲得訪問。對於排序者來說,必須向每個對等節點提交新塊資料會增加不必要的壓力,在某些情況下甚至可能無法完成。

在Hyperledger Fabric中實際發生的情況是,排序者只向組織中的某個對等節點遞交新塊 - 也就是leader peer領導對等節點。透過一個稱為goosip的過程,對等節點之間自己完成了複製副本的傳播:

1. 一個對等節點有需要分發給所有其他對等體的訊息。例如,領導對等節點有區塊鏈的新塊。

2.該對等節點將訊息傳送到預定數量的(隨機選擇的)其他對等體。

3. 這些對等體中的每一個將訊息轉發給預定數量的其他對等體。

4. 依此類推,直到每個同伴都收到了訊息。

上面的過程稱為廣播,Fabric的gossip系統使用這種策略來向所有對等體分發多種訊息。

Goosip會員
Goosip協議的關鍵組成部分是:每個對等體將訊息轉發給網路中其他對等體時是隨機選擇的。這意味著每個對等體都知道網路中的哪些對等體,因此可以在它們中進行選擇。

在Fabric中,每個對等體定期廣播一條訊息,表示它仍處於活動狀態並連線著網路。每個對等體都維護著自己的網路中所有對等體的列表 - 那些“活著”的對等體和那些“死”的對等體。

1. 當對等體A收到來自對等體B的“活著”的訊息時,它將對等體B標記為“有效”。對於對等體A來說,對等體B是網路的一部分。

2. 如果過了一段時間,對等體A沒有收到來自對等體B 的“活著”訊息,它將對等體B標記為“死亡”。對於對等體A來說,對等體B不再是網路的一部分。

為了防止對等方B實際上已經死亡,對等體A會定期嘗試連線死的對等體,看看他們是否真的還活著,因為其他問題如網路問題或故障可能會阻止對等體B的“活著”訊息到達對等體A.當對等體A能直接與對等體B聯絡時,它可以再次確認對等體B確實仍然存在。

引導
上述過程僅在這種情況有效:一個對等體有其他對等體的列表時,對等體需要向其它傳送“活著”消有這樣。因此,每個體都有透過這樣一組載入程式到啟動到區塊鏈網路。

拜占庭容錯
對等方都標記其“活著”訊息,這意味著壞人不能透過建立訊息來欺騙網路,它所能做的就是不轉發同伴的“活著”訊息。只要其他同伴仍然轉發“活著”訊息,個別不轉發並不是一個很大的威脅。

資料傳播Goosip
如前所述,資料傳播的基礎很簡單。每個對等體將新資料轉發給它知道的隨機選擇的對等子集。這個過程稱為廣播,它是一種基於推送的方式,透過網路傳輸資訊。

但是,如果對等體與網路斷開連線並在以後重新連線,則它將錯過廣播過程。為了趕上網路的其餘部分,它需要一個基於拉取的機制來請求它丟失的資料。

在Hyperledger Fabric中,對等體定期相互交換成員資格資料(對等體列表,活動和死亡)和分類帳資料(交易塊)。這允許對等體保持最新,即使它們錯過了“活著”訊息或新交易塊的廣播。

結論
Hyperledger Fabric使用對等體之間的Goosip作為容錯和可擴充套件機制,以保持區塊鏈分類賬的所有副本同步。它減少了排序者分發的負擔,只需要為每個組織的某個對等體提供新塊即可,並且它允許對等體在斷開連線後“趕上”當前狀態。

相關文章