Hyperledger Fabric菜鳥進階攻略》 —1.2 邁出第一步:搭建環境">《Hyperledger Fabric菜鳥進階攻略》 —1.2 邁出第一步:搭建環境
1110
2025-04-01
區塊鏈技術叢書
Hyperledger Fabric菜鳥進階攻略
黎躍春 韓小東 付金亮 編著
Preface 前 言
為什么要寫這本書
隨著跨行業區塊鏈技術的逐漸普及,區塊鏈技術成為應用程序開發或企業級應用解決方案的基礎,各機構、企業將區塊鏈、分布式賬本和分布式應用平臺的底層技術應用于更具有創新性的企業級應用的興趣也在增長,但無論是開發人員還是企業,在使用區塊鏈技術時都需要結合自身需求,根據不同的情況進行考慮。
從開發人員的角度思考,能夠支持在通用編程語言(如目前流行的Java、Python、Golang和Node.js等)中創建的智能合約的分布式賬本平臺,而不受限于特定的語言。這意味著大多數開發人員只需要熟練掌握一門編程語言就擁有開發智能合約所需的技能,并不需要額外的培訓來學習新的語言。
從企業的角度思考,通過其特定的功能與特性,能夠使平臺支持從政府、金融、公益事業、供應鏈物流到醫療保健等廣泛的行業用例,并且能夠保證應用的靈活性及可持續的擴展性。
其中,由Linux基金會主導并牽頭,物聯網、供應鏈、制造和科技等各行業的巨頭共同宣布了區塊鏈技術中第一個面向企業應用場景的開源分布式賬本平臺——Hyperledger(超級賬本)聯合項目,將區塊鏈技術引入聯盟鏈的應用場景中,為未來基于區塊鏈技術打造高效率的商業網絡打下基礎,為透明、公開、去中心化的企業級分布式賬本技術提供開源參考實現。
Hyperledger Fabric分布式超級賬本平臺技術基于其特點及優勢,吸引了一大批區塊鏈技術開發人員的加入,受到眾多企業及相應開發人員的關注。但區塊鏈技術涉及廣泛,相關學習資料匱乏,偏重于開發實戰方面的書籍更少。網絡上的相關技術內容缺乏系統性,內容零散,導致學習者付出的時間、精力及成本成倍增長。
這種情況阻礙了許多開發人員的學習腳步,甚至讓學習半途而廢。為了提高開發人員的學習效率,降低學習成本,快速掌握Hyperledger Fabric應用開發技術,特編寫了本書。
本書特色
本書是一本系統性講解Hyperledger Fabric平臺知識并側重介紹應用項目開發實戰的書籍,遵循實踐出真知的理念,通過大量動手實踐,循序漸進地介紹超級賬本技術及相關核心模塊。
本書的內容注重實用性及理論與實踐相結合,由淺入深地介紹了超級賬本技術原理,并詳細說明了Hyperledger Fabric的邏輯架構、運行時架構及各網絡節點角色的作用,深入介紹Hyperledger Fabric超級賬本的交易流程實現;通過網絡環境構建、鏈碼開發,逐步探索Hyperledger Fabric分布式超級賬本技術及其應用開發過程;最后通過項目實戰,著重介紹了相關技術點及開發流程、技巧,讓讀者熟練掌握分布式超級賬本平臺技術,并根據不同的應用場景開發基于區塊鏈平臺的企業級分布式應用。
讀者對象
區塊鏈應用開發人員;
區塊鏈技術愛好者;
超級賬本應用開發人員/架構師;
高校計算機及相關專業師生。
如何閱讀本書
本書分為4篇,共計13章內容。
基礎篇(第1~3章),著重講解Hyperledger Fabric環境搭建及架構設計,通過詳細分析并動手實踐的方式構建Hyperledger Fabric網絡環境。
第1章 本章從Hyperledger Fabric由來開始,詳細介紹了Hyperledger Fabric的框架、特點、環境搭建、快速調試方式。
第2章 本章從Hyperledger Fabric系統邏輯架構設計開始,延伸到運行時網絡結構、節點角色與相關的概念,以及Hyperledger Fabric對網絡交易處理流程的詳細解析。
第3章 本章通過對主要配置文件的分析與講解,一步一步地完成構建Hyperledger Fabric網絡環境所需組件的詳細實現過程。
鏈碼篇(第4~5章),詳細介紹了鏈碼,幫助讀者熟練掌握鏈碼的開發并進行相應的測試。
第4章 本章詳細介紹了鏈碼的概念與分類,并實現鏈碼生命周期管理及兩種測試。
第5章 本章側重講解鏈碼的開發方式、開發過程、鏈碼的主要API,并通過鏈碼開發示例掌握鏈碼對賬本數據狀態操作的核心API。
核心篇(第6~9章),著重講解Hyperledger Fabric核心模塊,如MSP成員管理、共識機制、數據分發機制,深入了解Hyperledger Fabric分布式賬本狀態數據的存儲方式及過程。
第6章 本章主要講解與成員管理服務相關的內容,包括MSP成員驗證、結構組成、具體應用,并詳細說明了Hyperledger Fabric CA服務器的搭建及客戶端的具體使用方法。
第7章 本章側重于Hyperledger Fabric共識機制的實現,包括基于Kafka實現排序服務的具體實踐操作,最后介紹了多鏈及多通道的概念與具體實現。
第8章 本章首先介紹了Gossip協議的內容,以圖文并茂的方式說明了Gossip數據傳輸實現方式,最后詳細說明了Hyperledger Fabric中基于Gossip協議實現的P2P數據分發與數據同步機制。
第9章 本章詳細介紹了分布式賬本的數據組成結構及數據的存儲實現方式。
項目實戰篇(第10~13章),以循序漸進的方式逐步講解如何使用Fabric-SDK-Go開發基于Hyperledger Fabric的區塊鏈應用程序;從業務邏輯分析、項目架構設計等方面入手,掌握區塊鏈應用程序的整體開發流程及相關技巧。
第10章 本章側重于項目開發前期的環境準備工作,包含操作系統環境、工具及配置,以及網絡環境的構建、配置。
第11章 本章介紹如何使用Fabric-SDK-Go進行區塊鏈應用開發,包括鏈碼開發、如何使用Fabric-SDK-Go調用鏈碼、應用程序自動化部署與快速測試。
第12章 為了方便用戶的使用,本章在第10、11章的基礎之上著重介紹實現基于Web的區塊鏈應用程序,主要介紹了Web應用的MVC架構及其具體實現。
第13章 本章通過一個精簡的區塊鏈學歷信息征信系統,介紹了基于Hyperledger Fabric平臺的區塊鏈應用程序的整體開發流程與實現方式。讀者可以通過本章全方位掌握區塊鏈應用開發的相關知識,進而可以直接從事基于Hyperledger Fabric的區塊鏈開發工作。
勘誤和支持
由于筆者水平及經驗所限,編寫時間倉促,書中難免出現疏漏或描述不準確之處,懇請讀者提出并指正。如果您有更多的寶貴意見,可以直接發送E-mail至hanxiaodong@cldy.org聯系筆者,期待能夠得到大家的真摯反饋,讓我們在技術之路上一起互勉共進。
致謝
感謝機械工業出版社華章公司的高婧雅編輯,初寫書稿時,筆者是從技術人員的角度出發的,正是高婧雅編輯真正從讀者的角度出發提出了相關的建議并給予相應幫助,筆者才完成了本書的書稿。
特別致謝
在此,特別感謝家人、同事及眾多技術愛好者的鼓勵與支持,尤其是家人,編寫此書的過程中,我的愛人與女兒從來沒有任何抱怨,可以讓我安心地思考及寫作。
韓小東
Contents 目 錄
前 言
基 礎 篇
第1章 Hyperledger Fabric認知與環境搭建? 3
1.1 全面認識超級賬本? 3
1.1.1???? 超級賬本由來? 3
1.1.2???? 超級賬本分類? 4
1.1.3???? 認識Hyperledger Fabric? 4
1.2 邁出第一步:搭建環境? 5
1.2.1???? 操作系統? 5
1.2.2???? 安裝所需工具? 5
1.3 安裝Hyperledger Fabric? 10
1.3.1???? 下載fabric-samples與二進制文件? 10
1.3.2???? Hyperledger Fabric源碼方式編譯? 12
1.4 測試Hyperledger Fabric網絡環境? 17
1.4.1???? 測試Hyperledger Fabric環境? 18
1.4.2???? 構建你的第一個Hyperledger Fabric網絡? 18
第2章 深入淺出介紹Hyperledger Fabric架構設計? 21
2.1 透視邏輯架構與運行時架構? 21
2.1.1???? 邏輯架構? 21
2.1.2???? 運行時架構? 22
2.2 Hyperledger Fabric交易流程分析? 24
2.3 Hyperledger Fabric核心配置文件詳解? 28
2.3.1???? core.yaml詳解? 29
2.3.2???? orderer.yaml詳解? 36
第3章 搭建自己的Hyperledger Fabric網絡? 39
3.1 生成組織結構與身份證書? 39
3.1.1???? 與組織結構及身份證書關聯的配置文件? 39
3.1.2???? 如何生成組織結構及身份證書? 40
3.2 不可或缺的配置文件? 45
3.2.1???? conf?igtx.yaml配置文件指定的核心內容? 45
3.2.2???? Orderer服務啟動初始區塊的創建? 47
3.2.3???? 創建必需的應用通道交易配置文件? 48
3.2.4???? 生成錨節點更新配置文件? 49
3.3 一分鐘啟動分布式網絡? 49
3.3.1???? 網絡服務的配置? 50
3.3.2???? 關聯的docker-compose-base.yaml? 52
3.3.3???? 又被關聯的peer-base.yaml? 54
3.3.4???? 啟動網絡? 55
3.4 以最快的方式完成應用通道的創建? 57
3.4.1???? 創建應用通道? 57
3.4.2???? 將節點加入應用通道? 58
3.4.3???? 更新錨節點? 59
鏈 碼 篇
第4章 全方位認識鏈碼:鏈碼管理與測試? 63
4.1 初識鏈碼:鏈碼的概念與原理? 63
4.2 鏈碼使用:安裝、實例化、查詢與調用? 65
4.2.1???? 安裝鏈碼? 66
4.2.2???? 實例化鏈碼? 66
4.2.3???? 查詢鏈碼? 67
4.2.4???? 調用鏈碼? 67
4.3 鏈碼的其他操作:實現鏈碼的打包與升級? 69
4.3.1???? 鏈碼的打包與簽名? 69
4.3.2???? 鏈碼的升級? 70
4.4 開發模式下的測試:簡化鏈碼的測試過程? 72
4.4.1???? 啟動網絡? 72
4.4.2???? 構建并啟動鏈碼? 73
4.4.3???? 調用鏈碼? 74
第5章 鏈碼開發與實踐? 77
5.1 如何利用Fabric提供的接口編寫鏈碼? 77
5.1.1???? 鏈碼接口? 78
5.1.2???? 必要結構? 78
5.2 如何操作賬本數據:熟悉鏈碼相關API? 79
5.3 鏈碼實現的Hello World? 81
5.3.1???? 鏈碼開發? 82
5.3.2???? 鏈碼測試? 84
5.4 動手編碼一:鏈碼實現資產管理? 85
5.4.1???? 資產鏈碼開發? 85
5.4.2???? 鏈碼測試? 88
5.5 動手編碼二:鏈碼實現轉賬? 89
5.5.1???? 轉賬鏈碼開發? 89
5.5.2???? 鏈碼測試? 97
核 心 篇
第6章 MSP成員管理與Hyperledger Fabric CA服務實現? 101
6.1 走進MSP? 101
6.1.1???? MSP的定義與作用? 101
6.1.2???? MSP的組成結構? 102
6.1.3???? MSP應用? 103
6.2 認識與安裝Hyperledger Fabric CA? 105
6.3 啟動Hyperledger Fabric CA? 107
6.3.1???? 初始化? 107
6.3.2???? 快速啟動? 108
6.3.3???? 配置數據庫? 109
6.3.4???? 配置LDAP? 110
6.4 應用Hyperledger Fabric CA的客戶端命令? 111
6.4.1???? Hyperledger Fabric CA客戶端命令? 112
6.4.2???? 查看AKI和序列號? 116
第7章 白話Hyperledger Fabric共識機制? 118
7.1 Hyperledger Fabric中的共識實現? 118
7.1.1???? 共識算法的屬性和類型? 118
7.1.2???? Hyperledger Fabric中的共識實現? 120
7.2 基于Kafka排序服務的實現? 121
7.2.1???? 指定Kafka實現排序服務? 122
7.2.2???? 配置網絡環境? 123
7.2.3???? 啟動網絡? 129
7.2.4???? 測試Kafka排序服務? 131
7.3 多鏈及多通道實現? 133
7.3.1???? 多鏈及多通道? 133
7.3.2???? 應用多通道? 135
第8章 Hyperledger Fabric中數據分發機制的實現? 139
8.1 認識Gossip? 139
8.1.1???? Gossip協議? 139
8.1.2???? Gossip數據傳輸? 140
8.2 Hyperledger Fabric中數據同步的實現? 141
8.2.1???? Hyperledger Fabric中的Gossip? 141
8.2.2???? Hyperledger Fabric的數據同步實現? 144
第9章 Hyperledger Fabric分布式賬本數據存儲? 147
9.1 交易數據的存儲? 147
9.1.1???? 區塊鏈賬本數據? 147
9.1.2???? 數據存儲? 150
9.2 Hyperledger Fabric狀態數據庫? 154
9.2.1???? CouchDB數據庫簡介? 154
9.2.2???? CouchDB在Hyperledger Fabric中的具體實現? 154
9.2.3???? 測試CouchDB? 159
項目實戰篇
第10章 Web項目實戰之環境搭建? 165
10.1 環境準備清單? 165
10.2 搭建網絡環境? 166
10.2.1?? 網絡環境準備? 166
10.2.2?? 配置docker-compose.yml文件? 167
10.2.3?? 測試網絡環境? 171
第11章 Web項目實戰之使用Fabric-SDK-Go? 173
11.1 創建Fabric-SDK對象并建立通道? 173
11.1.1?? 配置Fabric-SDK? 173
11.1.2?? 定義所需結構體? 177
11.1.3?? 創建Fabric-SDK? 178
11.1.4?? 測試創建通道? 179
11.2 滿足依賴? 180
11.2.1?? 安裝dep工具? 180
11.2.2?? 下載所需依賴 ?181
11.2.3?? 測試Fabric-SDK? 181
11.2.4?? 關閉網絡并清理環境? 182
11.2.5?? 利用Makef?ile簡化步驟? 182
11.3 鏈碼實現? 184
11.4 使用Fabric-SDK實現鏈碼的自動部署? 186
11.4.1?? 添加結構體成員? 186
11.4.2?? 使用Fabric-SDK安裝及實例化鏈碼? 187
11.4.3?? 在main中調用? 188
11.4.4?? 測試? 188
第12章 Web項目實戰之Web應用實現? 190
12.1 理解MVC,合理地設計應用? 190
12.2 調用鏈碼:設計業務層? 192
12.2.1?? 事件處理? 192
12.2.2?? 調用鏈碼添加狀態? 193
12.2.3?? 調用鏈碼查詢狀態? 194
12.3 MVC架構應用實現? 196
第13章 實戰:構建學歷信息征信系統? 201
13.1 需求分析與架構設計? 201
13.1.1?? 需求分析? 201
13.1.2?? 架構設計? 202
13.1.3?? 數據模型設計? 202
13.1.4?? 網絡環境? 203
13.1.5?? 測試網絡環境? 205
13.2 SDK與鏈碼的實現? 205
13.2.1?? 創建conf?ig.yaml文件? 205
13.2.2?? 聲明結構體? 205
13.2.3?? 編寫鏈碼? 206
13.2.4?? Fabric-SDK-Go實現? 211
13.2.5?? 安裝依賴? 214
13.2.6?? 鏈碼自動部署? 216
13.3 業務層實現? 218
13.3.1?? 事件處理? 218
13.3.2?? 業務層調用鏈碼實現添加狀態? 219
13.3.3?? 根據證書編號與姓名查詢狀態? 221
13.3.4?? 根據身份證號碼查詢狀態? 223
13.3.5?? 修改/添加信息狀態? 224
13.4 控制層實現? 226
13.4.1?? 設置系統用戶? 226
13.4.2?? 處理響應? 228
13.4.3?? 處理請求? 228
13.4.4?? 指定路由? 228
13.5 視圖層實現? 228
13.5.1?? 目錄結構? 228
13.5.2?? 相關源碼實現? 229
13.5.3?? 照片上傳? 230
13.6 項目交互演示? 231
13.6.1?? 啟動Web服務? 231
13.6.2?? 訪問頁面? 232
附錄 詞匯術語表? 235
區塊鏈 分布式 網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。