區塊鏈原理、設計與應用 区块链原理、设计与应用

楊保華, 陳昌

  • 出版商: 人民郵電
  • 出版日期: 2017-08-01
  • 定價: $534
  • 售價: 8.5$454
  • 語言: 簡體中文
  • 頁數: 354
  • 裝訂: 平裝
  • ISBN: 7111577825
  • ISBN-13: 9787111577829
  • 相關分類: 區塊鏈 Blockchain
  • 立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

本書由超級賬本核心設計和開發者撰寫,是區塊鏈開發落地專業指南。由淺入深、系統化介紹超級賬本Fabric設計精華、應用開發等。全書分為理論篇和實踐篇兩大部分;第1~3章介紹區塊鏈技術的由來、核心思想及典型的應用場景;第4~5章重點介紹區塊鏈技術中大量出現的分佈式系統技術和密碼學安全技術;第6~8章介紹區塊鏈領域的三個典型開源項目:比特幣、以太坊以及超級賬本;第9-11章以超級賬本Fabric項目為例,具體講解了安裝部署、配置管理,以及使用 Fabric CA 進行證書管理的實踐經驗;第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