深度探索區塊鏈:Hyperledger技術與應用( 簡體 字) | |
作者:張增駿 董寧 朱軒彤 陳劍雄 著 | 類別:1. -> 程式設計 -> 深度學習 2. -> 程式設計 -> 區塊鏈 |
出版社:機械工業出版社 | 3dWoo書號: 48403 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:1/1/2018 | |
頁數:302 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111589327 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
序一
序二 序三 前言 第一篇 準備篇 第1章 區塊鏈概述 2 1.1 區塊鏈的前世今生 2 1.1.1 區塊鏈的歷史起源——比特幣 2 1.1.2 歡迎來到區塊鏈的世界 3 1.1.3 區塊鏈演進趨勢 4 1.2 區塊鏈概念 5 1.2.1 區塊鏈本質 6 1.2.2 區塊鏈工作原理 6 1.2.3 區塊鏈技術特點 7 1.2.4 區塊鏈層次模型 8 1.2.5 區塊鏈共識算法 8 1.2.6 區塊鏈并不一定去中心化 9 1.3 區塊鏈技術平臺 10 1.3.1 比特幣 10 1.3.2 以太坊 11 1.3.3 瑞波 13 1.3.4 區塊鏈商用平臺:超級賬本 13 1.3.5 區塊鏈技術平臺比較 15 1.4 區塊鏈的商用之道 15 1.4.1 區塊鏈的2.0時代:商用區塊鏈 15 1.4.2 超級賬本:商用區塊鏈的“第五元素” 17 1.4.3 區塊鏈的商業應用場景 17 1.5 本章小結 18 第2章 超級賬本初體驗 19 2.1 基礎環境安裝 19 2.1.1 Docker的安裝和使用 19 2.1.2 Docker Compose的安裝和使用 21 2.1.3 下載超級賬本源代碼 24 2.2 超級賬本部署調用 24 2.2.1 下載Docker鏡像文件 24 2.2.2 部署超級賬本網絡 25 2.2.3 鏈碼調用和查詢 26 2.2.4 常見錯誤 27 2.3 節點的配置參數傳遞規則 29 2.4 本章小結 31 第二篇 核心篇 第3章 超級賬本的系統架構 34 3.1 系統邏輯架構 35 3.2 網絡節點架構 37 3.3 典型交易流程 39 3.3.1 創建交易提案并發送給背書節點 39 3.3.2 背書節點模擬交易并生成背書簽名 41 3.3.3 收集交易的背書 42 3.3.4 構造交易請求并發送給排序服務節點 43 3.3.5 排序服務節點以對交易進行排序并生成區塊 45 3.3.6 排序服務節點以廣播給組織的主節點 45 3.3.7 記賬節點驗證區塊內容并寫入區塊 45 3.3.8 在組織內部同步最新的區塊 49 3.4 消息協議結構 49 3.4.1 信封消息結構 49 3.4.2 配置管理結構 51 3.4.3 背書流程結構 52 3.5 策略管理和訪問控制 56 3.5.1 策略定義及其類型 56 3.5.2 交易背書策略 57 3.5.3 鏈碼實例化策略 60 3.5.4 通道管理策略 61 3.6 本章小結 63 第4章 基于Gossip的P2P數據分發 64 4.1 概述 64 4.2 超級賬本中的Gossip協議 65 4.3 成員認證及身份管理 67 4.4 節點啟動及成員管理 67 4.5 主節點選舉過程 68 4.6 基于反熵的狀態同步 69 4.7 數據傳播過程 70 4.8 多通道的支持 70 4.9 消息的驗證策略 71 4.10 消息的多路分用及分區 73 4.11 和Gossip相關的配置參數 76 4.12 本章小結 77 第5章 分布式賬本存儲 78 5.1 概述 78 5.2 讀寫集 79 5.2.1 交易模擬和讀寫集 79 5.2.2 交易驗證和世界狀態更新 80 5.2.3 模擬和驗證示例 80 5.3 賬本編號 81 5.4 賬本數據 81 5.4.1 賬本數據存儲 82 5.4.2 賬本數據讀取 83 5.4.3 交易模擬執行 84 5.5 區塊索引 84 5.5.1 文件位置指針 85 5.5.2 索引的同步過程 86 5.6 狀態數據 87 5.6.1 LevelDB 88 5.6.2 CouchDB 89 5.6.3 基于狀態數據的區塊驗證 91 5.7 歷史數據 92 5.8 數據恢復 92 5.9 本章小結 93 第6章 集成共識機制的排序服務 94 6.1 概述 94 6.1.1 共識算法的類型 95 6.1.2 Hyperledger Fabric 1.0的共識機制 96 6.2 實現數據隔離的多通道 97 6.2.1 排序服務的初始化 99 6.2.2 通道的創建 101 6.2.3 通道的更新 105 6.2.4 通道的加入 107 6.2.5 通道的查詢 107 6.3 可插拔的排序服務 108 6.3.1 排序服務接口 108 6.3.2 基于單進程的排序服務 110 6.3.3 基于Kafka的排序服務 110 6.3.4 鏈消息過濾器 122 6.4 本章小結 124 第7章 實現數據隔離的多鏈及多通道 125 7.1 數據存儲對多鏈的支持 126 7.1.1 賬本數據 126 7.1.2 索引數據 126 7.1.3 狀態數據 127 7.1.4 歷史數據 127 7.2 鏈碼對多鏈的支持 128 7.2.1 鏈碼的生命周期管理 128 7.2.2 鏈碼和背書節點的通信 129 7.2.3 鏈碼的部署和調用 130 7.3 多通道對多鏈的支持 131 7.4 命令行和SDK對多鏈的支持 132 7.5 關于系統鏈 132 7.6 本章小結 132 第8章 基于數字證書的成員管理服務 133 8.1 實現成員管理的MSP 133 8.1.1 MSP成員的驗證 133 8.1.2 MSP的目錄結構 134 8.1.3 MSP的配置最佳實踐 140 8.2 頒發數字證書的Fabric CA 142 8.2.1 概述 142 8.2.2 Fabric CA服務端的安裝部署 143 8.2.3 Fabric CA服務端的操作使用 148 8.3 本章小結 158 第9章 支持多種語言的智能合約 159 9.1 概述 160 9.2 鏈碼的生命周期管理 160 9.2.1 鏈碼的生命周期 160 9.2.2 應用程序和鏈碼的交互流程 164 9.2.3 背書節點接收應用程序的請求處理 165 9.2.4 采用上下文實現交易的模擬執行 166 9.2.5 鏈碼消息的數據分發 166 9.2.6 鏈碼運行環境的管理 168 9.3 內置的系統鏈碼 172 9.3.1 生命周期管理系統鏈碼 173 9.3.2 配置管理系統鏈碼 180 9.3.3 查詢管理系統鏈碼 182 9.3.4 交易背書系統鏈碼 182 9.3.5 交易驗證系統鏈碼 184 9.4 鏈碼的相互調用 184 9.5 背書節點和鏈碼的有限狀態機 185 9.5.1 背書節點和鏈碼之間的事件 188 9.5.2 背書節點的有限狀態機 189 9.5.3 鏈碼的有限狀態機 190 9.6 本章小結 192 第三篇 應用篇 第10章 超級賬本的應用開發模型 194 10.1 應用開發模型 194 10.2 應用程序開發的SDK 194 10.2.1 概述 195 10.2.2 SDK規范 195 10.2.3 應用場景介紹 204 10.3 鏈碼的開發和調試 210 10.3.1 鏈碼需要實現的接口 210 10.3.2 鏈碼的SDK提供給鏈碼的接口 212 10.3.3 鏈碼開發的注意事項 214 10.3.4 鏈碼的調試 215 10.4 本章小結 216 第11章 從零開始部署超級賬本網絡 217 11.1 準備超級賬本運行環境 217 11.1.1 超級賬本運行環境 217 11.1.2 編譯超級賬本鏡像文件 224 11.2 快速構建超級賬本網絡 227 11.2.1 下載BYFN的代碼 227 11.2.2 BYFN腳本介紹 227 11.2.3 生成網絡初始化配置 228 11.2.4 啟動超級賬本網絡 230 11.2.5 關閉超級賬本網絡 235 11.3 逐步建立超級賬本網絡 236 11.3.1 生成MSP證書 236 11.3.2 生成排序服務創世區塊 236 11.3.3 生成通道配置創世區塊 236 11.3.4 定義組織錨節點 237 11.3.5 啟動超級賬本網絡 237 11.3.6 創建并加入通道 238 11.3.7 安裝和實例化鏈碼 240 11.3.8 執行鏈碼查詢 243 11.3.9 執行鏈碼調用 244 11.4 本章小結 245 第12章 超級賬本的應用開發實例 246 12.1 票據背書場景介紹 246 12.1.1 票據關系人 247 12.1.2 票據行為分類 247 12.1.3 基于區塊鏈技術的數字票據 249 12.2 票據背書需求分析 250 12.3 票據背書架構設計 251 12.3.1 票據背書的分層架構 252 12.3.2 票據背書的數據模型 253 12.4 票據背書實現 254 12.4.1 應用程序實現 254 12.4.2 鏈碼功能實現 275 12.5 票據背書快速部署 287 12.6 票據背書展示 288 12.6.1 系統登錄 288 12.6.2 發布票據 288 12.6.3 我的票據 289 12.6.4 發起票據背書 289 12.6.5 待簽收票據列表 290 12.6.6 簽收票據背書 290 12.6.7 拒收票據背書 291 12.7 本章小結 292 附錄A 術語表 293 附錄B 超級賬本的實用工具 297 參考文獻 308 超級賬本執行董事Brian Behlendorf領銜推薦,資深一線區塊鏈專家聯合撰寫,區塊鏈和Hyperledger技術扛鼎之作。本書深度剖析區塊鏈框架Hyperledger Fabric 1.0的架構、核心技術、部署與應用開發。
本書分三篇,共12章。 準備篇(第1~2章),言簡意賅地介紹區塊鏈的核心理念、演進、主流平臺、商用場景,以及安裝、部署與調試。這兩章為讀者厘清思路,并可初步直觀感受區塊鏈。 核心篇(第3~9章),庖丁解牛式剖析Fabric 1.0架構到內部實現機制,該篇是本書的核心,是理解區塊鏈設計與實現的關鍵所在,也是日后應用的基礎。該篇涵蓋: Fabric架構、組件關系與運行機制總覽; Gossip協議與P2P數據分發機制; 分布式賬本數據相關的存儲技術; 共識機制及其可插拔架構設計; 如何實現數據隔離的多鏈與多通道; 基于數字證書的成員管理服務實現與使用; 智能合約實現、交互,以及有限狀態機。 應用篇(第10~12章),從安裝部署、開發模型和應用開發的角度,結合票據背書案例講解如何基于Hyperledger Fabric 1.0開發區塊鏈應用,以完整地掌握區塊鏈應用開發,動手實踐具體的項目。 為什么要寫這本書
區塊鏈是在全球范圍內受到極高關注的技術。簡而言之,區塊鏈就是防篡改并且由大家共同維護的賬本,其中包含不斷增長的數據記錄列表。根據現在的發展趨勢,區塊鏈將在商用領域得到廣泛應用。 超級賬本(Hyperledger)是Linux基金會旗下的區塊鏈開發平臺項目,致力于發展跨行業的商用區塊鏈平臺技術。超級賬本項目自創立伊始便吸引了眾多行業的領頭羊,包括金融、銀行、互聯網、運輸、制造等行業。目前,超級賬本項目在全球擁有超過100個成員,包括IBM、Cisco、Intel、J.P. Morgan、荷蘭銀行、SWIFT、R3等。基于區塊鏈技術、智能合約及其他相關技術,超級賬本項目致力于建立新一代的分布式賬本交易應用平臺,從而在簡化與商業流程相關的事務的同時,建立起商業信任、透明、審查等能力。Hyperledger Fabric子項目是以IBM早期捐獻出的Open Blockchain為主體搭建而成的,是一個帶有可插入各種功能模塊架構的區塊鏈實施方案,其目標是建立一個更加標準化的開源區塊鏈開發平臺,類似OpenStack之于云計算。Fabric主要框架的核心開發語言是Go語言,它非常適合聯盟鏈,具有更高的商業應用前景。 從2015年開始,由于在IBM中國實驗室工作,我開始接觸區塊鏈技術和IBM的Open Blockchain項目(即Hyperledger Fabric的前身),并開始為中國的金融用戶推薦它,幫助這些用戶借助區塊鏈的技術價值來實現科技和業務的創新。到了2016年下半年,Hyperledger Fabric開發平臺階段性地穩定在0.6版本,無論是IBM還是云圖智鏈(后來被智鏈ChainNova并購),都在很多行業應用場景中開始實踐Fabric 0.6版本。那時在國內,絕大多數的金融企業都在嘗試通過Hyperledger Fabric 0.6平臺來開發屬于自己的區塊鏈應用,我在那個時候有機會參與了不少相關的區塊鏈項目,涉及領域包括數字積分、資產托管和交易、保險、高價值商品溯源等。也正是從那時起,萌生了編寫一本書來解釋Hyperledger原理,介紹各項開發組件,并通過真實案例還原區塊鏈開發全過程,讓更多的人覺得區塊鏈或者Hyperledger離自己并不遙遠。于是,當時我們幾個作者從社區、不同的開發項目,以及各個開發團隊中開始收集和整理資料,完成了基于0.6版內容的大部分寫作工作。 但恰逢此時,Hyperledger的第一個商用版本1.0準備推出,我們也第一時間從Linux基金會得到了這個消息。從當時1.0版本的計劃來看,推出它的目的主要有兩個方面:一是Hyperledger希望以這個版本為基調,作為企業級區塊鏈平臺;二是為了解決0.6版本中出現的一些問題,1.0版本進行了很大的改變和調整,可以說這個變化是翻天覆地的,以至于我們半開玩笑地說從0.6版本到1.0版本甚至沒有可直接升級的路徑。當時我還在IBM工作,第一時間找到了云圖智鏈的張增駿老師等幾位作者和出版社的高婧雅編輯,和他們商量是否需要調整寫作方向和內容,因為在此之前實際上張增駿老師已經在上一個版本的寫作中付出了很多的時間和精力。幾乎是在十分鐘之內我們就一致決定要基于Hyperledger Fabric 1.0版本重新組織材料,重新編寫這本書,因為我們希望自己投入的時間和付出的精力為社區、眾多開發者和廣大對區塊鏈技術感興趣的讀者帶來一本真正實用的書,而不是僅僅為了把我們幾個人的名字留在封面上。數月后的今天,我們把初審過的稿件提交給出版社。這個過程中由于Hyperledger開源社區和代碼版本不斷迭代內容也不斷調整,經歷了更多我們之前沒涉及的新行業和應用場景,甚至經歷了我個人工作角色的變化,我們幾個作者最終堅持完成了本書的寫作。當然必須承認,由于能力和經驗不足,本書還有很多提升空間,內容本身也難免出現表達不準確的地方。本書希望拋磚引玉,歡迎讀者多提寶貴意見,指出本書存在的技術錯誤,爭取在下一版本中能糾正錯誤,不斷完善,進一步提升質量。同時,我們還會一直基于Hyperledger這個平臺不斷地進行產業實踐,后面還會以本書為起點策劃系列叢書,把我們在工作學習過程中得到的啟發和經驗分享給讀者。 本書作者大多來自智鏈ChainNova,均具有多年IT工作、實踐經驗。智鏈ChainNova與超級賬本社區一直有非常緊密的合作。2017年智鏈ChainNova研究院聯手Linux Foundation和IBM,共同主辦了HyperLedger Fabric商用正式版本1.0發布后Hyperledger開源社區第一次線下會議(北京Meetup),Hyperledger全球副總裁、亞太區負責人Julian Gordan和多家國內知名金融企業、科技企業高層出席。在2018年,智鏈ChainNova正在計劃攜手Linux Foundation、北京大學和IBM共同主辦超級賬本黑客馬拉松大賽(HyperLedger Hackathon)。同時為了進一步活躍Hyperledger社區,我們還即將承辦多項開源社區活動,歡迎讀者積極參與。相信讀者將在學習區塊鏈技術和Hyperledger的過程中獲益匪淺。 本書特色 筆者是Hyperledger社區成員,參與超級賬本社區的日常工作,了解超級賬本發展和技術細節的第一手資料。本書以Fabric 商用正式版本1.0作為底層平臺,其中也凝結了我們在Hyperledger開發理論和實際操作方面的經驗。 本書深入討論Hyperledger的核心技術,幫讀者分析原理、關鍵實現與使用,是為數不多深入探討和研究區塊鏈的書籍之一。 我們的目標是把本書作為高校、科研院所、職業培訓、企業技術學習的教材,向社會普及Hyperledger,培養更多的Hyperledger開發人才。 讀者對象 區塊鏈從業者 區塊鏈應用開發人員 其他區塊鏈技術愛好者(金融/Fintec從業者、產品經理、企業管理者等) 計算機及相關專業師生 如何閱讀本書 本書共有12章內容,大體可以分為三篇內容。 準備篇(第1~2章),介紹區塊鏈的基本概念,感受區塊鏈的魅力。 第1章 本章是區塊鏈技術與生態的概覽,涉及區塊鏈的基本概念、演進、主流平臺,并著重分析企業級區塊鏈平臺的應用場景,有助于讀者對區塊鏈和Hyperledger Fabric 1.0(以下簡稱Fabric)的設計理念有整體性的了解。 第2章 本章介紹Fabric的安裝、部署與調試。拋開復雜的底層技術細節,簡化復雜的部署過程,快速體驗Fabric的強大功能,以便有直觀的感受。 核心篇(第3~9章),從系統架構開始講解內部實現機制。 第3章 本章基于Fabric 1.0講解區塊鏈的架構,這是后續章節的基礎,高屋建瓴地看待各個部件之間的關系和運行邏輯。本章涉及系統邏輯架構、網絡節點架構、典型的交易流程、消息協議結構、策略管理和訪問控制等內容,后面章節會從技術角度逐一“拆解”。 第4章 本章介紹基于Gossip的P2P數據分發機制,包括節點啟動與成員管理、主節點選舉與基于反熵的狀態同步、身份認證與管理、多路分用與分區處理過程、消息的多種驗證策略等。 第5章 本章介紹最為基礎的分布式賬本技術,它涵蓋賬本數據、索引數據、狀態數據、歷史數據等的實現技術。 第6章 本章介紹如何在排序服務上實現多通道的數據隔離,包括創建通道、節點加入通道等。排序服務采用插件化設計,可以根據業務場景的需求采用不同的共識算法。本章后面的內容詳細介紹了排序服務的接口,以及實現了排序服務接口的Solo和Kafka模式。 第7章 本章介紹Fabric 1.0支持的多鏈及其內部的實現,多個鏈同時運行是一個系統工程,本章從數據存儲、鏈碼、命令行工具和SDK實現等多個方面分析如何支持多鏈。 第8章 本章介紹成員管理機制。它分為兩個部分,第一部分詳細介紹了MSP機制,包括MSP成員的驗證、目錄結構和配置最佳實踐等;第二部分介紹可選的Fabric CA,包括服務端的安裝部署和客戶端的使用,還介紹了服務端提供的RESTful接口。 第9章 本章介紹Fabric 1.0上智能合約的實現。包括的內容有鏈碼的生命周期管理、內置的系統鏈碼、鏈碼的相互調用、背書節點和鏈碼的有限狀態機等。 應用篇(第10~12章),從安裝部署和應用開發的角度,通過一個票據背書的案例講解如何基于Hyperledger Fabric 1.0開發區塊鏈應用。 第10章 本章介紹Fabric 1.0的應用開發模型。從應用開發的角度看,開發者需要關注兩部分:一部分是基于不同語言的SDK開發和區塊鏈網絡交互的應用程序;另一部分是實現超級賬本的智能合約。本章詳細介紹HFC SDK各個模塊及其主要功能,鏈碼的主要接口及其功能。 第11章 本章介紹多種Fabric 1.0的部署方式,包括分別基于Vagrant、Virtualbox、Docker的運行環境,以及BYFN腳本的使用。詳細說明如何手動構建Fabric 1.0網絡等。 第12章 本章通過一個票據背書示例,講解如何實際開發一個基于Fabric 1.0的區塊鏈應用。通過本章的實踐,讀者能夠掌握區塊鏈應用開發的方方面面,然后就可以動手開發具體的項目了。 讀者反饋與勘誤 歡迎讀者朋友反饋,請讓我們知道你對本書的看法——你喜歡哪些地方,不喜歡哪些地方。讀者反饋對于我們很重要,因為這將幫助我們繼續寫作使你獲益的書籍。 特別致謝 首先感謝本書的其他作者——張增駿老師、朱軒彤老師和陳劍雄老師。他們在工作之余,擠出寶貴時間為本書貢獻了他們對區塊鏈技術和Hyperledger的理解和洞察。特別感謝張增駿老師在工作本身比較繁忙的前提下,為本書花費了很多精力,他不僅在內容上積極供稿,還在審定、修改和校正方面下了很多工夫。朱軒彤老師博聞強識,本身具有很強的行業背景,對科技產業的發展又格外關注,這些在本書第1章中得到了充分體現。智鏈首席科學家陳劍雄也對本書的內容給出了很多寶貴的意見和建議,同時對本書合作的達成給予了支持。 萬分感謝超級賬本執行董事Brian Behlendorf先生,北京大學陳鐘教授和中國信息通信研究院云計算與大數據所何寶宏所長在百忙之中撥冗為本書做序,讓我感覺特別榮幸。他們在各自領域都是最頂尖的專家,同時對區塊鏈技術都有深刻且獨到的見解。還有蘇州同濟金融科技研究院馬小峰院長、中國電子學會區塊鏈專委會孫貽滋秘書長和超級賬本中國技術工作組楊保華主席為本書寫來熱情洋溢的推薦,令人備感溫暖。 在成書的過程中,和我一起工作和合作的很多專家對本書都給予了不同程度的支持和幫助,像Linux基金會超級賬本亞太區副總裁Julian Gordon和中國地區顧問龍文選先生,北京大學(天津濱海)新一代信息技術研究院馬修軍副院長,中國信息通信研究院云計算與大數據所魏凱主任和卿蘇德博士,IBM的各位領導和專家,以及其他各個單位的領導和大咖,在此抱歉不能一一盡述。 非常感謝機械工業出版社華章公司的編輯高婧雅,她的敬業精神和編輯效率令我由衷敬佩,她的反饋、建議、鼓勵和幫助引導我們克服諸多困難完成全部書稿。同時,本書的推廣得到了CSDN及其副總裁孟巖先生、InfoQ及其總編輯郭蕾先生這些好朋友的大力支持。 最后,因為工作和寫作,犧牲了很多本該陪伴家人的時間。我要特別感謝我的家人長期以來對我的默默支持和理解。 謹以本書獻給我最親愛的家人,多年以來幫助、支持我的師友,以及眾多熱愛區塊鏈技術的朋友! 董寧 2017年12月 |