0 導(dǎo)言
? ? ??在上一講《Hyperledger Fabric的邏輯架構(gòu)是什么樣的?》中,我們介紹了Fabric的邏輯架構(gòu),就是整個的技術(shù)組成部分。從應(yīng)用程序端來看,包括了SDK、API、事件,通過SDK、API、事件來對底層區(qū)塊鏈進行操作:包括身份管理、賬本管理、交易管理、智能合約的部署和調(diào)用,從底層區(qū)塊鏈這一端來看,對外提供了以下服務(wù):成員管理服務(wù)、共識服務(wù)、鏈碼服務(wù)、安全和密碼服務(wù)。fabric通過將各個部分分離成不同的模塊,做到可插拔性、靈活擴展性。
? ? ??通過上一講我們對fabric的邏輯架構(gòu)有了一個整體的認識。接下來我們來看看fabric節(jié)點間的網(wǎng)絡(luò)架構(gòu)是什么樣的?我們先來上一張圖:

? ? ??從圖中可以看出fabric包含以下節(jié)點:客戶端節(jié)點、CA節(jié)點、Peer節(jié)點、Orderer節(jié)點。我們下面來詳細介紹一下這些節(jié)點。
1 客戶端節(jié)點
? ? ??客戶端或應(yīng)用程序代表由最終用戶操作的實體,它必須連接到某一個Peer節(jié)點或者排序服務(wù)節(jié)點上與區(qū)塊鏈網(wǎng)絡(luò)進行通信??蛻舳讼虮硶?jié)點(Endorser Peer)提交交易提案(Proposal),當收集到足夠背書后,向排序服務(wù)節(jié)點廣播交易,進行排序,生成區(qū)塊。
2 CA節(jié)點
? ? ??CA節(jié)點是fabric的證書頒發(fā)節(jié)點(Certificate Authority),由服務(wù)器(fabric-ca-server)和客戶端(fabric-ca-client)組成。
? ? ??CA節(jié)點接收客戶端的注冊申請,返回注冊密碼用于登錄,以便獲取身份證書。在區(qū)塊鏈網(wǎng)絡(luò)上所有的操作都會驗證用戶的身份。
? ? ??CA節(jié)點是可選的,也可以用其他成熟的第三方CA頒發(fā)證書。
3 Peer節(jié)點
? ? ??從上圖中可以看出每個組織可以擁有一到多個Peer節(jié)點。每個Peer節(jié)點可以擔(dān)任如下多種角色:
- Endorser Peer(背書結(jié)點)
- Leader Peer(主節(jié)點)
- Committer Peer(記賬節(jié)點)
- Anchor Peer(錨節(jié)點)
注:每個Peer節(jié)點必定是一個記賬節(jié)點,除記賬節(jié)點外,它也可以擔(dān)任其它一到多種角色,即某個節(jié)點可以同時是記賬節(jié)點和背書節(jié)點,也可以同時是記賬節(jié)點、背書節(jié)點、主節(jié)點,錨節(jié)點。
3.1 Endorser Peer(背書結(jié)點)
? ? ??部分節(jié)點會執(zhí)行交易并對結(jié)果進行簽名背書,充當背書節(jié)點的角色 。
? ? ??所謂背書(Endorsement),就是指特定peer執(zhí)行交易并向生成交易提案( proposal )的客戶端應(yīng)用程序返回YES/NO響應(yīng)的過程。
? ? ??背書節(jié)點是動態(tài)的角色,是與具體鏈碼綁定的。每個鏈碼在實例化的時候都會設(shè)置背書策略(Endorsement policy),指定哪些節(jié)點對交易背書才有效。
? ? ??也只有在應(yīng)用程序向節(jié)點發(fā)起交易背書請求時才成為背書節(jié)點,其他時候是普通的記賬節(jié)點,只負責(zé)驗證交易并記賬。
3.2 Leader Peer(主節(jié)點)
? ? ??從圖中可以看出,主節(jié)點負責(zé)和Orderer排序服務(wù)節(jié)點通信,從排序服務(wù)節(jié)點處獲取最新的區(qū)塊并在組織內(nèi)部同步??梢詮娭圃O(shè)置,也可以選舉產(chǎn)生。
3.3 Committer Peer(記賬節(jié)點)
? ? ??負責(zé)驗證從排序服務(wù)節(jié)點接收的區(qū)塊里的交易,然后將塊提交(寫入/追加)到其通道賬本的副本。記賬節(jié)點還將每個塊中的每個交易標記為有效或無效。
3.4 Anchor Peer(錨節(jié)點)
? ? ??在一個通道( channel )上可以被所有其他peer發(fā)現(xiàn)的peer,通道上的每個成員都有一個Anchor Peer(或多個Anchor peer 來防止單點故障),允許屬于不同成員的peer發(fā)現(xiàn)通道上的所有現(xiàn)有peer。
4 Orderer(排序服務(wù)節(jié)點)
? ? ?排序服務(wù)節(jié)點接收包含背書簽名的交易,對未打包的交易進行排序生成區(qū)塊,廣播給Peer節(jié)點。
? ? ?排序服務(wù)提供的是原子廣播,保證同一個鏈上的節(jié)點為接收到機同的消息,并且有相同的邏輯順序。
? ? ?排序服務(wù)獨立于peer進程存在并且以先來先服務(wù)的方式對網(wǎng)絡(luò)上的所有信道進行排序交易。排序服務(wù)旨在支持超出現(xiàn)有的SOLO和Kafka品種的可插拔實現(xiàn)。排序服務(wù)是整個網(wǎng)絡(luò)的公共綁定; 它包含綁定到每個成員的加密身份材料。
5 總結(jié)
? ? ?Fabric系統(tǒng)是通過組織來劃分的,每個組織內(nèi)都包含承擔(dān)不同功能的Peer 節(jié)點,每個Peer節(jié)點又可以擔(dān)任多種角色。所有的組織共用一個統(tǒng)一的Orderer集群。因此在設(shè)計基于Hyperledger Fabric的系統(tǒng)時需要考慮組織之間的業(yè)務(wù)關(guān)系,以及內(nèi)部每個模塊之間的聯(lián)系,以此來進行統(tǒng)一的規(guī)劃。
6 參考資料
1.https://hyperledger-fabric.readthedocs.io/en/release-1.2/index.html
2.《深度探索區(qū)塊鏈:Hyperledger技術(shù)與應(yīng)用》作者:張增駿,董寧,朱軒彤,陳劍雄 著 出版社:機械工業(yè)出版社
3.《區(qū)塊鏈開發(fā)實戰(zhàn):Hyperledger Fabric關(guān)鍵技術(shù)與案例分析》作者:馮翔,劉濤,吳壽鶴,周廣益 著 出版社:機械工業(yè)出版社
? ? ??注意:本篇文章大部分內(nèi)容 來自《深度探索區(qū)塊鏈:Hyperledger技術(shù)與應(yīng)用》(作者:張增駿,董寧,朱軒彤,陳劍雄 著 出版社:機械工業(yè)出版社)這本書