HyperLedger Fabric是一個以模組化架構為基礎的分散式帳本解決方案平台,它擁有深度加密、便捷擴充、部署靈活及可抽換等特性,是目前非常流行的區塊鏈網路架構的實現方案。
這正是一本幫助更多的HyperLedger Fabric新手入門的書。
區塊鏈由於去中心化、開放性、自治性、資訊不可篡改及匿名性等特徵,受到廣泛關注,拋開炒作的虛擬貨幣專案,應用於企業聯盟鏈或直接架設私鏈的專案,採用HyperLedger Fabric 作為底層平台無疑是最佳選擇。
本書主要以HyperLedger Fabric 案例為引,層層深入,從單機單節點到Solo 多機網路拓樸再到Kafka 叢集部署,其中穿插文件說明加深讀者的了解。
不同於一些偏概念性的區塊鏈書籍,希望透過本書幫助讀者實現以HyperLedger Fabric 為基礎的區塊鏈實作,架構一個完整的區塊鏈專案。
適用:區塊鏈系統開發人員,或HyperLedger Fabric的新手。
作者簡介:
楊毅
阿里雲MVP,有多年的Android、iOS、Java後台服務及區塊鏈開發和架構經驗,並獲得多項專利。目前專注於區塊鏈應用、互聯網金融及行動互聯網等方向。
作者序
HyperLedger Fabric最初是由Digital Asset和IBM公司貢獻的、由Linux基金會主辦的超級帳本專案,它是一個目前非常流行並廣為人知的區塊鏈網路架構的實現方案。身為以模組化架構開發應用程式或解決方案的基礎,HyperLedger Fabric支援如共識和會員服務等隨插即用的元件。HyperLedger Fabric利用容器技術來執行稱為"chaincode"的智慧合約,該合約包含系統的應用程式邏輯。
✾ 為什麼寫作本書
區塊鏈由於去中心化、開放性、自治性、資訊不可篡改及匿名性等特徵而受到廣泛關注,且目前正處在上升勢態。拋開炒作的虛擬貨幣專案,應用於企業聯盟鏈或直接架設私鏈的專案,採用HyperLedger Fabric作為底層平台無疑是最好的選擇之一。
筆者從接觸HyperLedger Fabric專案以來,經歷了從0.6版本到1.1版本的數次迭代。因為早期中文資料缺乏,並且0.6版本到1.0版本是一個跨度非常大的迭代,導致早期的大部分部署和應用經驗失去作用,不得已再次從1.0版本開始從頭學習。當時中文資料極為有限,且大多數都是單篇翻譯或純粹的概念說明,導致筆者找不到入門的頭緒,只能不斷地從官方文件中汲取知識,終於成功架設以Kafka類型為基礎的叢集網路。
有了叢集的經驗,加深對HyperLedger Fabric整個網路交易流程的了解,並以此為基礎順利架設了以Fabric-SDK-Java為基礎的用戶端專案。
這時候,開始有了寫相關部落格的想法,並在部落格上發佈第一篇文,也是從零開始系列文章的第一篇,開始介紹自己的開發歷程和部署經驗,希望透過這樣的方式幫助更多的開發夥伴加入HyperLedger Fabric大家庭。再後來又建立了「區塊鏈學習分享」的微信訂閱號,也透過微信建立一個純技術討論分享的HyperLedger Fabric等區塊鏈相關交流群,並在這樣的機緣下結識電子工業出版社宋亞東老師,正式開始撰寫本書。
在寫書之前我一直在整理部落格的內容,為了真實地還原生產場景,還自費租賃了15台伺服器用於測試。在已有博文的基礎上,外加後來撰寫的新文章,順利地完成本書的撰寫工作,且書中的專案都依據所租賃的伺服器完成演練,每一步驟都是以真實情況和場景為基礎的操作。在此過程中,自己對HyperLedger Fabric也有了新的認識和了解。
本書主要以HyperLedger Fabric案例為引,層層深入,從單機單節點到Solo多機網路拓樸再到Kafka叢集部署,其中穿插文件說明加深讀者的了解。與一些偏概念性質的區塊鏈教學類書籍不同,希望透過本書幫助讀者實現以HyperLedger Fabric為基礎的區塊鏈實作。
✾ 本書主要內容
本書基於HyperLedger Fabric v1.1版本說明,總計10章,每章主要內容介紹如下:
■ 第1章是基本環境部署,包含內網和外網的不同方案,以及核心處理等。
■ 第2章是HyperLedger Fabric 及環境部署,先用文件說明Fabric相關的介紹和主要功能點,接著分析原始程式部署和映像檔處理方面的問題。
■ 第3章帶著讀者一步步了解官方的e2e_cli案例,並隨後對該案例進行分析。
■ 第4章開始手動部署單機多節點網路。
■ 第5章跟隨前章的腳步,手動部署Solo多機網路環境。
■ 第6章繼續深入,架設以Kafka為基礎的叢集網路。
■ 第7章以文件為主,注重說明如何撰寫智慧合約及有關智慧合約的用法。
■ 第8章詳細介紹CouchDB的使用,並推薦使用CouchDB。
■ 第9章說明在Fabric發佈1.0版本之後的對外用戶端呼叫方式、用戶端對SDK的使用和相關原始程式。
■ 第10章以一個簡單的案例做演練,在資料鏈上用到了智慧合約,對資料分析則提供另一種想法。
✾ 適合讀者群
這是一本基礎說明的書,是為了幫助更多的新手入門。所以,本書適合正在尋求HyperLedger Fabric入門的新人閱讀,也適合中、進階開發人員作為工具書參考。
在閱讀本書之前,讀者需要具備以下基礎知識:
■ 具有一定的Linux作業系統基本指令的常識。
■ 有Java/Go等物件導向語言的基礎,其中智慧合約用Go語言撰寫,SDK則用到Java。如果具這方面的基礎,將有助於閱讀本書。
HyperLedger Fabric最初是由Digital Asset和IBM公司貢獻的、由Linux基金會主辦的超級帳本專案,它是一個目前非常流行並廣為人知的區塊鏈網路架構的實現方案。身為以模組化架構開發應用程式或解決方案的基礎,HyperLedger Fabric支援如共識和會員服務等隨插即用的元件。HyperLedger Fabric利用容器技術來執行稱為"chaincode"的智慧合約,該合約包含系統的應用程式邏輯。
✾ 為什麼寫作本書
區塊鏈由於去中心化、開放性、自治性、資訊不可篡改及匿名性等特徵而受到廣泛關注,且目前正處在上升勢態。拋開炒作的虛擬貨幣專案,應用於企業聯盟鏈...
目錄
前言
CHAPTER 01 基本環境部署
1.1 環境整理
1.2 Docker安裝
1.3 Docker-Compose安裝
1.4 Go語言環境安裝
1.5 本章小結
CHAPTER 02 Fabric及環境部署
2.1 Fabric介紹
2.2 Fabric功能整理
2.3 Fabric組成模型
2.4 Fabric環境部署
2.5 本章小結
CHAPTER 03 End-2-End案例
3.1 平台特定檔案
3.2 執行e2e_cli
3.3 e2e_cli案例分析
3.4 本章小結
CHAPTER 04 部署單機多節點網路
4.1 產生憑證檔案
4.2 部署Orderer節點
4.3 部署peer0.org1節點
4.4 架設Fabric網路
4.5 初步接觸智慧合約
4.6 部署peer0.org2節點
4.7 本章小結
CHAPTER 05 Solo多機部署
5.1 網路拓撲
5.2 部署Orderer節點
5.3 部署peer0.org1節點
5.4 部署peer1.org1節點
5.5 部署peer0.org2節點
5.6 本章小結
CHAPTER 06 Kafka叢集部署
6.1 Fabric帳本
6.2 交易處理流程
6.3 讀寫集規則
6.4 Kafka叢集設定
6.5 啟動叢集
6.6 叢集環境測試
6.7 本章小結
CHAPTER 07 智慧合約
7.1 智慧合約概述
7.2 背書策略
7.3 使用智慧合約
7.4 撰寫智慧合約
7.5 加密智慧合約
7.6 系統合約外掛程式
7.7 智慧合約API
7.8 Peer節點與合智慧約
7.9 本章小結
CHAPTER 08 CouchDB
8.1 CouchDB介紹
8.2 啟動部署
8.3 索引應用
8.4 查詢應用
8.5 選擇器語法
8.6 本章小結
CHAPTER 09 Java-SDK用戶端
9.1 SDK專案前置條件
9.2 SDK程式使用
9.3 SDK使用方法
9.4 本章小結
CHAPTER 10 專案演練
10.1 反詐騙系統
10.3 本章小結
前言
CHAPTER 01 基本環境部署
1.1 環境整理
1.2 Docker安裝
1.3 Docker-Compose安裝
1.4 Go語言環境安裝
1.5 本章小結
CHAPTER 02 Fabric及環境部署
2.1 Fabric介紹
2.2 Fabric功能整理
2.3 Fabric組成模型
2.4 Fabric環境部署
2.5 本章小結
CHAPTER 03 End-2-End案例
3.1 平台特定檔案
3.2 執行e2e_cli
3.3 e2e_cli案例分析
3.4 本章小結
CHAPTER 04 部署單機多節點網路
4.1 產生憑證檔案
4.2 部署Orderer節點
4.3 部署peer0.org1節點
4.4 架設Fabric網路
4.5 初步接觸智慧合約
4.6 部署peer0.org2節點
4.7 本章小結
CHAPTER 05 Solo多機...