ibm區塊鏈fabric
Ⅰ 區塊鏈fabric什麼
超級賬本之——Fabric目前超級賬本下面有5個並行的項目,Fabric屬於其中較為成熟的一個。這個項目由,來自28個不同組織的159名工程師參與開發。
在Fabric的區塊鏈網路中,有四類節點:MSP,OrderingNode,EndorsingPeer,CommttingPeer
MSP(MembershipServiceProvider),這類節點主管區塊鏈網路中其他的節點的授權,准入,踢除。通過給不同節點頒發證書的方式,授予不同類型的節點相應的許可權。
中文可以稱作排序節點。通常在一個網路中至少有一個或多個排序節點,這類節點負責按照指定的演算法,將交易進行排序,並返回給CommittingPeer。其並不關心具體的交易細節。
這類節點的主要負責接收交易請求,驗證這筆交易之後,並做一些預處理之後,並將簽名後的數據傳回給客戶端。
這類節點做是區塊鏈網路中的全節點,它們需要記錄完整的區塊信息,並且驗證每筆交易的正確性,是最終將交易打包進區塊鏈的節點。
結合下面這種圖,看看一筆交易的上鏈過程:
1,首先從客戶端發起一筆交易提交到EndorsingPeer,進行預處理。
2,預處理通過之後,將簽名數據,傳回給客戶端。
3,客戶端發起請求,將收到的簽名數據傳給OrderingNode。
4,OrderingNode對交易進行排序,然後傳給CommittingPeer。
5,CommittingPeer這里將排序好的交易進行驗證,並打包,通過指定的共識演算法達成一致,形成新的區塊。
6,最後將交易結果返回給客戶端。
6,中間過程的每一步,都伴隨著許可權的驗證。會根據MSP頒發的證書,進行判斷。
區塊鏈的定義是什麼?區塊鏈有兩個含義:
1、區塊鏈(Blockchain)是分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學演算法。
2、區塊鏈是比特幣的底層技術,像一個資料庫賬本,記載所有的交易記錄。這項技術也因其安全、便捷的特性逐漸得到了銀行與金融業的關注。
狹義來講,區塊鏈是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構,並以密碼學方式保證的不可篡改和不可偽造的分布式賬本。
廣義來講,區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分布式節點共識演算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算方式。
10000mm的fabric是什麼概念基本概念。10000mm的fabric是基本概念,fabric基本概念首先fabric是由IBM貢獻的超級賬本框架。它是一個利用現有成熟的技術來組合而成的一個區塊鏈技術的實現。它是一種允許可插拔實現各種功能的的模塊化架構。
區塊鏈是什麼意思?區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。
它本質上是一個去中心化的資料庫,同時作為比特幣的底層技術,是一串使用密碼學方法相關聯產生的數據塊。
在區塊鏈網路中,我們發出的數據請求,會根據密碼學原理被加密成為一串接受者完全看不懂的字元。這種加密方式的背後是哈希演算法在支持。
架構模型
一般說來,區塊鏈系統由數據層、網路層、共識層、激勵層、合約層和應用層組成。其中,數據層封裝了底層數據區塊以及相關的數據加密和時間戳等基礎數據和基本演算法;網路層則包括分布式組網機制、數據傳播機制和數據驗證機制等。
共識層主要封裝網路節點的各類共識演算法;激勵層將經濟因素集成到區塊鏈技術體系中來,主要包括經濟激勵的發行機制和分配機制等;合約層主要封裝各類腳本、演算法和智能合約,是區塊鏈可編程特性的基礎。
淺析FabricPeer節點HyperledgerFabric,也稱之為超級賬本,是由IBM發起,後成為Linux基金會Hyperledger中的區塊鏈項目之一。
Fabric是一個提供分布式賬本解決方案的平台,底層的賬本數據存儲使用了區塊鏈。區塊鏈平台通常可以分為公有鏈、聯盟鏈和私有鏈。公有鏈典型的代表是比特幣這些公開的區塊鏈網路,誰都可以加入到這個網路中。聯盟鏈則有準入機制,無法隨意加入到網路中,聯盟鏈的典型例子就是Fabric。
Fabric不需要發幣來激勵參與方,也不需要挖礦來防止有人作惡,所以Fabric有著更好的性能。在Fabric網路中,也有著諸多不同類型的節點來組成網路。其中Peer節點承載著賬本和智能合約,是整個區塊鏈網路的基礎。在這篇文章中,會詳細分析Peer的結構及其運行方式。
在本文中,假設讀者已經了解區塊鏈、智能合約等概念。
本文基於Fabric1.4LTS。
區塊鏈網路是一個分布式的網路,Fabric也是如此,由於Fabric是聯盟鏈,需要准入機制,所以在網路結構上會復雜很多,下面是一個簡化的Fabric網路:
各個元素的含義如下:
對於Fabric網路,外部的用戶需要通過客戶端應用,也就是圖中的A1、A2或者A3來訪問網路,客戶端應用需要通過CA證書表明自己的身份,這樣才能訪問到Fabric網路中有許可權訪問的部分。
在上面的網路中,共有四個組織,R1、R2、R3和R4。其中R4是整個Fabric網路的創建者,網路是根據NC4配置的。
在Fabric網路中,不同的組織可以組成聯盟,不同的聯盟之間數據通過Channel來隔離。Channel中的數據只有該聯盟中的組織才能訪問,每一個新的Channel都可以認為是一條新的鏈。與其他的區塊鏈網路中通常只有一條鏈不一樣,Fabric可以通過Channel在網路中快速的搭建出一個新的區塊鏈。
上面R1和R2組成了一個聯盟,在C1上交易。R2同時又和R3組成了另外一個聯盟,在C2上交易。R1和R2在C1上交易時,對R3是不可見的,R2和R3在C2上交易時,對R1是不可見的。Channel機制提供了很好的隱私保護能力。
Orderer節點是整個Fabric網路共有的,用來為所有的交易排序、打包。比如上面網路中O4節點。本文不會對Orderer節點進行詳細說明,可以把這個功能理解為比特幣網路中的挖礦過程。
Peer節點表示網路中的節點,通常一個Peer就表示一個組織,Peer是整個區塊鏈網路的基礎,是智能合約和賬本的載體,Peer也是本文討論的重點。
一個Peer節點可以承載多套賬本和智能合約,比如P2節點,既維護了C1的賬本和智能合約,也維護了C2的賬本和智能合約。
為了可以更深入了解Peer節點的作用,先了解一下Fabric整體的交易流程。整體的交易流程圖如下:
Peer節點按照功能來分可以分為背書節點和記賬節點。
客戶端會提交交易請求到背書節點,背書節點開始模擬執行交易,在模擬執行之後,背書節點並不會去更新賬本數據,而是把這個交易進行加密和簽名,然後返回給客戶端。
客戶端收到這個響應之後就會把響應提交到Orderer節點,Orderer節點會對這些交易進行排序,並打包成區塊,然後分發到記賬節點,記賬節點就會對交易進行驗證,驗證結束之後,就會把交易記錄到賬本裡面。
一筆交易是否能成功是根據背書策略來指定的,每一個智能合約都會指定一個背書策略。
Peer節點代表著聯盟鏈中的各個組織,區塊鏈網路也是由Peer節點來組成的,而且也是賬本和智能合約的載體。
通過對上面交易過程的了解可以知道,Peer節點是主要的參與方。如果用戶想要訪問賬本資源,都必須要和peer節點進行交互。在一個Peer節點中,可以同時維護多個賬本,這些賬本屬於不同的Channel。每個Peer節點都會維護一套冗餘賬本,這樣就避免了單點故障。
Peer節點根據在交易中的不同角色,可以分成背書節點(Endorser)和記賬節點(Committer),背書節點會對交易進行模擬執行,記賬節點才會真正將數據存儲到賬本中。
賬本可以分成兩個部分,一部分是區塊鏈,另一部分是CurrentState,也被稱之為WorldState。
區塊鏈上只能追加,不能對過去的數據進行修改,鏈上也包含兩部分信息,一部分是通道的配置信息,另一部分是不可修改,序列化的記錄。每一個區塊記錄前一個區塊的信息,然後連成鏈,如下圖所示:
第一個區塊被稱之為genesisblock,其中不存儲交易信息。每個區塊可以被分為區塊頭、區塊數據和區塊元數據。區塊頭中存儲著當前區塊的區塊號、當前區塊的hash值和上一個區塊的hash值,這樣才能把所有的區塊連接起來。區塊數據中包含了交易數據。區塊元數據中則包括了區塊寫入的時間、寫入人及簽名。
其中每一筆交易的結構如下,在Header中,包含了ChainCode的名稱、版本信息。Signature就是交易發起用戶的簽名。Proposal中主要是一些參數。Response中是智能合約執行的結果。Endorsements中是背書結果返回的結果。
WorldState中維護了賬本的當前狀態,數據以Key-Value的形式存儲,可以快速查詢和修改,每一次對WorldState的修改都會被記錄到區塊鏈中。WorldState中的數據需要依賴外部的存儲,通常使用LevelDB或者CouchDB。
區塊鏈和WorldState組成了一個完整的賬本,WorldState保證的業務數據的靈活變化,而區塊鏈則保證了所有的修改是可追溯和不可篡改的。
在交易完成之後,數據已經寫入賬本,就需要將這些數據同步到其他的Peer,Fabric中使用的是Gossip協議。Gossip也是Channel隔離的,只會在Channel中的Peer中廣播和同步賬本數據。
智能合約需要安裝到Peer節點上,智能合約是訪問賬本的唯一方式。智能合約可以通過Go、Java等變成語言進行編寫。
智能合約編寫完成之後,需要打包到ChainCode中,每個ChainCode中可以包含多個智能合約。ChainCode需要安裝,ChainCode需要安裝到Peer節點上。安裝好了之後,ChainCode需要在Channel上實例化,實例化的時候需要指定背書策略。
智能合約在實例化之後就可以用來與賬本進行交互了,流程圖如下:
用戶編寫並部署實例化智能合約之後,就可以通過客戶端應用程序來向智能合約提交請求,智能合約會對WorldState中數據進行get、put或者delete。其中get操作直接從WorldState中讀取交易對象當前的狀態信息,不會去區塊鏈上寫入信息,但put和delete操作除了修改WorldState,還會去區塊鏈中寫入一條交易信息,且交易信息不能修改。
區塊鏈上的信息可以通過智能合約訪問,也可以在客戶端應用通過API直接訪問。
Event是客戶端應用和Fabric網路交互的一種方式,客戶端應用可以訂閱Event,當Event發生時,客戶端應用就會接受到消息。
事件源可以兩類,一類是智能合約發出的Event,另一類是賬本變更觸發的Event。用戶可以從Event中獲取到交易的信息,比如區塊高度等信息。
在這篇文章中,首先介紹了Fabric整體的網路架構,通過對Fabric交易流程的分析,討論了peer節點在交易中的作用,然後詳細分析了peer節點所維護的賬本和智能合約,並分析了peer節點維護賬本以及peer節點執行智能合約的流程。
文/Rayjun
[1]
[2]
[3]
區塊鏈-什麼是區塊鏈?金點幣訊能讀懂區塊鏈?區塊鏈-什麼是區塊鏈?金點幣訊能讀懂區塊鏈?
區塊先鋒動畫視頻帶你了解什麼是區塊鏈,簡單易懂
什麼是區塊鏈,卯貝屬於區塊鏈?
答:卯貝不是屬於區塊鏈,只是運用了區塊鏈的技術,區塊鏈的特性就是每件發生的事物都會被記錄,不得刪除更改。
區塊鏈,什麼是區塊
區塊鏈全面解讀
一說起區塊鏈,人們總是拿它與比特幣相提並論。2008年10月31日,一名叫「中本聰」的人在一個密碼學郵件群組中發出電子郵件,宣稱,「我一直在研究一個新的電子現金系統,這完全是點對點的,無需任何可信的第三方。」他推出了一個以比特幣為交易貨幣的新體系。
什麼是區塊鏈技術?什麼叫區塊鏈?
區塊鏈是一種分布式共享記賬的技術,它要做的事情就是讓參與的各方能夠在技術層面建立信任關系。
區塊鏈可以大致分成兩個層面,一是做區塊鏈底層技術;二是做區塊鏈上層應用,即基於區塊鏈的改造、優化或者創新應用。
區塊鏈的核心意義到底是什麼,我們的理解是,區塊鏈最核心的意義是參與方之間建立數據信用,通過單方面的對抗,在明確規定下打造單方面的生態共同保障完整機會,這是一個體系,這種建立可以結束沒有區塊鏈之前的問題,沒有區塊鏈之前,在數據共享的時候是無法做到有新的共享,即使做定向也只是給你一個介面,區塊鏈有了以後,讓參與方是實現信用的共享。
區塊鏈的底層平台有哪些?
答:主要有一下幾類:
1、比特幣。是最早的區塊鏈開發便是基於比特幣的區塊鏈網路進行開發了,由於比特幣是全球最廣泛使用和真正意義的去中心化,就區塊鏈應用來說,比特幣就是世上最強大的錨,擁有最大的權威性。
2、以太坊。可以說除了比特幣外,以太坊目前在區塊鏈平台是最吸引眼球的。以太坊是一個圖靈完備的區塊鏈一站式開發平台,採用多種編程語言實現協議,採用Go語言寫的客戶端作為默認客戶端(即與以太坊網路交互的方法,支持其他多種語言的客戶端)。
3、IBMHyperLedger。又叫fabric,他的目標是打造成一個由全社會來共同維護的一個超級賬本,fabric源於IBM,初衷為了服務於工業生產,IBM將44,000行代碼開源,是了不起的貢獻,讓我們可以有機會如此近的去探究區別於比特幣的區塊鏈的原理。
4、LISK。是新一代的區塊鏈平台,允許JavaScript(又是Javascript技術,工程師們注意了)的開發和基於分布的分散的應用程序使用一個易於使用的,功能齊全的生態區塊鏈系統。
5、網錄區塊鏈平台。是網錄區塊鏈底層技術的研發成果和能夠進行商業交付的基礎平台,網錄區塊鏈平台除了服務網錄公鏈外,也是網錄為客戶打造私有鏈和聯盟鏈的基礎平台。
什麼是區塊鏈?什麼是數字貨幣的區塊鏈?
狹義來講,區塊鏈是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構,並以密碼學方式保證的不可篡改和不可偽造的分布式賬本。廣義來講,區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分布式節點共識演算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算範式。
現在,主流的數字貨幣基本上都是基於區塊鏈技術開發的。區塊鏈是數字貨幣的底層技術。國內的茶本位數字貨幣普銀就是基於區塊鏈技術開發的。
什麼是區塊鏈
區塊鏈的本質是一種去中心化的記賬系統,比特幣是這個系統上承載的「以數字形式存在」的貨幣。區塊鏈是比特幣背後的一套由信用記錄和信用記錄的清算構成的體系。
區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學演算法[1]。
區塊鏈(Blockchain)是比特幣的一個重要概念,火幣網聯合清華大學五道口金融學院互聯網金融實驗室、新浪科技發布的《2014—2016全球比特幣發展研究報告》提到區塊鏈是比特幣的底層技術和基礎架構[2]。它本質上是一個去中心化的資料庫,同時作為比特幣的底層技術。區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊
區塊鏈的進化方式是:
?區塊鏈1.0——數字貨幣
?區塊鏈2.0——數字資產與智能合約
?區塊鏈3.0——IFMChain,區塊鏈正式鏈接移動終端
Ⅱ 淺析 Fabric Peer 節點
Hyperledger Fabric,也稱之為超級賬本,是由 IBM 發起,後成為 Linux 基金會 Hyperledger 中的區塊鏈項目之一。
Fabric 是一個提供分布式賬本解決方案的平台,底層的賬本數據存儲使用了區塊鏈。區塊鏈平台通常可以分為公有鏈、聯盟鏈和私有鏈。公有鏈典型的代表是比特幣這些公開的區塊鏈網路,誰都可以加入到這個網路中。聯盟鏈則有準入機制,無法隨意加入到網路中,聯盟鏈的典型例子就是 Fabric。
Fabric 不需要發幣來激勵參與方,也不需要挖礦來防止有人作惡,所以 Fabric 有著更好的性能。在Fabric 網路中,也有著諸多不同類型的節點來組成網路。其中 Peer 節點承載著賬本和智能合約,是整個區塊鏈網路的基礎。在這篇文章中,會詳細分析 Peer 的結構及其運行方式。
在本文中,假設讀者已經了解區塊鏈、智能合約等概念。
本文基於 Fabric1.4 LTS。
區塊鏈網路是一個分布式的網路,Fabric 也是如此,由於 Fabric 是聯盟鏈,需要准入機制,所以在網路結構上會復雜很多,下面是一個簡化的 Fabric 網路:
各個元素的含義如下:
對於 Fabric 網路,外部的用戶需要通過客戶端應用,也就是圖中的 A1、A2 或者 A3 來訪問網路,客戶端應用需要通過 CA 證書表明自己的身份,這樣才能訪問到 Fabric 網路中有許可權訪問的部分。
在上面的網路中,共有四個組織,R1、R2、R3 和 R4。其中 R4 是整個 Fabric 網路的創建者,網路是根據 NC4 配置的。
在 Fabric 網路中,不同的組織可以組成聯盟,不同的聯盟之間數據通過 Channel 來隔離。Channel 中的數據只有該聯盟中的組織才能訪問,每一個新的 Channel 都可以認為是一條新的鏈。與其他的區塊鏈網路中通常只有一條鏈不一樣,Fabric 可以通過 Channel 在網路中快速的搭建出一個新的區塊鏈。
上面 R1 和 R2 組成了一個聯盟,在 C1 上交易。R2 同時又和 R3 組成了另外一個聯盟,在 C2 上交易。R1 和 R2 在 C1 上交易時,對 R3 是不可見的,R2 和 R3 在 C2 上交易時,對 R1 是不可見的。Channel 機制提供了很好的隱私保護能力。
Orderer 節點是整個 Fabric 網路共有的,用來為所有的交易排序、打包。比如上面網路中 O4 節點。本文不會對 Orderer 節點進行詳細說明,可以把這個功能理解為比特幣網路中的挖礦過程。
Peer 節點表示網路中的節點,通常一個 Peer 就表示一個組織,Peer 是整個區塊鏈網路的基礎,是智能合約和賬本的載體,Peer 也是本文討論的重點。
一個 Peer 節點可以承載多套賬本和智能合約,比如 P2 節點,既維護了 C1 的賬本和智能合約,也維護了 C2 的賬本和智能合約。
為了可以更深入了解 Peer 節點的作用,先了解一下 Fabric 整體的交易流程。整體的交易流程圖如下:
Peer 節點按照功能來分可以分為 背書節點 和 記賬節點 。
客戶端會提交交易請求到背書節點,背書節點開始模擬執行交易,在模擬執行之後,背書節點並不會去更新賬本數據,而是把這個交易進行加密和簽名,然後返回給客戶端。
客戶端收到這個響應之後就會把響應提交到 Orderer 節點,Orderer 節點會對這些交易進行排序,並打包成區塊,然後分發到記賬節點,記賬節點就會對交易進行驗證,驗證結束之後,就會把交易記錄到賬本裡面。
一筆交易是否能成功是根據背書策略來指定的,每一個智能合約都會指定一個背書策略。
Peer 節點代表著聯盟鏈中的各個組織,區塊鏈網路也是由 Peer 節點來組成的,而且也是賬本和智能合約的載體。
通過對上面交易過程的了解可以知道,Peer 節點是主要的參與方。如果用戶想要訪問賬本資源,都必須要和 peer 節點進行交互。在一個 Peer 節點中,可以同時維護多個賬本,這些賬本屬於不同的 Channel 。每個 Peer 節點都會維護一套冗餘賬本,這樣就避免了單點故障。
Peer 節點根據在交易中的不同角色,可以分成背書節點(Endorser)和記賬節點(Committer),背書節點會對交易進行模擬執行,記賬節點才會真正將數據存儲到賬本中。
賬本可以分成兩個部分,一部分是區塊鏈,另一部分是 Current State,也被稱之為 World State。
區塊鏈上只能追加,不能對過去的數據進行修改,鏈上也包含兩部分信息,一部分是通道的配置信息,另一部分是不可修改,序列化的記錄。每一個區塊記錄前一個區塊的信息,然後連成鏈,如下圖所示:
第一個區塊被稱之為 genesis block,其中不存儲交易信息。每個區塊可以被分為 區塊頭 、 區塊數據 和 區塊元數據 。區塊頭中存儲著當前區塊的區塊號、當前區塊的 hash 值和上一個區塊的 hash 值,這樣才能把所有的區塊連接起來。區塊數據中包含了交易數據。區塊元數據中則包括了區塊寫入的時間、寫入人及簽名。
其中每一筆交易的結構如下,在 Header 中,包含了 ChainCode 的名稱、版本信息。Signature 就是交易發起用戶的簽名。Proposal 中主要是一些參數。Response 中是智能合約執行的結果。Endorsements 中是背書結果返回的結果。
WorldState中維護了賬本的當前狀態,數據以 Key-Value 的形式存儲,可以快速查詢和修改,每一次對 WorldState 的修改都會被記錄到區塊鏈中。WorldState 中的數據需要依賴外部的存儲,通常使用 LevelDB 或者 CouchDB。
區塊鏈和 WorldState 組成了一個完整的賬本,World State 保證的業務數據的靈活變化,而區塊鏈則保證了所有的修改是可追溯和不可篡改的。
在交易完成之後,數據已經寫入賬本,就需要將這些數據同步到其他的 Peer,Fabric 中使用的是 Gossip 協議。Gossip 也是 Channel 隔離的,只會在 Channel 中的 Peer 中廣播和同步賬本數據。
智能合約需要安裝到 Peer 節點上,智能合約是訪問賬本的唯一方式。智能合約可以通過 Go、Java 等變成語言進行編寫。
智能合約編寫完成之後,需要打包到 ChainCode 中,每個 ChainCode 中可以包含多個智能合約。ChainCode 需要安裝,ChainCode 需要安裝到 Peer 節點上。安裝好了之後,ChainCode 需要在 Channel 上實例化,實例化的時候需要指定背書策略。
智能合約在實例化之後就可以用來與賬本進行交互了,流程圖如下:
用戶編寫並部署實例化智能合約之後,就可以通過客戶端應用程序來向智能合約提交請求,智能合約會對 WorldState 中數據進行 get、put 或者 delete。其中 get 操作直接從 WorldState 中讀取交易對象當前的狀態信息,不會去區塊鏈上寫入信息,但 put 和 delete 操作除了修改 WorldState,還會去區塊鏈中寫入一條交易信息,且交易信息不能修改。
區塊鏈上的信息可以通過智能合約訪問,也可以在客戶端應用通過 API 直接訪問。
Event 是客戶端應用和 Fabric 網路交互的一種方式,客戶端應用可以訂閱 Event,當 Event 發生時,客戶端應用就會接受到消息。
事件源可以兩類,一類是智能合約發出的 Event,另一類是賬本變更觸發的 Event。用戶可以從 Event 中獲取到交易的信息,比如區塊高度等信息。
在這篇文章中,首先介紹了 Fabric 整體的網路架構,通過對 Fabric 交易流程的分析,討論了 peer 節點在交易中的作用,然後詳細分析了 peer 節點所維護的賬本和智能合約,並分析了 peer 節點維護賬本以及 peer 節點執行智能合約的流程。
文 / Rayjun
[1] https://hyperledger-fabric.readthedocs.io/zh_CN/release-1.4/whatis.html
[2] https://developer.ibm.com/zh/technologies/blockchain/series/os-academy-hyperledger-fabric/
[3] https://en.wikipedia.org/wiki/Gossip_protocol