區塊鏈原理、設計與應用

區塊鏈原理、設計與應用
定價:534
NT $ 465
  • 作者:楊保華
  • 出版社:機械工業出版社
  • 出版日期:2017-08-01
  • 語言:簡體中文
  • ISBN10:7111577825
  • ISBN13:9787111577829
  • 裝訂:353頁 / 普通級 / 1-1
 

內容簡介

本書由超級賬本核心設計和開發者撰寫,是區塊鏈開發落地專業指南。由淺入深、系統化介紹超級賬本Fabric設計精華、應用開發等。

全書分為理論篇和實踐篇兩大部分;第1~3章介紹區塊鏈技術的由來、核心思想及典型的應用場景;第4~5章重點介紹區塊鏈技術中大量出現的分布式系統技術和密碼學安全技術;第6~8章介紹區塊鏈領域的三個典型開源項目:比特幣、以太坊以及超級賬本;第9-11章以超級賬本Fabric項目為例,具體講解了安裝部署、配置管理,以及使用FabricCA進行證書管理的實踐經驗;第12章重點剖析超級賬本Fabric項目的核心架構設計;第13章介紹區塊鏈應用開發的相關技巧和示例;第14章介紹區塊鏈服務平台的設計與開發,並講解應用超級賬本Cello項目構建服務平台的相關知識。

本書覆蓋了區塊鏈和分布式賬本領域的最新技術,可幫助讀者深入理解區塊鏈核心原理和典型設計實現,以及高效地開發基於區塊鏈平台的分布式應用。

楊保華:博士,畢業於清華大學。超級賬本(Hyperledger)大中華區技術工作組主席,IBM大中華區Blockchain技術社區首席顧問,資深研究員。曾主持多個大規模系統平台的架構設計和研發實施,是區塊鏈、雲計算、大數據等技術的早期研究者和實踐者。他熱愛開源技術,曾貢獻OpenStack、OpenDaylight等開源項目,是超級賬本Fabric項目核心設計和開發者,也是Cello和Fabric-SDK-Py項目的發起人。

陳昌:畢業於清華大學。紙貴科技CTO,曾任IBM高級研究員。技術方向包括雲計算、區塊鏈、機器學習等。他是區塊鏈技術的早期研究和推動者,是超級賬本(Hyperledger)項目核心開發者。他有豐富的區塊鏈應用實踐經驗,曾負責金融行業區塊鏈解決方案的架構設計和實施,並主導開發了若干區塊鏈服務平台。
 

目錄

序 言
前 言
理 論 篇
第1章 區塊鏈思想的誕生 2
1.1 從實體貨幣到數字貨幣 2
1.2 站在巨人的肩膀上 5
1.3 了不起的社會學實驗 5
1.4 潛在的商業價值 7
1.5 本章小結 8
第2章 核心技術概覽 9
2.1 定義與原理 9
2.2 技術的演化與分類 11
2.3 關鍵問題和挑戰 13
2.4 趨勢與展望 17
2.5 認識上的誤區 19
2.6 本章小結 19
第3章 典型應用場景 20
3.1 應用場景概覽 20
3.2 金融服務 22
3.2.1 銀行業金融管理 22
3.2.2 證券交易 24
3.2.3 眾籌投資 25
3.3 征信和權屬管理 26
3.4 資源共享 28
3.5 貿易管理 29
3.6 物聯網 30
3.7 其他場景 31
3.8 本章小結 33
第4章 分布式系統核心問題 34
4.1 一致性問題 34
4.1.1 定義與重要性 34
4.1.2 問題與挑戰 35
4.1.3 一致性要求 36
4.1.4 帶約束的一致性 36
4.2 共識算法 37
4.2.1 問題與挑戰 38
4.2.2 常見算法 38
4.2.3 理論界限 38
4.3 FLP 不可能原理 39
4.3.1 定義 39
4.3.2 正確理解 39
4.4 CAP 原理 40
4.4.1 定義 40
4.4.2 應用場景 41
4.5 ACID 原則 41
4.6 Paxos 算法與 Raft 算法 42
4.6.1 Paxos 算法 42
4.6.2 Raft 算法 45
4.7 拜占庭問題與算法 45
4.8 可靠性指標 48
4.8.1 幾個 9 的指標 48
4.8.2 兩個核心時間 49
4.8.3 提高可靠性 49
4.9 本章小結 49
第5章 密碼學與安全技術 50
5.1 Hash 算法與數字摘要 50
5.1.1 Hash定義 50
5.1.2 常見算法 51
5.1.3 性能 51
5.1.4 數字摘要 52
5.1.5 Hash 攻擊與防護 52
5.2 加解密算法 52
5.2.1 加解密系統基本組成 53
5.2.2 對稱加密算法 53
5.2.3 非對稱加密算法 54
5.2.4 選擇明文攻擊 55
5.2.5 混合加密機制 56
5.2.6 離散對數與 Diffie–Hellman密鑰交換協議 57
5.3 消息認證碼與數字簽名 57
5.3.1 消息認證碼 58
5.3.2 數字簽名 58
5.3.3 安全性 59
5.4 數字證書 59
5.4.1 X.509 證書規范 60
5.4.2 證書格式 61
5.4.3 證書信任鏈 62
5.5 PKI 體系 63
5.5.1 PKI 基本組件 63
5.5.2 證書的簽發 63
5.5.3 證書的撤銷 66
5.6 Merkle樹結構 66
5.7 布隆過濾器 67
5.8 同態加密 68
5.9 其他問題 70
5.10 本章小結 71
第6章 比特幣——區塊鏈思想誕生的搖籃 72
6.1 比特幣項目簡介 72
6.1.1 比特幣大事記 73
6.1.2 其他數字貨幣 74
6.2 原理和設計 75
6.2.1 基本交易過程 75
6.2.2 重要概念 76
6.2.3 創新設計 78
6.3 挖礦 80
6.3.1 基本原理 80
6.3.2 挖礦過程 81
6.3.3 如何看待挖礦 81
6.4 共識機制 82
6.4.1 工作量證明 82
6.4.2 權益證明 83
6.5 閃電網絡 83
6.6 側鏈 85
6.6.1 SPV 證明 85
6.6.2 雙向掛鉤 86
6.6.3 最新進展 87
6.7 熱點問題 87
6.7.1 設計中的權衡 87
6.7.2 分叉 87
6.7.3 交易延展性 88
6.7.4 擴容之爭 89
6.7.5 比特幣的監管和追蹤 90
6.8 相關工具 91
6.9 本章小結 92
第7章 以太坊——掙脫數字貨幣的枷鎖 93
7.1 以太坊項目簡介 93
7.1.1 以太坊項目簡史 94
7.1.2 主要特點 95
7.2 核心概念 95
7.3 主要設計 97
7.3.1 智能合約相關設計 97
7.3.2 交易模型 97
7.3.3 共識 97
7.3.4 降低攻擊 98
7.3.5 提高擴展性 98
7.4 相關工具 98
7.4.1 客戶端和開發庫 98
7.4.2 以太坊錢包 99
7.4.3 IDE 100
7.4.4 網站資源 100
7.5 安裝客戶端 100
7.5.1 從 PPA 直接安裝 100
7.5.2 從源碼編譯 101
7.6 使用智能合約 102
7.6.1 搭建測試用區塊鏈 102
7.6.2 創建和編譯智能合約 104
7.6.3 部署智能合約 105
7.6.4 調用智能合約 106
7.7 智能合約案例:投票 106
7.7.1 智能合約代碼 107
7.7.2 代碼解析 109
7.8 本章小結 111
第8章 超級賬本——面向企業的分布式賬本 112
8.1 超級賬本項目簡介 112
8.2 社區組織結構 114
8.2.1 基本結構 114
8.2.2 大中華區技術工作組 114
8.3 ......項目介紹 115
8.3.1 Fabric 項目 116
8.3.2 Sawtooth 項目 117
8.3.3 Iroha 項目 117
8.3.4 Blockchain Explorer 項目 117
8.3.5 Cello 項目 118
8.3.6 Indy 項目 118
8.3.7 Composer 項目 118
8.3.8 Burrow 項目 119
8.4 開發必備工具 119
8.4.1 Linux Foundation ID 119
8.4.2 Jira——任務和進度管理 119
8.4.3 Gerrit——代碼倉庫和 Review管理 120
8.4.4 RocketChat——在線溝通 121
8.5 貢獻代碼 121
8.6 本章小結 126
實 踐 篇
第9章 超級賬本 Fabric 部署和使用 128
9.1 簡介 128
9.2 本地編譯安裝 129
9.2.1 操作系統 130
9.2.2 環境配置 130
9.2.3 獲取代碼 131
9.2.4 編譯安裝 fabric—peer 組件 131
9.2.5 編譯安裝 fabric—orderer 組件 132
9.2.6 編譯安裝 fabric—ca 組件 133
9.2.7 編譯安裝輔助工具 133
9.2.8 獲取 chaintool 133
9.2.9 安裝Go語言相關工具 134
9.2.10 示例配置 134
9.3 使用 Docker 鏡像 134
9.3.1 安裝 Docker 服務 134
9.3.2 安裝 docker—compose 135
9.3.3 獲取 Docker 鏡像 135
9.3.4 鏡像 Dockerfile 138
9.4 啟動 Fabric 網絡 143
9.4.1 網絡拓撲 143
9.4.2 准備相關配置文件 144
9.4.3 啟動 Orderer 節點 150
9.4.4 啟動 Peer 節點 151
9.4.5 操作網絡 152
9.4.6 基於容器方式 156
9.5 鏈碼的概念與使用 157
9.5.1 鏈碼操作命令 158
9.5.2 命令參數 158
9.5.3 安裝鏈碼 159
9.5.4 實例化鏈碼 162
9.5.5 調用鏈碼 165
9.5.6 查詢鏈碼 167
9.5.7 升級鏈碼 168
9.5.8 打包鏈碼和簽名 169
9.6 使用多通道 170
9.6.1 通道操作命令 170
9.6.2 命令選項 171
9.6.3 創建通道 172
9.6.4 加入通道 174
9.6.5 列出所加入的通道 175
9.6.6 獲取某區塊 176
9.6.7 更新信道配置 177
9.7 SDK 支持 178
9.8 生產環境注意事項 179
9.9 本章小結 181
第10章 超級賬本 Fabric 配置管理 182
10.1 簡介 182
10.1.1 配置文件 182
10.1.2 配置管理工具 183
10.2 Peer 配置剖析 183
10.2.1 logging部分 184
10.2.2 peer部分 184
10.2.3 vm部分 188
10.2.4 chaincode部分 189
10.2.5 ledger部分 190
10.3 Orderer 配置剖析 191
10.4 cryptogen 生成組織身份配置 194
10.4.1 配置文件 195
10.4.2 子命令和參數 196
10.4.3 生成密鑰和證書文件 196
10.4.4 查看配置模板信息 198
10.5 configtxgen 生成信道配置 199
10.5.1 configtx.yaml配置文件 199
10.5.2 命令選項 203
10.5.3 生成Orderer初始區塊並進行查看 203
10.5.4 生成新建信道交易文件並進行查看 211
10.5.5 生成錨節點更新交易文件 215
10.6 configtxlator 轉換配置 215
10.6.1 RESTful接口 215
10.6.2 解碼為Json格式 216
10.6.3 編碼為二進制格式 217
10.6.4 計算配置更新量 217
10.6.5 更新信道配置 218
10.7 本章小結 219
第11章 超級賬本 Fabric CA 應用與配置 220
11.1 簡介 220
11.2 安裝服務端和客戶端 221
11.2.1 本地編譯 221
11.2.2 獲取和使用Docker鏡像 223
11.2.3 示例Dockerfile 223
11.3 啟動 CA 服務 225
11.4 服務端命令剖析 228
11.4.1 全局命令參數 228
11.4.2 init命令 230
11.4.3 start命令 230
11.5 服務端配置文件解析 231
11.6 與服務端進行交互 235
11.7 客戶端命令剖析 237
11.7.1 全局命令參數 237
11.7.2 enroll命令 239
11.7.3 getcacert命令 240
11.7.4 reenroll命令 241
11.7.5 register命令 241
11.7.6 revoke命令 242
11.8 客戶端配置文件解析 243
11.9 生產環境部署 245
11.10 本章小結 247
第12章 超級賬本 Fabric 架構與設計 248
12.1 整體架構概覽 248
12.1.1 核心特性 248
12.1.2 整體架構 249
12.1.3 典型工作流程 249
12.2 核心概念與組件 251
12.2.1 網絡層相關組件 252
12.2.2 共識相關組件 254
12.2.3 權限管理相關組件 255
12.2.4 業務層相關組件 257
12.3 gRPC 消息協議 262
12.3.1 Envelope消息結構 262
12.3.2 客戶端訪問Peer節點 263
12.3.3 客戶端、Peer節點訪問Orderer 265
12.3.4 鏈碼容器和Peer節點之間的操作 265
12.3.5 多個節點之間的操作 266
12.4 權限管理和策略 267
12.4.1 策略應用場景 267
12.4.2 身份證書 268
12.4.3 權限策略的實現 268
12.4.4 通道策略 272
12.4.5 背書策略 273
12.4.6 實例化策略 273
12.5 用戶鏈碼 274
12.5.1 基本結構 274
12.5.2 鏈碼與Peer的交互過程 275
12.5.3 鏈碼處理狀態機 277
12.6 系統鏈碼 279
12.7 排序服務 281
12.7.1 gRPC服務接口 282
12.7.2 鏈和賬本管理 283
12.7.3 信道配置更新 284
12.7.4 共識插件 286
12.8 本章小結 288
第13章 區塊鏈應用開發 290
13.1 簡介 290
13.2 鏈碼的原理、接口與結構 292
13.2.1 Chaincode接口 292
13.2.2 鏈碼結構 293
13.2.3 鏈碼基本工作原理 294
13.3 鏈碼開發 API 295
13.3.1 賬本狀態交互API 296
13.3.2 交易信息相關API 296
13.3.3 參數讀取API 297
13.3.4 其他API 297
13.4 應用開發案例一:轉賬 298
13.4.1 鏈碼結構 298
13.4.2 Init方法 299
13.4.3 Invoke方法 300
13.5 應用開發案例二:資產權屬管理 301
13.5.1 鏈碼結構 301
13.5.2 Invoke方法 303
13.6 應用開發案例三:調用其他鏈碼 312
13.7 應用開發案例四:發送事件 313
13.8 開發最佳實踐小結 314
13.9 本章小結 316
第14章 區塊鏈服務平台設計 317
14.1 簡介 317
14.1.1 參考架構 318
14.1.2 考慮指標 318
14.2 IBM Bluemix 雲區塊鏈服務 319
14.3 微軟 Azure 雲區塊鏈服務 321
14.4 使用超級賬本 Cello 搭建區塊鏈服務 324
14.4.1 基本架構和特性 324
14.4.2 環境准備 325
14.4.3 下載Cello源碼 325
14.4.4 配置Worker節點 325
14.4.5 配置Master節點 326
14.4.6 使用Cello管理區塊鏈 327
14.4.7 基於Cello進行功能擴展 330
14.5 本章小結 330
附 錄
附錄A 術語表 334
附錄B 常見問題解答 338
附錄C Golang 開發相關 342
附錄D ProtoBuf 與 gRPC 349
附錄E 參考資源 353
 

金融是人類文明發展過程中經濟運行的基礎,自誕生起,金融領域就伴隨經濟發展的階段和商業模式的變遷不斷涌現出先進的技術手段,這些都大大提升了社會和經濟的運轉效率。從延續了近千年的紙質記賬,到二十世紀的電子化交易,再到影響現在及未來的互聯網、大數據、人工智能和區塊鏈,金融行業和金融科技領域始終以開放的姿態迎接新技術和新變化,並不斷進行自我革新和升華。

區塊鏈技術是金融科技領域當下最受人關注的方向之一。區塊鏈作為一個新興技術,具備去中心化、防篡改、可追溯等眾多金融領域十分需要的特點。它可以實現多方場景下開放、扁平化的全新合作信任模型,而這些都為實現更高效的資源配置,更具體地說是金融交易,提供了有效的技術手段。在可見的未來,區塊鏈技術將為人類商業社會的快速發展帶來更多發展機遇和成長空間。

區塊鏈技術在金融領域的實際應用之一——新型數字貨幣,被認為具備了變革整個金融行業的潛力,引發了國內外廣泛的研究討論和實踐。英國央行已在研發利用分布式賬本技術的下一代支付系統。中國人民銀行也組建了數字貨幣研究所,深入研究數字貨幣相關的技術和監管課題。國際貨幣基金組織也公開認可區塊鏈技術在清算和結算方面的獨特優勢。

清華五道口金融學院始終密切關注和積極開展金融行業及區塊鏈相關領域的學術與研究,於2012年成立互聯網金融實驗室,專注於互聯網金融和金融科技領域的研究、開發與孵化,並聯合國內外眾多的創新型企業和研究機構,一起開展數字資產和區塊鏈相關的課題和項目。

當然,創新技術的發展和落地往往難以一蹴而就。我們應該認識到,區塊鏈技術目前仍處於早期階段,在支撐大規模商業應用場景上還存在不少挑戰,例如如何在不影響業務運行的前提下,將區塊鏈系統融合到已有的業務系統;如何讓區塊鏈系統的處理性能滿足金融交易的苛刻需求;如何設計基於區塊鏈的全新業務運營框架,並對其實現有效的監管。這些都是非常值得進一步探索的課題。

在此之際,很欣喜地看到有這樣一本系統講解區塊鏈技術及實踐的書籍出版。與其他介紹區塊鏈的圖書不同,本書並沒有局限在闡述區塊鏈的思想、概念和應用場景等理論知識層面,而是進一步從實現角度剖析了區塊鏈平台的架構、設計,並提供了大量一手的開發實踐案例,特別是全球區塊鏈領域首屈一指的開源項目——超級賬本。這些都將幫助讀者更深刻地理解和掌握區塊鏈技術的核心原理與應用方法。

本書作者在技術體系的經驗和視野、創新意識、國際化合作等方面都展現出了作為金融科技專家的綜合素養,讓我們對中國金融業進入下一個全新的發展階段的人才儲備充滿了信心。我們願意跟作者們一起,共同關注、共同努力於中國金融科技的未來。

廖理,教授,博士生導師,清華大學五道口金融學院
2017年8月於清華五道口
網路書店 類別 折扣 價格
  1. 新書
    87
    $465