Go 語言 Hyperledger 區塊鏈開發實戰

李曉黎

  • Go 語言 Hyperledger 區塊鏈開發實戰-preview-1
  • Go 語言 Hyperledger 區塊鏈開發實戰-preview-2
Go 語言 Hyperledger 區塊鏈開發實戰-preview-1

買這商品的人也買了...

商品描述

Go語言是近年來非常流行的新興編程語言,它不僅是以太坊客戶端和Hyperledger Fabric區塊鏈平臺的開發語言,而且廣泛應用於區塊鏈應用的開發。

本書介紹使用Go語言開發的經典聯盟鏈項目Hyperledger Fabric,它由Linux基金會管理。國外的微軟、摩根大通、世界銀行和國內的華為、阿裡巴巴、百度、騰訊等企業都參與了Hyperledger社區的建設。本書涵蓋Hyperledger Fabric區塊鏈平臺的體系結構、各組件的工作原理和管理方法、Go語言的基本編程方法,以及使用Go語言開發Hyperledger Fabric智能合約和應用程序的方法。讀者在閱讀本書時可以充分瞭解和體驗Hyperledger Fabric區塊鏈的強大功能,以及使用Go語言開發區塊鏈應用的便利。

本書既可作為高等院校“區塊鏈開發”“Web應用程序設計”等課程的教材,也可作為區塊鏈應用開發人員的參考用書。

作者簡介

软件开发工程师,毕业于吉林大学计算机系;自2006年以来,带领团队一直从事网络管理软件、企业ERP系统和电商平台等的开发与建设工作,具有中国投资银行、国家开发银行、中信银行等多家银行从业经历,参与银行信息化建设、网银平台开发、区块链与智能合约开发工作多年,在系统软件开发、团队组织管理和系统架构设计等领域积累了丰富的实战经验。

目錄大綱

【詳細目錄】

第 1章 區塊鏈技術基礎

第 2章 Fabric區塊鏈的體系結構

第3章 搭建Fabric區塊鏈環境

第4章 Fabric區塊鏈的安全機制

第5章 節點與通道管理

第6章 數據存儲與數據分發

第7章 部署Fabric生產網絡

第8章 Go 語言編程基礎

第9章 智能合約開發

第 10章 客戶端應用開發

 

【詳細目錄】

第 1章 區塊鏈技術基礎

1.1 區塊鏈的工作原理及底層技術 1

1.1.1 分佈式系統的概念 1

1.1.2 區塊鏈技術的總體架構 1

1.1.3 加密算法 4

1.1.4 區塊鏈的分類 7

1.2 經典的區塊鏈平臺 8

1.2.1 區塊鏈技術的發展階段 8

1.2.2 比特幣 9

1.2.3 以太坊 11

1.2.4 Hyperledger 項目 12

1.2.5 區塊鏈編程語言 14

1.3 本章小結 15

習 題 15

 

第 2章 Fabric區塊鏈的體系結構

2.1 Fabric網絡模型 17

2.1.1 Fabric網絡的主要組件 17

2.1.2 Fabric區塊鏈平臺的體系結構 19

2.1.3 排序服務與交易的流程 23

2.2 搭建示例網絡的過程 30

2.2.1 示例網絡的拓撲 30

2.2.2 創建示例網絡 31

2.2.3 證書頒發機構 32

2.2.4 添加網絡管理員 32

2.2.5 創建一個聯盟 33

2.2.6 為聯盟創建通道 33

2.2.7 Peer節點與賬本 34

2.2.8 客戶端應用與智能合約 35

2.2.9 Fabric網絡的擴充 36

2.3 本章小結 36

習 題 37

 

第3章 搭建Fabric區塊鏈環境

3.1 搭建基礎環境 38

3.1.1 安裝VirtualBox虛擬機 38

3.1.2 安裝CentOS 38

3.1.3 安裝和使用Docker 46

3.2 安裝Fabric區塊鏈 52

3.2.1 配置Fabric區塊鏈所需要的基礎環境 52

3.2.2 安裝Go語言環境 53

3.2.3 安裝Git 54

3.2.4 安裝Docker Compose 54

3.2.5 安裝Fabric區塊鏈 55

3.3 管理工具和配置文件 58

3.3.1 Fabric區塊鏈的管理工具 59

3.3.2 Fabric區塊鏈的常用配置文件 60

3.4 Fabric測試網絡 61

3.4.1 測試網絡的特點 61

3.4.2 啟動和關閉測試網絡 61

3.4.3 創建通道 65

3.5 本章小結 67

習 題 67

 

第4章 Fabric區塊鏈的安全機制

4.1 背景知識 68

4.1.1 許可鏈的概念 68

4.1.2 安全機制的重要意義 70

4.1.3 身份標識 71

4.1.4 Idemix 73

4.2 Fabric CA 74

4.2.1 Fabric CA的工作原理 75

4.2.2 安裝Fabric CA 76

4.2.3 初始化和啟動Fabric CA Server 77

4.2.4 設置Fabric CA Server的配置信息 79

4.2.5 建立Fabric CA Server集群 87

4.2.6 Fabric CA Client 90

4.3 安全策略 94

4.3.1 策略簡介 94

4.3.2 定義策略規則 95

4.4 成員服務提供者 98

4.4.1 MSP的作用 98

4.4.2 MSP域 99

4.4.3 MSP的目錄結構 100

4.4.4 配置MSP 102

4.5 組織管理 104

4.5.1 組織在MSP中扮演的角色 104

4.5.2 為組織生成證書 105

4.6 本章小結 109

習 題 109

 

第5章 節點與通道管理

5.1 Peer節點管理 111

5.1.1 配置文件core.yaml 111

5.1.2 peer命令 112

5.2 通道管理 113

5.2.1 通道的分類 113

5.2.2 通道配置 114

5.2.3 通道配置交易 118

5.2.4 在Peer節點上執行通道操作命令 123

5.2.5 configtxgen工具 124

5.3 排序節點管理 125

5.3.1 Fabric區塊鏈的共識算法 125

5.3.2 排序節點上的通道管理 127

5.3.3 配置排序節點 128

5.4 客戶端命令行工具CLI 133

5.4.1 配置客戶端 133

5.4.2 通過CLI工具訪問Fabric網絡 135

5.5 Fabric測試網絡腳本解析 135

5.5.1 啟動測試網絡 136

5.5.2 創建通道 138

5.5.3 向通道中添加組織 142

5.5.4 更新通道配置 150

5.5.5 將組織Org3的Peer節點加入網絡 155

5.6 本章小結 157

習 題 158

 

第6章 數據存儲與數據分發

6.1 數據存儲 159

6.1.1 數據存儲結構 159

6.1.2 區塊數據的存儲 160

6.1.3 交易數據的存儲和查詢 164

6.1.4 狀態數據庫 165

6.1.5 啟用CouchDB作為狀態數據庫 166

6.1.6 私有數據管理 170

6.2 數據分發 173

6.2.1 Gossip協議 173

6.2.2 領導節點和錨節點在數據分發過程中的作用 174

6.2.3 內部端點和外部端點 175

6.3 本章小結 176

習 題 176

 

第7章 部署Fabric生產網絡

7.1 從學習到實踐的第 一步 178

7.1.1 從測試網絡過渡到生產網絡 178

7.1.2 部署Fabric生產網絡的步驟 180

7.1.3 設計生產網絡的結構和配置 180

7.2 在生產網絡中部署Fabric區塊鏈的各組件 182

7.2.1 創建資源集群 182

7.2.2 搭建CA 183

7.2.3 使用CA創建身份和MSP 183

7.2.4 部署Peer節點 184

7.2.5 部署排序節點 186

7.3 在單機上搭建Fabric區塊鏈集群 187

7.3.1 實例的網絡拓撲 187

7.3.2 準備基礎環境 188

7.3.3 搭建Fabric區塊鏈節點集群 189

7.3.4 編寫Docker Compose配置文件 196

7.3.5 啟動Docker容器 201

7.3.6 配置Fabric生產網絡 202

7.4 本章小結 204

習 題 204

 

第8章 Go 語言編程基礎

8.1 Go語言概述 206

8.1.1 Go語言的特色 206

8.1.2 安裝Go語言環境 207

8.1.3 Go語言的項目目錄 208

8.1.4 Go語言IDE 211

8.2 Go語言的常量、變量和數據類型 215

8.2.1 常量 215

8.2.2 變量 215

8.2.3 數據類型 215

8.3 常用語句 218

8.3.1 賦值語句 218

8.3.2 條件分支語句 219

8.3.3 循環語句 221

8.4 集合、數組和切片 223

8.4.1 集合 223

8.4.2 數組 225

8.4.3 切片 226

8.5 指針和接口 227

8.5.1 指針 227

8.5.2 接口 228

8.6 通道編程 230

8.6.1 Go語言的並發編程 231

8.6.2 Go語言的通道編程 232

8.7 JSON處理 234

8.7.1 JSON簡介 234

8.7.2 Go語言JSON處理編程 234

8.8 函數編程 237

8.8.1 定義和使用函數 237

8.8.2 在函數中傳遞參數 238

8.8.3 在函數中返回多個值 239

8.8.4 結構體類型和枚舉類型的函數 239

8.9 本章小結 240

習 題 240

 

第9章 智能合約開發

9.1 Fabric智能合約概述 242

9.1.1 智能合約的基本概念 242

9.1.2 鏈碼的工作流程 243

9.1.3 學習Go語言開發Fabric智能合約的前提條件 244

9.1.4 智能合約編程基礎 245

9.2 編寫智能合約程序 246

9.2.1 導入contractapi包 246

9.2.2 定義與賬本交換數據的結構體 246

9.2.3 智能合約函數編程 247

9.3 鏈碼編程與智能合約的測試 253

9.3.1 在鏈碼中使用智能合約 253

9.3.2 在測試網絡中部署鏈碼 254

9.3.3 在測試網絡中調用鏈碼 256

9.4 交易編程 261

9.4.1 交易處理函數的類型 261

9.4.2 定義交易處理函數 261

9.4.3 利用交易處理函數優化智能合約的代碼 262

9.4.4 未知處理函數調用 267

9.5 在開發模式下運行鏈碼 268

9.5.1 搭建環境 268

9.5.2 啟動排序節點 270

9.5.3 在開發模式下啟動Peer節點 271

9.5.4 創建通道 271

9.5.5 在開發模式下構建鏈碼 272

9.5.6 啟動鏈碼 272

9.5.7 批準和寫入鏈碼定義 273

9.5.8 調用鏈碼 275

9.6 私有數據編程 275

9.6.1 私有數據集的定義 275

9.6.2 在鏈碼中讀/寫私有數據 278

9.6.3 私有數據編程示例程序 280

9.7 本章小結 289

習 題 289

 

第 10章 客戶端應用開發

10.1 Fabric區塊鏈客戶端應用開發概述 291

10.1.1 Fabric SDK Go概述 291

10.1.2 安裝Fabric SDK Go 291

10.2 Fabric SDK Go的配置和依賴 294

10.2.1 配置Fabric SDK Go 295

10.2.2 管理Fabric SDK Go項目的依賴包 298

10.3 使用Fabric SDK Go開發客戶端應用 299

10.3.1 Fabric SDK Go的開發包 299

10.3.2 創建fabsdk實例 299

10.3.3 通道客戶端編程 300

10.3.4 賬本客戶端編程 303

10.3.5 資源客戶端編程 305

10.3.6 MSP客戶端編程 307

10.4 gateway開發模型 309

10.4.1 概述 309

10.4.2 連接配置文件 311

10.4.3 通過網關調用鏈碼 315

10.5 本章小結 323

習 題 323