目標
- 理解Hyperledger Fabric超級賬本的邏輯架構笆怠。
- 理解Hyperledger Fabric超級賬本的實際運行時架構极祸。
任務實現
進步非踌艋悖快。現在我們結合圖形,然后根據對應的解釋全面理解Hyperledger Fabric的架構。
2.1.1 比較抽象的邏輯架構
Fabric從1.X開始睛驳,在擴展性及安全性上面有了大大的提升,且新增了諸多的新特性:
多通道:支持多通道凭峡,提高隔離安全性。
可拔插的組件:支持共識組件决记、權限管理組件等可拔插功能摧冀。
賬本數據可被存儲為多種格式。
分化了Peer節(jié)點的多種角色霉涨,可以根據具體情況實現靈活部署
Hyperledger Fabric超級賬本整體邏輯架構如下圖所示:
Fabric四大核心組件:
Membership Services:成員管理保證了Fabric平臺訪問的安全性按价。提供了成員的注冊惭适、管理及審核功能笙瑟。
-
Blockchain Services:是區(qū)塊鏈的核心部分,為區(qū)塊鏈的主體功能提供了底層支撐癞志;包括共識管理往枷、分布式賬本實現、賬本的存儲以及網絡中各節(jié)點之間的通信實現凄杯。
- BlockChain:區(qū)塊之間以Hash連接為結構的交易日志错洁。peer從order service接收交易區(qū)塊k,并根據背書策略和并發(fā)沖突標記區(qū)塊上的交易是否有效戒突,然后將該區(qū)塊追加到peer文件系統(tǒng)中的Hash Chain上屯碴。
-
Transaction:交易有對鏈碼的部署或調用兩種操作類型:
- 部署交易:部署是請求在peer上啟動鏈碼容器;創(chuàng)建新的鏈碼并設置一個程序作為參數膊存。當一個部署交易執(zhí)行成功导而,表明鏈碼已被安裝到區(qū)塊鏈上。
- 調用交易:調用是從賬本中請求讀寫集隔崎。是在之前已部署鏈碼的情況下執(zhí)行一個操作今艺。調用交易將使用鏈碼提供的一個函數。當成功時爵卒,鏈碼執(zhí)行特定的函數對賬本數據進行操作(修改狀態(tài))虚缎,并返回操作結果。
-
Chaincode Services:提供了鏈碼的部署及運行時的所需環(huán)境钓株。
- Chaincode:是一個可以對賬本數據進行操作的可開發(fā)的組件程实牡;鏈碼被布署運行在一個安全的容器中陌僵;用戶可以通過調用鏈碼中的指定函數對賬本數據進行修改或讀取操作。
Event:為各組件之間提供異步通信提供了技術實現创坞。
2.1.2 實際中的運行時架構
實際運行時架構如下圖所示:
運行時架構圖中各項解釋如下:
APP:代表一個客戶端(CLI)或SDK拾弃,作用是創(chuàng)建交易并獲取到足夠的背書之后向Orderer排序服務節(jié)點提交交易請求(Peer與Orderer節(jié)點提供了gRPC遠程訪問接口,供客戶端調用)摆霉。
CA:負責對網絡中所有的證書進行管理(對Fabric網絡中的成員身份進行管理), 提供標準的PKI服務豪椿。
MSP(Member Service Provider):為客戶端和Peer提供證書的系統(tǒng)抽象組件。
Channel:將一個大的網絡分割成為不同的私有"子網"携栋。
-
通道的作用:通道提供一種通訊機制搭盾,將peers和orderer連接在一起,形成一個具有保密性的通訊鏈路(虛擬)婉支, 進行數據隔離鸯隅。
要加入通道的每個節(jié)點都必須擁有自己的通過成員服務提供商(MSP)獲得的身份標識。
Orderer:對客戶端提交的交易請求進行排序向挖,之后生成區(qū)塊廣播給通道內的所有peer節(jié)點蝌以。
Org1:代表聯盟中的某一個組織(一個聯盟中可以多個不同的組織組成)。
Peer:表示組織中的節(jié)點何之;Peer節(jié)點以區(qū)塊的形式從Orderer排序服務節(jié)點接收有序狀態(tài)更新跟畅,維護狀態(tài)和賬本。在Fabtic網絡環(huán)境中 Peer 節(jié)點可以劃分為如下角色:
Endorsing peer:根據指定的策略調用智能合約溶推,對結果進行背書徊件, 返回提案響應到客戶端。
Committing peer:驗證數據并保存至賬本中蒜危。
Anchor peer:跨組織通信虱痕。
-
Leading peer:作為組織內所有節(jié)點的的代表連接到Orderer排序服務節(jié)點, 將從排序服務節(jié)點接收到的批量區(qū)塊廣播給組織內的其它節(jié)點。
網絡中只有部分節(jié)點為背書節(jié)點辐赞; 網絡中所有Peer節(jié)點為賬本節(jié)點部翘。
Chaincode:鏈式代碼,簡稱鏈碼响委;運行在容器中新思,提供相應的API與賬本數據進行交互。
Ledger:是由排序服務構建的一個全部有序的交易哈希鏈塊晃酒,保存在所有的peer節(jié)點中表牢。賬本提供了在系統(tǒng)運行過程中發(fā)生的可驗證歷史,它包含所有成功的狀態(tài)更改(有效交易)和不成功的狀態(tài)更改(無效交易)贝次。
FAQ
-
應用程序或客戶端到底需要連接到哪些Peer節(jié)點崔兴?
只需要連接到背書節(jié)點即可。
-
背書節(jié)點怎么指定?
在實例化鏈碼時由背書策略指定敲茄。