聯盟鏈 Hyperledg Fabric架構簡述

2021-09-12 10:35:29 字數 2164 閱讀 8550

一直以來想再仔細的過一遍hyperledger fabric的基礎知識,可惜自身太懶惰便一拖再拖,今天終於想起這件事,心裡很慚愧,花了一段時間通過《區塊鏈技術高階與實戰》這本書和網上一些資料對fabric有了乙個大致了解,略作記錄,細節還需要之後再做補充。

fabric在架構上採用了模組化設計,主要由三個服務模組組成:成員服務、區塊鏈服務和鏈碼服務。

其中,fabric提供了api、sdk、cli三種介面,使用者可以用來對fabric進行操作管理。

成員服務為fabric的參與者提供網路上的身份管理、隱私、保密性和可審核性的服務。fabric通過pki體系完成成員服務。

成員服務實際上是乙個認證中心,負責為使用者提供證書認證和許可權管理的功能,對區塊鏈網路中的節點和交易進行管理和認證。 fabric當前採用的模型是基於可信的第三方機構,證書頒發機構(ca)簽發的證書。

通常,pki體系包含序號產生器構(ra)、證書頒布機構(ca)、證書資料庫和證書儲存實體。其中,ra負責對使用者進行身份驗證以及對資料、證書或其他用於支援使用者請求的材料進行合法性審查,還負責建立註冊所需的註冊憑證。ca根據ra建議頒發證書,證書由根ca直接或分層進行認證。成員服務詳細實體如下圖:(待補)

圖注: 在陶輝老師的部落格裡的1.4節對pki這部分有基礎的解釋,這裡不再細說。區塊鏈開源實現hyperledger fabric架構詳解 —— 陶輝

包含四個模組: 共識管理、分布式賬本、賬本儲存和p2p網路協議。前面提到過gossip協議,通過gossip完成節點發現和同步資料,使用grpc來做區塊鏈互動呼叫。底層使用protocol buffer實現結構資料序列化/反序列化。fabric網路中存在三類不同的節點:客戶端節點(client)、peer節點以及共識服務節點(orderer)。

client節點代表著終端使用者實體。必須連線到peer節點後才可以與區塊鏈進行通訊互動。能夠根據自己的選擇來連線到任意的peer節點上,建立交易和呼叫交易。

peer節點負責與共識服務節點通訊來進行世界狀態的維護和更新。可以額外擔當背書節點的角色,負責為交易背書。

orderer節點是共識服務的組成部分。負責為交易進行排序,確保最後所有的交易時以同樣的序列輸出,並提供送達保證服務的廣播通訊服務。

在v1.0版本中,fabric引入通道,支援多通道多鏈,即系統中可以存在多個鏈,不同通道的交易不會存在任何聯絡。在共識服務上支援多通道訊息傳遞,peer節點能夠基於應用訪問控制策略來訂閱任意數量的通道。應用程式可以指定peer節點的子集來架設乙個通道,這些peer節點組成相關者集合,只有這些peer節點可以接受包含相關交易的區塊,與其他交易隔離。

fabric共識服務保證了訊息通訊是序列化和可靠的。目前fabric提供了三種模式實現:solo、kafka和bft。

solo部署在單個節點上,是一種簡單時序服務,用於開發測試,只支援單通道和單鏈。

kafka是一種支援多通道分割槽的集群共識服務,容忍部分節點宕機失效,但不容忍惡意節點。基於zookeeper實現,要求失效節點不多於一半 n >= 2f + 1

bft是拜占庭容錯模式,允許存在惡意節點,要求失效節點不多於三分之一 n >= 3f + 1

注: 資料中只提到orderer節點聚集在一起形成共識服務。其實我認為peer節點的背書,也算作共識服務。

區塊鏈賬本儲存了所有的歷史交易和狀態改變記錄。在fabric中,每個通道都對應著乙個共享賬本,每個連線在賬本上的peer節點都能參與網路和檢視賬本資訊。每個peer節點都維護者乙份賬本的副本。

區塊鏈賬本以檔案系統的形式儲存於本地。賬本由兩部分組成:區塊鏈體和狀態資料庫。區塊鏈部分儲存著所有交易資訊,只可增查不可刪改。資料庫部分儲存著交易日之中所有變數的最新值,表示通道中所有變數鍵值對的最新值。

鏈碼呼叫執行交易來更改目前的狀態資料,鍵值對資料儲存於狀態資料庫中,預設的是leveldb,可以切換到couchdb或其他db。

注: 這裡的nosql選擇根據判斷寫遠大於讀,所以優先選用leveldb。

未完待續。。。

公有鏈 聯盟鏈 私有鏈區別

1 公有鏈 公有鏈是世界上任何人都可以訪問讀取的 任何人都可以傳送交易並且如果交易有效的話可以將之包括到區塊中的 以及任何人都能夠參與與其共識過程的區塊。優點 所有交易資料公開 透明,無法篡改。缺點 低吞吐量 tps 交易速度慢。2 聯盟鏈 代表 超級賬本 hyperledger 聯盟鏈即其共識過程...

聯盟鏈FISCO BCOS 搭建

本節以搭建單群組fisco bcos鏈為例操作。使用build chain.sh指令碼在本地搭建一條4節點的fisco bcos鏈,以ubuntu 16.04系統為例操作。準備環境 安裝依賴 build chain.sh指令碼依賴於openssl,curl,使用下面的指令安裝。centos將下面命令...

區塊鏈的公有鏈 私有鏈 聯盟鏈

區塊鏈分三個層級 私有鏈 聯盟鏈 公有鏈。三者的核心區別在於去中心化的程度。私有鏈是指寫入許可權僅限於乙個組織手中,一般是公司或組織內部自己使用。公有鏈則許可所有公眾使用者或機構通過網際網路使用。換言之,公有鏈的各個節點可自由加入和退出網路,並參與鏈上資料讀寫。網路中不存在任何中心化的服務端節點。聯...