深度探索區(qū)塊鏈:Hyperledger技術(shù)與應(yīng)用
定 價(jià):79 元
叢書名:區(qū)塊鏈技術(shù)叢書
- 作者:張?jiān)鲵E 董寧 朱軒彤 陳劍雄
- 出版時(shí)間:2018/1/1
- ISBN:9787111589327
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:F713.361.3
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:1
- 開本:16開
準(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)用開發(fā)模型、部署,以及開發(fā)實(shí)戰(zhàn)案例。
Preface?前 言為什么要寫這本書區(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ū)塊鏈開發(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)目在全球擁有超過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)化的開源區(qū)塊鏈開發(fā)平臺(tái),類似OpenStack之于云計(jì)算。開源地址是:https://github.com/hyperledger/fabric。Fabric主要框架的核心開發(fā)語言是Go語言,它非常適合聯(lián)盟鏈,具有更高的商業(yè)應(yīng)用前景。
從2015年開始,由于在IBM中國(guó)實(shí)驗(yàn)室工作,我開始接觸區(qū)塊鏈技術(shù)和IBM的Open Blockchain項(xiàng)目(即Hyperledger Fabric的前身),并開始為中國(guó)的金融用戶推薦它,幫助這些用戶借助區(qū)塊鏈的技術(shù)價(jià)值來實(shí)現(xiàn)科技和業(yè)務(wù)的創(chuàng)新。到了2016年下半年,Hyperledger Fabric開發(fā)平臺(tái)階段性地穩(wěn)定在0.6版本,無論是IBM還是云圖智鏈(后來被智鏈ChainNova并購(gòu)),都在很多行業(yè)應(yīng)用場(chǎng)景中開始實(shí)踐Fabric 0.6版本。那時(shí)在國(guó)內(nèi),絕大多數(shù)的金融企業(yè)都在嘗試通過Hyperledger Fabric 0.6平臺(tái)來開發(fā)屬于自己的區(qū)塊鏈應(yīng)用,我在那個(gè)時(shí)候有機(jī)會(huì)參與了不少相關(guān)的區(qū)塊鏈項(xiàng)目,涉及領(lǐng)域包括數(shù)字積分、資產(chǎn)托管和交易、保險(xiǎn)、高價(jià)值商品溯源等。也正是從那時(shí)起,萌生了編寫一本書來解釋Hyperledger原理,介紹各項(xiàng)開發(fā)組件,并通過真實(shí)案例還原區(qū)塊鏈開發(fā)全過程,讓更多的人覺得區(qū)塊鏈或者Hyperledger離自己并不遙遠(yuǎn)。于是,當(dāng)時(shí)我們幾個(gè)作者從社區(qū)、不同的開發(fā)項(xiàng)目,以及各個(gè)開發(fā)團(tuán)隊(duì)中開始收集和整理資料,完成了基于0.6版內(nèi)容的大部分寫作工作。
但恰逢此時(shí),Hyperledger的第一個(gè)商用版本1.0準(zhǔn)備推出,我們也第一時(shí)間從Linux基金會(huì)得到了這個(gè)消息。從當(dāng)時(shí)1.0版本的計(jì)劃來看,推出它的目的主要有兩個(gè)方面:一是Hyperledger希望以這個(gè)版本為基調(diào),作為企業(yè)級(jí)區(qū)塊鏈平臺(tái);二是為了解決0.6版本中出現(xiàn)的一些問題,1.0版本進(jìn)行了很大的改變和調(diào)整,可以說這個(gè)變化是翻天覆地的,以至于我們半開玩笑地說從0.6版本到1.0版本甚至沒有可直接升級(jí)的路徑。當(dāng)時(shí)我還在IBM工作,第一時(shí)間找到了云圖智鏈的張?jiān)鲵E老師等幾位作者和出版社的高婧雅編輯,和他們商量是否需要調(diào)整寫作方向和內(nèi)容,因?yàn)樵诖酥皩?shí)際上張?jiān)鲵E老師已經(jīng)在上一個(gè)版本的寫作中付出了很多的時(shí)間和精力。幾乎是在十分鐘之內(nèi)我們就一致決定要基于Hyperledger Fabric 1.0版本重新組織材料,重新編寫這本書,因?yàn)槲覀兿M约和度氲臅r(shí)間和付出的精力為社區(qū)、眾多開發(fā)者和廣大對(duì)區(qū)塊鏈技術(shù)感興趣的讀者帶來一本真正實(shí)用的書,而不是僅僅為了把我們幾個(gè)人的名字留在封面上。數(shù)月后的今天,我們把初審過的稿件提交給出版社。這個(gè)過程中由于Hyperledger開源社區(qū)和代碼版本不斷迭代內(nèi)容也不斷調(diào)整,經(jīng)歷了更多我們之前沒涉及的新行業(yè)和應(yīng)用場(chǎng)景,甚至經(jīng)歷了我個(gè)人工作角色的變化,我們幾個(gè)作者最終堅(jiān)持完成了本書的寫作。當(dāng)然必須承認(rèn),由于能力和經(jīng)驗(yàn)不足,本書還有很多提升空間,內(nèi)容本身也難免出現(xiàn)表達(dá)不準(zhǔn)確的地方。本書希望拋磚引玉,歡迎讀者多提寶貴意見,指出本書存在的技術(shù)錯(cuò)誤,爭(zhēng)取在下一版本中能糾正錯(cuò)誤,不斷完善,進(jìn)一步提升質(zhì)量。同時(shí),我們還會(huì)一直基于Hyperledger這個(gè)平臺(tái)不斷地進(jìn)行產(chǎn)業(yè)實(shí)踐,后面還會(huì)以本書為起點(diǎn)策劃系列叢書,把我們?cè)诠ぷ鲗W(xué)習(xí)過程中得到的啟發(fā)和經(jīng)驗(yàn)分享給讀者。
本書作者大多來自智鏈ChainNova,均具有多年IT工作、實(shí)踐經(jīng)驗(yàn)。智鏈ChainNova與超級(jí)賬本社區(qū)一直有非常緊密的合作。2017年智鏈ChainNova研究院聯(lián)手Linux Foundation和IBM,共同主辦了HyperLedger Fabric商用正式版本1.0發(fā)布后Hyperledger開源社區(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)開源社區(qū)活動(dòng),歡迎讀者積極參與。相信讀者將在學(xué)習(xí)區(qū)塊鏈技術(shù)和Hyperledger的過程中獲益匪淺。
本書特色筆者是Hyperledger社區(qū)成員,參與超級(jí)賬本社區(qū)的日常工作,了解超級(jí)賬本發(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)趨勢(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 常見錯(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ā)送給背書節(jié)點(diǎn) 39
3.3.2 背書節(jié)點(diǎn)模擬交易并生成背書簽名 41
3.3.3 收集交易的背書 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)容并寫入?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 鏈碼實(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)選舉過程 68
4.6 基于反熵的狀態(tài)同步 69
4.7 數(shù)據(jù)傳播過程 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 讀寫集 79
5.2.1 交易模擬和讀寫集 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 索引的同步過程 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 鏈消息過濾器 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 鏈碼和背書節(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ù)字證書的成員管理服務(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ù)字證書的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é)點(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)境