本書由超級賬本核心設計和開發(fā)者撰寫,是區(qū)塊鏈開發(fā)落地專業(yè)指南。由淺入深、系統(tǒng)化介紹超級賬本Fabric設計精華、應用開發(fā)等。全書分為理論篇和實踐篇兩大部分;第1~3章介紹區(qū)塊鏈技術(shù)的由來、核心思想及典型的應用場景;第4~5章重點介紹區(qū)塊鏈技術(shù)中大量出現(xiàn)的分布式系統(tǒng)技術(shù)和密碼學安全技術(shù);第6~8章介紹區(qū)塊鏈領域的三個典型開源項目:比特幣、以太坊以及超級賬本;第9-11章以超級賬本Fabric項目為例,具體講解了安裝部署、配置管理,以及使用 Fabric CA 進行證書管理的實踐經(jīng)驗;第12章重點剖析超級賬本Fabric項目的核心架構(gòu)設計;第13章介紹區(qū)塊鏈應用開發(fā)的相關技巧和示例;第14章介紹區(qū)塊鏈服務平臺的設計與開發(fā),并講解應用超級賬本Cello項目構(gòu)建服務平臺的相關知識。本書覆蓋了區(qū)塊鏈和分布式賬本領域的*新技術(shù),可幫助讀者深入理解區(qū)塊鏈核心原理和典型設計實現(xiàn),以及高效地開發(fā)基于區(qū)塊鏈平臺的分布式應用。
前言
第1版序言
第1版前言
理論篇
第1章 區(qū)塊鏈的誕生 2
1.1 記賬科技的千年演化 2
1.2 分布式記賬與區(qū)塊鏈 7
1.3 集大成者—比特幣 10
1.4 區(qū)塊鏈的商業(yè)價值 12
1.5 本章小結(jié) 14
第2章 核心技術(shù)概覽 15
2.1 定義與原理 15
2.2 技術(shù)的演化與分類 17
2.3 關鍵問題和挑戰(zhàn) 19
2.4 趨勢與展望 23
2.5 認識上的誤區(qū) 26
2.6 本章小結(jié) 27
第3章 典型應用場景 28
3.1 應用場景概覽 28
3.2 金融服務 29
3.2.1 數(shù)字貨幣 30
3.2.2 支付清結(jié)算業(yè)務 31
3.2.3 證券交易后處理 34
3.2.4 供應鏈金融 35
3.2.5 稅收服務 36
3.2.6 眾籌管理 37
3.3 征信管理 38
3.4 權(quán)屬管理與溯源 39
3.4.1 存證 39
3.4.2 溯源 41
3.4.3 數(shù)據(jù)管理 42
3.5 資源共享 42
3.6 物流與供應鏈 44
3.7 物聯(lián)網(wǎng) 45
3.8 其他場景 46
3.9 本章小結(jié) 48
第4章 分布式系統(tǒng)核心技術(shù) 49
4.1 一致性問題 49
4.2 共識算法 52
4.3 FLP不可能原理 54
4.4 CAP原理 56
4.4.1 定義 56
4.4.2 應用場景 56
4.5 ACID原則與多階段提交 57
4.6 Paxos算法與Raft算法 58
4.6.1 Paxos算法 58
4.6.2 Raft算法 61
4.7 拜占庭問題與算法 61
4.8 可靠性指標 65
4.9 本章小結(jié) 66
第5章 密碼學與安全技術(shù) 67
5.1 密碼學簡史 67
5.2 Hash算法與數(shù)字摘要 68
5.3 加解密算法 70
5.4 消息認證碼與數(shù)字簽名 75
5.4.1 消息認證碼 76
5.4.2 數(shù)字簽名 76
5.4.3 安全性 77
5.5 數(shù)字證書 77
5.6 PKI體系 80
5.7 默克爾樹結(jié)構(gòu) 83
5.8 布隆過濾器 84
5.9 同態(tài)加密 85
5.10 其他技術(shù) 86
5.11 本章小結(jié) 89
第6章 比特幣—初露鋒芒的區(qū)塊鏈 90
6.1 比特幣項目簡介 90
6.2 工作原理 94
6.2.1 基本交易過程 94
6.2.2 重要概念 95
6.2.3 創(chuàng)新設計 98
6.3 挖礦過程 99
6.4 共識機制 100
6.5 閃電網(wǎng)絡 102
6.6 側(cè)鏈 103
6.7 熱門問題 105
6.8 相關工具 108
6.9 本章小結(jié) 109
第7章 以太坊—掙脫加密貨幣的枷鎖 110
7.1 以太坊項目簡介 110
7.2 核心概念 112
7.3 主要設計 114
7.4 相關工具 115
7.5 安裝客戶端 117
7.6 使用智能合約 118
7.6.1 搭建測試用區(qū)塊鏈 118
7.6.2 創(chuàng)建和編譯智能合約 119
7.6.3 部署智能合約 120
7.6.4 調(diào)用智能合約 121
7.7 智能合約案例 121
7.7.1 智能合約代碼 121
7.7.2 代碼解析 123
7.8 本章小結(jié) 125
第8章 超級賬本——面向企業(yè)的分布式賬本 126
8.1 超級賬本項目簡介 126
8.2 社區(qū)組織結(jié)構(gòu) 128
8.3 頂級項目介紹 129
8.4 開發(fā)協(xié)作工具 134
8.5 貢獻代碼 136
8.6 本章小結(jié) 139
實踐篇
第9章 Fabric安裝與部署 142
9.1 簡介 142
9.2 本地編譯組件 143
9.2.1 環(huán)境配置 144
9.2.2 獲取代碼 145
9.2.3 編譯安裝Peer組件 145
9.2.4 編譯安裝Orderer組件 145
9.2.5 編譯安裝Fabric CA組件 146
9.2.6 編譯安裝配置輔助工具 146
9.2.7 安裝Protobuf支持和Go語言相關工具 146
9.2.8 示例配置 147
9.3 容器方式獲取 147
9.3.1 安裝Docker服務 147
9.3.2 安裝docker-compose 147
9.3.3 獲取Docker鏡像 148
9.3.4 鏡像Dockerfile 150
9.4 用本地方式啟動Fabric網(wǎng)絡 154
9.4.1 規(guī)劃初始網(wǎng)絡拓撲 155
9.4.2 準備啟動配置文件 156
9.4.3 啟動排序節(jié)點 163
9.4.4 啟動Peer節(jié)點 165
9.4.5 創(chuàng)建通道 166
9.4.6 加入通道 166
9.4.7 更新錨節(jié)點配置 167
9.5 用容器方式啟動Fabric網(wǎng)絡 167
9.6 本章小結(jié) 169
第10章 管理Fabric網(wǎng)絡 170
10.1 簡介 170
10.2 使用通道 170
10.3 管理節(jié)點 184
10.4 管理鏈上代碼 186
10.5 監(jiān)聽網(wǎng)絡事件 202
10.6 自動發(fā)現(xiàn)網(wǎng)絡信息 205
10.6.1 主要功能 205
10.6.2 全局參數(shù) 205
10.6.3 子命令 205
10.7 使用運維服務 210
10.8 如何升級網(wǎng)絡版本 213
10.8.1 能力類型 213
10.8.2 推薦升級步驟 214
10.9 使用SDK 216
10.10 注意事項與最佳實踐 217
10.11 本章小結(jié) 219
第11章 智能合約的開發(fā) 220
11.1 簡介 220
11.2 鏈碼的概念與結(jié)構(gòu) 221
11.2.1 Chaincode接口 222
11.2.2 鏈碼結(jié)構(gòu) 222
11.3 鏈碼開發(fā)API 223
11.3.1 賬本狀態(tài)交互API 223
11.3.2 交易信息API 225
11.3.3 參數(shù)讀取API 226
11.3.4 私密數(shù)據(jù)API 226
11.3.5 其他API 227
11.4 應用開發(fā)案例一:轉(zhuǎn)賬 228
11.5 應用開發(fā)案例二:資產(chǎn)權(quán)屬管理 231
11.6 應用開發(fā)案例三:調(diào)用其他鏈碼 240
11.7 應用開發(fā)案例四:發(fā)送事件 241
11.8 應用開發(fā)案例五:基于屬性的權(quán)限控制 242
11.9 應用開發(fā)案例六:私密數(shù)據(jù) 243
11.10 使用外部鏈碼 248
11.10.1 外部鏈碼構(gòu)建器結(jié)構(gòu) 248
11.10.2 鏈碼安裝包結(jié)構(gòu) 251
11.10.3 配置Peer節(jié)點調(diào)用外部鏈碼 252
11.10.4 外部鏈碼編寫示例 252
11.11 最佳開發(fā)實踐 253
11.12 本章小結(jié) 257
第12章 Fabric配置解析 258
12.1 簡介 258
12.2 Peer配置剖析 259
12.2.1 peer部分 259
12.2.2 vm部分 266
12.2.3 chaincode部分 267
12.2.4 ledger部分 267
12.2.5 operations部分 268
12.2.6 metrics部分 268
12.3 Orderer配置剖析 269
12.4 生成組織身份 272
12.5 通道配置文件 277
12.6 管理通道配置 284
12.7 轉(zhuǎn)換網(wǎng)絡配置 294
12.8 本章小結(jié) 298
第13章 身份證書管理 299
13.1 簡介 299
13.2 安裝服務端和客戶端 300
13.2.1 本地編譯 300
13.2.2 獲取和使用Docker鏡像 301
13.3 啟動CA服務 302
13.4 服務端命令剖析 304
13.4.1 全局命令參數(shù) 304
13.4.2 init命令 307
13.4.3 start命令 307
13.5 服務端RESTful API 307
13.6 服務端配置文件解析 310
13.7 與服務端進行交互 316
13.8 客戶端命令剖析 317
13.8.1 全局命令參數(shù) 318
13.8.2 affiliation命令 320
13.8.3 enroll命令 320
13.8.4 gencrl命令 321
13.8.5 gencsr命令 322
13.8.6 getcacert和getcainfo命令 322
13.8.7 identity命令 322
13.8.8 reenroll命令 322
13.8.9 register命令 323
13.8.10 revoke命令 323
13.9 客戶端配置文件解析 324
13.10 生產(chǎn)環(huán)境部署 325
13.11 本章小結(jié) 327
進階篇
第14章 Fabric架構(gòu)與設計 330
14.1 整體架構(gòu)概覽 330
14.2 核心概念與組件 333
14.2.1 網(wǎng)絡層相關組件 334
14.2.2 共識機制相關組件 337
14.2.3 權(quán)限管理相關組件 338
14.2.4 業(yè)務層相關組件 339
14.3 消息協(xié)議 345
14.3.1 消息結(jié)構(gòu) 345
14.3.2 客戶端訪問Peer節(jié)點 346
14.3.3 客戶端、Peer節(jié)點訪問Orderer 348
14.3.4 鏈碼和Peer節(jié)點交互 348
14.3.5 Peer節(jié)點之間Gossip交互 349
14.4 權(quán)限策略和訪問控制 352
14.4.1 應用場景 353
14.4.2 身份證書 354
14.4.3 身份集合 354
14.4.4 權(quán)限策略的實現(xiàn) 355
14.4.5 通道策略 359
14.4.6 通道訪問控制 360
14.4.7 背書策略 362
14.4.8 基于證書屬性的鏈碼訪問控制 364
14.4.9 實例化策略 365
14.5 隱私保護 365
14.5.1 通道機制 365
14.5.2 私密數(shù)據(jù)庫 366
14.5.3 加密保護 368
14.6 用戶鏈碼 369
14.6.1 基本結(jié)構(gòu) 369
14.6.2 鏈碼與Peer的交互過程 370
14.6.3 Peer側(cè)處理 372
14.6.4 鏈碼側(cè)處理 373
14.7 系統(tǒng)鏈碼 375
14.7.1 配置系統(tǒng)鏈碼 375
14.7.2 查詢系統(tǒng)鏈碼 376
14.7.3 背書系統(tǒng)鏈碼 376
14.7.4 驗證系統(tǒng)鏈碼 377
14.7.5 傳統(tǒng)生命周期系統(tǒng)鏈碼 377
14.7.6 新的生命周期系統(tǒng)鏈碼 378
14.8 排序服務 379
14.8.1 gRPC服務接口 380
14.8.2 賬本管理 380
14.8.3 共識插件 383
14.9 本章小結(jié) 386
第15章 Fabric Peer實現(xiàn)剖析 387
15.1 節(jié)點啟動 387
15.2 加入通道 399
15.2.1 解析和校驗請求 399
15.2.2 創(chuàng)建本地賬本結(jié)構(gòu) 401
15.2.3 創(chuàng)建通道結(jié)構(gòu) 402
15.2.4 啟動Gossip服務 404
15.2.5 注冊通道結(jié)構(gòu)到全局字典 410
15.3 Gossip過程 411
15.3.1 整體流程 411
15.3.2 初始化配置 412
15.3.3 初始化和啟動Gossip服務 413
15.4 鏈碼啟動和初始化 419
15.4.1 整體流程 419
15.4.2 編譯和啟動鏈碼 421
15.4.3 初始化鏈碼 426
15.4.4 處理鏈碼消息 426
15.5 背書處理 430
15.5.1 檢查和校驗提案 431
15.5.2 模擬執(zhí)行鏈碼調(diào)用 431
15.5.3 對結(jié)果背書并返回結(jié)果 433
15.6 提交交易結(jié)果 434
15.6.1 整體流程 436
15.6.2 提交前準備 437
15.6.3 提交過程 440
15.6.4 提交后處理 449
15.6.5 總結(jié)本地賬本結(jié)構(gòu) 449
15.7 本章小結(jié) 451
第16章 Fabric Orderer實現(xiàn)剖析 452
16.1 核心工作過程 452
16.1.1 工作原理 452
16.1.2 核心共識過程 453
16.1.3 分塊決策 455
16.2 排序服務啟動 455
16.3 Broadcast調(diào)用 466
16.3.1 整體流程 466
16.3.2 解析消息 468
16.3.3 處理普通交易消息 469
16.3.4 處理配置交易消息 472
16.4 構(gòu)造本地區(qū)塊 475
16.4.1 整體流程 475
16.4.2 成為Leader后的處理 477
16.4.3 成為Follower后的處理 477
16.4.4 主共識循環(huán) 478
16.4.5 請求應答協(xié)程邏輯 483
16.5 Deliver調(diào)用 484
16.5.1 整體流程 485
16.5.2 解析消息 488
16.5.3 檢查訪問權(quán)限 489
16.5.4 計算區(qū)塊范圍 489
16.5.5 發(fā)送區(qū)塊 490
16.5.6 返回響應 490
16.6 本章小結(jié) 490
第17章 區(qū)塊鏈服務平臺 491
17.1 簡介 491
17.2 IBM區(qū)塊鏈服務 492
17.3 甲骨文區(qū)塊鏈服務 493
17.4 騰訊云區(qū)塊鏈服務平臺 494
17.5 阿里云區(qū)塊鏈服務平臺 495
17.6 百度超級鏈服務平臺 497
17.7 紙貴科技Z-BaaS區(qū)塊鏈服務平臺 499
17.8 超級賬本Cello項目 500
17.9 本章小結(jié) 502
附錄
附錄A 術(shù)語 504
附錄B 常見問題 508
附錄C 參考資源鏈接 511