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