深度探索區(qū)塊鏈:Hyperledger技術(shù)與應(yīng)用
定 價:79 元
叢書名:區(qū)塊鏈技術(shù)叢書
- 作者:張增駿 董寧 朱軒彤 陳劍雄
- 出版時間:2018/1/1
- ISBN:9787111589327
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:F713.361.3
- 頁碼:
- 紙張:膠版紙
- 版次:1
- 開本:16開
準(zhǔn)備篇(第1~2章)涵蓋區(qū)塊鏈技術(shù)概覽與簡單的安裝、部署。核心篇(第3~9章)介紹Hyperledger的P2P協(xié)議、存儲、數(shù)據(jù)隔離、會員管理、共識機(jī)制、智能合約等核心技術(shù)與實現(xiàn)。實踐篇(第10~12章)介紹區(qū)塊鏈的應(yīng)用開發(fā)模型、部署,以及開發(fā)實戰(zhàn)案例。
Preface?前 言為什么要寫這本書區(qū)塊鏈?zhǔn)窃谌蚍秶鷥?nèi)受到極高關(guān)注的技術(shù)。簡而言之,區(qū)塊鏈就是防篡改并且由大家共同維護(hù)的賬本,其中包含不斷增長的數(shù)據(jù)記錄列表。根據(jù)現(xiàn)在的發(fā)展趨勢,區(qū)塊鏈將在商用領(lǐng)域得到廣泛應(yīng)用。
超級賬本(Hyperledger)是Linux基金會旗下的區(qū)塊鏈開發(fā)平臺項目,致力于發(fā)展跨行業(yè)的商用區(qū)塊鏈平臺技術(shù)。超級賬本項目自創(chuàng)立伊始便吸引了眾多行業(yè)的領(lǐng)頭羊,包括金融、銀行、互聯(lián)網(wǎng)、運輸、制造等行業(yè)。目前,超級賬本項目在全球擁有超過100個成員,包括IBM、Cisco、Intel、J.P. Morgan、荷蘭銀行、SWIFT、R3等。基于區(qū)塊鏈技術(shù)、智能合約及其他相關(guān)技術(shù),超級賬本項目致力于建立新一代的分布式賬本交易應(yīng)用平臺,從而在簡化與商業(yè)流程相關(guān)的事務(wù)的同時,建立起商業(yè)信任、透明、審查等能力。Hyperledger Fabric子項目是以IBM早期捐獻(xiàn)出的Open Blockchain為主體搭建而成的,是一個帶有可插入各種功能模塊架構(gòu)的區(qū)塊鏈實施方案,其目標(biāo)是建立一個更加標(biāo)準(zhǔn)化的開源區(qū)塊鏈開發(fā)平臺,類似OpenStack之于云計算。開源地址是:https://github.com/hyperledger/fabric。Fabric主要框架的核心開發(fā)語言是Go語言,它非常適合聯(lián)盟鏈,具有更高的商業(yè)應(yīng)用前景。
從2015年開始,由于在IBM中國實驗室工作,我開始接觸區(qū)塊鏈技術(shù)和IBM的Open Blockchain項目(即Hyperledger Fabric的前身),并開始為中國的金融用戶推薦它,幫助這些用戶借助區(qū)塊鏈的技術(shù)價值來實現(xiàn)科技和業(yè)務(wù)的創(chuàng)新。到了2016年下半年,Hyperledger Fabric開發(fā)平臺階段性地穩(wěn)定在0.6版本,無論是IBM還是云圖智鏈(后來被智鏈ChainNova并購),都在很多行業(yè)應(yīng)用場景中開始實踐Fabric 0.6版本。那時在國內(nèi),絕大多數(shù)的金融企業(yè)都在嘗試通過Hyperledger Fabric 0.6平臺來開發(fā)屬于自己的區(qū)塊鏈應(yīng)用,我在那個時候有機(jī)會參與了不少相關(guān)的區(qū)塊鏈項目,涉及領(lǐng)域包括數(shù)字積分、資產(chǎn)托管和交易、保險、高價值商品溯源等。也正是從那時起,萌生了編寫一本書來解釋Hyperledger原理,介紹各項開發(fā)組件,并通過真實案例還原區(qū)塊鏈開發(fā)全過程,讓更多的人覺得區(qū)塊鏈或者Hyperledger離自己并不遙遠(yuǎn)。于是,當(dāng)時我們幾個作者從社區(qū)、不同的開發(fā)項目,以及各個開發(fā)團(tuán)隊中開始收集和整理資料,完成了基于0.6版內(nèi)容的大部分寫作工作。
但恰逢此時,Hyperledger的第一個商用版本1.0準(zhǔn)備推出,我們也第一時間從Linux基金會得到了這個消息。從當(dāng)時1.0版本的計劃來看,推出它的目的主要有兩個方面:一是Hyperledger希望以這個版本為基調(diào),作為企業(yè)級區(qū)塊鏈平臺;二是為了解決0.6版本中出現(xiàn)的一些問題,1.0版本進(jìn)行了很大的改變和調(diào)整,可以說這個變化是翻天覆地的,以至于我們半開玩笑地說從0.6版本到1.0版本甚至沒有可直接升級的路徑。當(dāng)時我還在IBM工作,第一時間找到了云圖智鏈的張增駿老師等幾位作者和出版社的高婧雅編輯,和他們商量是否需要調(diào)整寫作方向和內(nèi)容,因為在此之前實際上張增駿老師已經(jīng)在上一個版本的寫作中付出了很多的時間和精力。幾乎是在十分鐘之內(nèi)我們就一致決定要基于Hyperledger Fabric 1.0版本重新組織材料,重新編寫這本書,因為我們希望自己投入的時間和付出的精力為社區(qū)、眾多開發(fā)者和廣大對區(qū)塊鏈技術(shù)感興趣的讀者帶來一本真正實用的書,而不是僅僅為了把我們幾個人的名字留在封面上。數(shù)月后的今天,我們把初審過的稿件提交給出版社。這個過程中由于Hyperledger開源社區(qū)和代碼版本不斷迭代內(nèi)容也不斷調(diào)整,經(jīng)歷了更多我們之前沒涉及的新行業(yè)和應(yīng)用場景,甚至經(jīng)歷了我個人工作角色的變化,我們幾個作者最終堅持完成了本書的寫作。當(dāng)然必須承認(rèn),由于能力和經(jīng)驗不足,本書還有很多提升空間,內(nèi)容本身也難免出現(xiàn)表達(dá)不準(zhǔn)確的地方。本書希望拋磚引玉,歡迎讀者多提寶貴意見,指出本書存在的技術(shù)錯誤,爭取在下一版本中能糾正錯誤,不斷完善,進(jìn)一步提升質(zhì)量。同時,我們還會一直基于Hyperledger這個平臺不斷地進(jìn)行產(chǎn)業(yè)實踐,后面還會以本書為起點策劃系列叢書,把我們在工作學(xué)習(xí)過程中得到的啟發(fā)和經(jīng)驗分享給讀者。
本書作者大多來自智鏈ChainNova,均具有多年IT工作、實踐經(jīng)驗。智鏈ChainNova與超級賬本社區(qū)一直有非常緊密的合作。2017年智鏈ChainNova研究院聯(lián)手Linux Foundation和IBM,共同主辦了HyperLedger Fabric商用正式版本1.0發(fā)布后Hyperledger開源社區(qū)第一次線下會議(北京Meetup),Hyperledger全球副總裁、亞太區(qū)負(fù)責(zé)人Julian Gordan和多家國內(nèi)知名金融企業(yè)、科技企業(yè)高層出席。在2018年,智鏈ChainNova正在計劃攜手Linux Foundation、北京大學(xué)和IBM共同主辦超級賬本黑客馬拉松大賽(HyperLedger Hackathon)。同時為了進(jìn)一步活躍Hyperledger社區(qū),我們還即將承辦多項開源社區(qū)活動,歡迎讀者積極參與。相信讀者將在學(xué)習(xí)區(qū)塊鏈技術(shù)和Hyperledger的過程中獲益匪淺。
本書特色筆者是Hyperledger社區(qū)成員,參與超級賬本社區(qū)的日常工作,了解超級賬本發(fā)展和技術(shù)細(xì)節(jié)的第一手資料。本書以Fabri
目 錄?Contents
序一
序二
序三
前言
第一篇 準(zhǔn)備篇
第1章 區(qū)塊鏈概述 2
1.1 區(qū)塊鏈的前世今生 2
1.1.1 區(qū)塊鏈的歷史起源比特幣 2
1.1.2 歡迎來到區(qū)塊鏈的世界 3
1.1.3 區(qū)塊鏈演進(jìn)趨勢 4
1.2 區(qū)塊鏈概念 5
1.2.1 區(qū)塊鏈本質(zhì) 6
1.2.2 區(qū)塊鏈工作原理 6
1.2.3 區(qū)塊鏈技術(shù)特點 7
1.2.4 區(qū)塊鏈層次模型 8
1.2.5 區(qū)塊鏈共識算法 8
1.2.6 區(qū)塊鏈并不一定去中心化 9
1.3 區(qū)塊鏈技術(shù)平臺 10
1.3.1 比特幣 10
1.3.2 以太坊 11
1.3.3 瑞波 13
1.3.4 區(qū)塊鏈商用平臺:超級賬本 13
1.3.5 區(qū)塊鏈技術(shù)平臺比較 15
1.4 區(qū)塊鏈的商用之道 15
1.4.1 區(qū)塊鏈的2.0時代:商用區(qū)塊鏈 15
1.4.2 超級賬本:商用區(qū)塊鏈的第五元素 17
1.4.3 區(qū)塊鏈的商業(yè)應(yīng)用場景 17
1.5 本章小結(jié) 18
第2章 超級賬本初體驗 19
2.1 基礎(chǔ)環(huán)境安裝 19
2.1.1 Docker的安裝和使用 19
2.1.2 Docker Compose的安裝和使用 21
2.1.3 下載超級賬本源代碼 24
2.2 超級賬本部署調(diào)用 24
2.2.1 下載Docker鏡像文件 24
2.2.2 部署超級賬本網(wǎng)絡(luò) 25
2.2.3 鏈碼調(diào)用和查詢 26
2.2.4 常見錯誤 27
2.3 節(jié)點的配置參數(shù)傳遞規(guī)則 29
2.4 本章小結(jié) 31
第二篇 核心篇
第3章 超級賬本的系統(tǒng)架構(gòu) 34
3.1 系統(tǒng)邏輯架構(gòu) 35
3.2 網(wǎng)絡(luò)節(jié)點架構(gòu) 37
3.3 典型交易流程 39
3.3.1 創(chuàng)建交易提案并發(fā)送給背書節(jié)點 39
3.3.2 背書節(jié)點模擬交易并生成背書簽名 41
3.3.3 收集交易的背書 42
3.3.4 構(gòu)造交易請求并發(fā)送給排序服務(wù)節(jié)點 43
3.3.5 排序服務(wù)節(jié)點以對交易進(jìn)行排序并生成區(qū)塊 45
3.3.6 排序服務(wù)節(jié)點以廣播給組織的主節(jié)點 45
3.3.7 記賬節(jié)點驗證區(qū)塊內(nèi)容并寫入?yún)^(qū)塊 45
3.3.8 在組織內(nèi)部同步最新的區(qū)塊 49
3.4 消息協(xié)議結(jié)構(gòu) 49
3.4.1 信封消息結(jié)構(gòu) 49
3.4.2 配置管理結(jié)構(gòu) 51
3.4.3 背書流程結(jié)構(gòu) 52
3.5 策略管理和訪問控制 56
3.5.1 策略定義及其類型 56
3.5.2 交易背書策略 57
3.5.3 鏈碼實例化策略 60
3.5.4 通道管理策略 61
3.6 本章小結(jié) 63
第4章 基于Gossip的P2P數(shù)據(jù)分發(fā) 64
4.1 概述 64
4.2 超級賬本中的Gossip協(xié)議 65
4.3 成員認(rèn)證及身份管理 67
4.4 節(jié)點啟動及成員管理 67
4.5 主節(jié)點選舉過程 68
4.6 基于反熵的狀態(tài)同步 69
4.7 數(shù)據(jù)傳播過程 70
4.8 多通道的支持 70
4.9 消息的驗證策略 71
4.10 消息的多路分用及分區(qū) 73
4.11 和Gossip相關(guān)的配置參數(shù) 76
4.12 本章小結(jié) 77
第5章 分布式賬本存儲 78
5.1 概述 78
5.2 讀寫集 79
5.2.1 交易模擬和讀寫集 79
5.2.2 交易驗證和世界狀態(tài)更新 80
5.2.3 模擬和驗證示例 80
5.3 賬本編號 81
5.4 賬本數(shù)據(jù) 81
5.4.1 賬本數(shù)據(jù)存儲 82
5.4.2 賬本數(shù)據(jù)讀取 83
5.4.3 交易模擬執(zhí)行 84
5.5 區(qū)塊索引 84
5.5.1 文件位置指針 85
5.5.2 索引的同步過程 86
5.6 狀態(tài)數(shù)據(jù) 87
5.6.1 LevelDB 88
5.6.2 CouchDB 89
5.6.3 基于狀態(tài)數(shù)據(jù)的區(qū)塊驗證 91
5.7 歷史數(shù)據(jù) 92
5.8 數(shù)據(jù)恢復(fù) 92
5.9 本章小結(jié) 93
第6章 集成共識機(jī)制的排序服務(wù) 94
6.1 概述 94
6.1.1 共識算法的類型 95
6.1.2 Hyperledger Fabric 1.0的共識機(jī)制 96
6.2 實現(xiàn)數(shù)據(jù)隔離的多通道 97
6.2.1 排序服務(wù)的初始化 99
6.2.2 通道的創(chuàng)建 101
6.2.3 通道的更新 105
6.2.4 通道的加入 107
6.2.5 通道的查詢 107
6.3 可插拔的排序服務(wù) 108
6.3.1 排序服務(wù)接口 108
6.3.2 基于單進(jìn)程的排序服務(wù) 110
6.3.3 基于Kafka的排序服務(wù) 110
6.3.4 鏈消息過濾器 122
6.4 本章小結(jié) 124
第7章 實現(xiàn)數(shù)據(jù)隔離的多鏈及多通道 125
7.1 數(shù)據(jù)存儲對多鏈的支持 126
7.1.1 賬本數(shù)據(jù) 126
7.1.2 索引數(shù)據(jù) 126
7.1.3 狀態(tài)數(shù)據(jù) 127
7.1.4 歷史數(shù)據(jù) 127
7.2 鏈碼對多鏈的支持 128
7.2.1 鏈碼的生命周期管理 128
7.2.2 鏈碼和背書節(jié)點的通信 129
7.2.3 鏈碼的部署和調(diào)用 130
7.3 多通道對多鏈的支持 131
7.4 命令行和SDK對多鏈的支持 132
7.5 關(guān)于系統(tǒng)鏈 132
7.6 本章小結(jié) 132
第8章 基于數(shù)字證書的成員管理服務(wù) 133
8.1 實現(xiàn)成員管理的MSP 133
8.1.1 MSP成員的驗證 133
8.1.2 MSP的目錄結(jié)構(gòu) 134
8.1.3 MSP的配置最佳實踐 140
8.2 頒發(fā)數(shù)字證書的Fabric CA 142
8.2.1 概述 142
8.2.2 Fabric CA服務(wù)端的安裝部署 143
8.2.3 Fabric CA服務(wù)端的操作使用 148
8.3 本章小結(jié) 158
第9章 支持多種語言的智能合約 159
9.1 概述 160
9.2 鏈碼的生命周期管理 160
9.2.1 鏈碼的生命周期 160
9.2.2 應(yīng)用程序和鏈碼的交互流程 164
9.2.3 背書節(jié)點接收應(yīng)用程序的請求處理 165
9.2.4 采用上下文實現(xiàn)交易的模擬執(zhí)行 166
9.2.5 鏈碼消息的數(shù)據(jù)分發(fā) 166
9.2.6 鏈碼運行環(huán)境