本書詳細介紹了區(qū)塊鏈的概念與技術(shù)體系,涉及其本質(zhì)、作用、技術(shù)背景、原理、關(guān)鍵知識點和應用場景等,在內(nèi)容寫作上由整體到局部,層次分明,難度由淺入深,理論聯(lián)系實際,力圖使讀者能快速、全面地了解區(qū)塊鏈相關(guān)技術(shù)。
全書共10章。第1章從區(qū)塊鏈的背景知識切入,介紹了區(qū)塊鏈的基本概念,分析了區(qū)塊鏈的價值基礎,概括了當前區(qū)塊鏈的主要應用與面臨的挑戰(zhàn)。第2章介紹了區(qū)塊鏈的發(fā)展歷程,揭示了區(qū)塊鏈技術(shù)從產(chǎn)生到發(fā)展壯大的過程。第3章介紹了區(qū)塊鏈的總體技術(shù)體系架構(gòu)、核心層原理、開發(fā)架構(gòu)與評估體系,并介紹了目前經(jīng)典的區(qū)塊鏈軟件架構(gòu)。第4章主要介紹區(qū)塊鏈的賬戶系統(tǒng),詳細介紹了區(qū)塊鏈涉及的主要密碼學知識。第5章介紹了區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu),闡述了區(qū)塊鏈產(chǎn)生和運行的基本原理。第6章介紹了區(qū)塊鏈的網(wǎng)絡基礎,即P2P網(wǎng)絡的結(jié)構(gòu)和基本原理。第7章分析了區(qū)塊鏈的共識機制,并對不同共識機制的特性與適用場景進行了分析。第8章介紹了智能合約的基本原理、發(fā)展過程與面臨的挑戰(zhàn)。第9章詳細介紹了在以太坊上編寫智能合約的方法和部署過程。第10章介紹了一個簡單的區(qū)塊鏈系統(tǒng)的開發(fā)實例,逐步帶領助讀者進行區(qū)塊鏈系統(tǒng)的開發(fā)。
本書可作為信息類相關(guān)專業(yè)本科生教學類用書,也適合作為有志于研究區(qū)塊鏈的讀者的入門圖書,還可作為科研人員、工程技術(shù)人員以及商務人員的參考用書。
1.詳細介紹區(qū)塊鏈的產(chǎn)生背景與發(fā)展歷程,讓讀者快速了解區(qū)塊鏈;
2.全面講解區(qū)塊鏈技術(shù)體系與數(shù)據(jù)結(jié)構(gòu),幫助讀者深入理解區(qū)塊鏈;
3.深度剖析共識機制和智能合約,幫助讀者掌握區(qū)塊鏈核心技術(shù);
4.結(jié)合案例介紹區(qū)塊鏈搭建過程,幫助讀者成功搭建自己的區(qū)塊鏈。
趙其剛,博士后,國信區(qū)塊鏈研究中心主任,成都高新信息技術(shù)研究院院長,西南交通大學教師,國信公鏈(CIC)、CNG 農(nóng)業(yè)鏈首席架構(gòu)師;長期從事互聯(lián)網(wǎng)、智慧城市及軟件技術(shù)架構(gòu)相關(guān)研究、教學及工程實踐活動,近年來重點從事工業(yè)4.0、區(qū)塊鏈相關(guān)理論及技術(shù)研發(fā)工作;發(fā)表學術(shù)論文20 余篇,出版圖書5 種,并在中國大學MOOC 平臺開設“區(qū)塊鏈技術(shù)與應用”在線課程;主持各類科研課題100 余項,獲得軟件著作權(quán)、發(fā)明專利及相關(guān)科技成果獎勵50 余項(區(qū)塊鏈技術(shù)發(fā)明專利20 余項)。
王紅軍,博士, 西南交通大學信息科學與技術(shù)學院副研究員, 碩士生導師, 中國計算機學會高級會員,中國計算機學會人工智能與模式識別專委會委員,中國計算機學會協(xié)同計算專委會委員,中國人工智能學會機器學習專委會委員,四川省學術(shù)與技術(shù)帶頭人后備人選;主持、主研國家級項目5項;發(fā)表學術(shù)論文70 余篇。
李天瑞,博士, 西南交通大學信息科學與技術(shù)學院教授, 博士生導師, 人工智能研究院副院長, 四川省云計算與智能技術(shù)高校重點實驗室主任, 四川省學術(shù)與技術(shù)帶頭人, 國際粗糙集學會會士和指導委員會主席;主持國家重點研發(fā)計劃課題、國家自然科學基金項目等國家級項目7 項, 在國際會議做大會報告24 次;發(fā)表學術(shù)論文360 余篇,出版圖書6 種, 主編SCI 期刊專輯10 集, 獲得發(fā)明專利12 項。
王明文,博士, 西南交通大學數(shù)學學院副教授, 碩士生導師, 中國計算機學會高級會員,四川省計算機學會多媒體專委會委員;主持國家級項目1 項, 省部級項目5 項;發(fā)表學術(shù)論文30 余篇,獲得發(fā)明專利3 項。
成飏,博士,西南交通大學信息化研究院助理研究員,主要研究方向為區(qū)塊鏈技術(shù)、云計算與計算智能,主持、主研國家和省部級項目多項,發(fā)表論文10 余篇,參與編寫教材2 種。
第 1章 區(qū)塊鏈概述
1.1 區(qū)塊鏈產(chǎn)生的背景 002
1.1.1傳統(tǒng)信任體系的局限 004
1.1.2互聯(lián)社會發(fā)展的瓶頸 005
1.1.3區(qū)塊鏈“信任”的發(fā)展 006
1.2 區(qū)塊鏈的基本概念 008
1.2.1區(qū)塊鏈的定義 009
1.2.2私有鏈、聯(lián)盟鏈與公有鏈 010
1.2.3主鏈和側(cè)鏈 011
1.3 區(qū)塊鏈的價值基礎 012
1.3.1區(qū)塊鏈解決的根本問題 012
1.3.2區(qū)塊鏈思維 014
1.3.3區(qū)塊鏈技術(shù)架構(gòu) 015
1.3.4區(qū)塊鏈服務網(wǎng)絡 017
1.3.5區(qū)塊鏈價值生態(tài)系統(tǒng) 018
1.4 區(qū)塊鏈的應用 020
1.4.1資產(chǎn)區(qū)塊鏈化 020
1.4.2價值存儲區(qū)塊鏈化 022
1.4.3提升社會協(xié)同效率 022
1.4.4催生互助型產(chǎn)業(yè)生態(tài) 023
1.4.5培育共識自治社群 024
1.5 區(qū)塊鏈的挑戰(zhàn) 025
1.5.1技術(shù)的挑戰(zhàn) 025
1.5.2商業(yè)的挑戰(zhàn) 026
1.5.3社會治理的挑戰(zhàn) 026
1.6 課后習題 027
第 2章 區(qū)塊鏈的發(fā)展
2.1 區(qū)塊鏈的發(fā)展歷程 029
2.2 區(qū)塊鏈1.0 030
2.2.1比特幣簡介 030
2.2.2比特幣的獲取與交易 031
2.2.3比特幣的工作流程 032
2.2.4“雙花”問題 033
2.2.5“分叉”問題 034
2.3 區(qū)塊鏈2.0 036
2.3.1從智能合約到以太坊 036
2.3.2以太坊的工作流程 038
2.3.3基于以太坊的去中心化應用 039
2.4 區(qū)塊鏈3.0 041
2.4.1超級賬本 042
2.4.2區(qū)塊鏈3.0 應用場景 043
2.5 區(qū)塊鏈在中國的發(fā)展 045
2.6 課后習題 046
第3章 區(qū)塊鏈技術(shù)體系
3.1 總體架構(gòu) 048
3.1.1基礎層 050
3.1.2合約層 051
3.1.3應用層 052
3.1.4接入層 055
3.2 核心層技術(shù)原理 055
3.2.1共識賬本 056
3.2.2核心層架構(gòu) 056
3.2.3區(qū)塊鏈中的交易 059
3.2.4區(qū)塊與區(qū)塊鏈的形成 061
3.3 開發(fā)架構(gòu) 062
3.3.1系統(tǒng)分析 062
3.3.2總體設計 065
3.3.3軟件設計 066
3.3.4特殊考慮 068
3.4 典型區(qū)塊鏈軟件架構(gòu) 069
3.4.1比特幣 069
3.4.2以太坊 071
3.4.3超級賬本 074
3.4.4EOS 077
3.5 區(qū)塊鏈項目評價 079
3.5.1指標體系 080
3.5.2指標評價 082
3.5.3評估流程 084
3.6 課后習題 086
第4章 區(qū)塊鏈賬戶
4.1 哈希函數(shù) 088
4.1.1概述 089
4.1.2SHA256 算法 090
4.2 公鑰密碼體制 094
4.2.1非對稱加密算法 094
4.2.2數(shù)字簽名技術(shù) 096
4.2.3RSA 算法 097
4.2.4橢圓曲線算法 100
4.3 區(qū)塊鏈狀態(tài)庫 104
4.3.1狀態(tài)庫 104
4.3.2用戶賬戶和合約賬戶 104
4.4 用戶賬戶活動 105
4.4.1用戶地址 106
4.4.2交易發(fā)起 107
4.5 合約賬戶活動 108
4.5.1合約的創(chuàng)建 108
4.5.2合約的調(diào)用 110
4.6 課后習題 111
第5章 區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)
5.1 設計思路 113
5.1.1哈希指針 113
5.1.2默克爾樹 114
5.2 數(shù)據(jù)結(jié)構(gòu) 116
5.2.1區(qū)塊 116
5.2.2區(qū)塊結(jié)構(gòu) 117
5.2.3區(qū)塊頭 117
5.2.4區(qū)塊體 118
5.3 結(jié)構(gòu)樹 119
5.3.1交易樹 120
5.3.2狀態(tài)樹 121
5.3.3收據(jù)樹 122
5.4 區(qū)塊鏈的生成 122
5.4.1區(qū)塊的生成 123
5.4.2區(qū)塊的傳播 127
5.4.3區(qū)塊的校驗 127
5.5 比特幣交易示例 128
5.6 課后習題 133
第6章 區(qū)塊鏈與P2P網(wǎng)絡
6.1 P2P網(wǎng)絡概述 135
6.1.1P2P 網(wǎng)絡的基本概念 135
6.1.2P2P 網(wǎng)絡的特點 137
6.1.3P2P 網(wǎng)絡的主要應用場景 140
6.2 P2P網(wǎng)絡模型 142
6.2.1P2P 網(wǎng)絡模型概述 142
6.2.2集中目錄式P2P 網(wǎng)絡模型 143
6.2.3純P2P 網(wǎng)絡模型 145
6.2.4分層式P2P 網(wǎng)絡模型 148
6.3 區(qū)塊鏈P2P網(wǎng)絡 152
6.3.1P2P 與區(qū)塊鏈的關(guān)系 152
6.3.2區(qū)塊鏈網(wǎng)絡的可靠性 153
6.3.3案例:日食攻擊 154
6.4 實現(xiàn)案例:比特幣系統(tǒng)的P2P網(wǎng)絡 156
6.4.1節(jié)點發(fā)現(xiàn) 157
6.4.2連接節(jié)點 158
6.4.3初始化區(qū)塊下載 159
6.4.4區(qū)塊廣播 164
6.4.5孤立區(qū)塊 166
6.4.6交易廣播 166
6.4.7交易池(內(nèi)存池) 167
6.5 實現(xiàn)案例:以太坊的P2P網(wǎng)絡 167
6.5.1引導節(jié)點的實現(xiàn) 168
6.5.2以太坊的P2P 協(xié)議結(jié)構(gòu)類型 169
6.5.3以太坊的P2P 協(xié)議 170
6.5.4以太坊的P2P 節(jié)點 171
6.6 課后習題 176
第7章 共識機制與獎勵機制
7.1 共識機制的引入 178
7.1.1兩軍問題 179
7.1.2拜占庭將軍問題 181
7.2 共識機制與獎勵機制概述 183
7.2.1共識機制的設計 183
7.2.2獎勵機制的設計 185
7.3 PoW共識機制 191
7.3.1基本概念 191
7.3.2比特幣系統(tǒng)PoW 共識機制的實現(xiàn)原理 192
7.3.3以太坊PoW 共識機制的實現(xiàn)原理 195
7.3.4算法分析 196
7.4 PoS系列共識機制 198
7.4.1PoS 共識思想 199
7.4.2股份授權(quán)證明共識機制 201
7.4.3基于投注的共識機制 204
7.4.4基于認證的共識機制 205
7.5 其他常見的公有鏈共識機制 209
7.6 拜占庭共識機制 210
7.6.1拜占庭容錯系統(tǒng) 210
7.6.2實用拜占庭容錯 212
7.6.3授權(quán)拜占庭容錯 214
7.7 傳統(tǒng)分布式共識機制 215
7.7.1帕克索斯算法系列 215
7.7.2Raft 算法 217
7.8 共識機制總結(jié) 219
7.9 實現(xiàn)案例:共識機制 221
7.9.1比特幣系統(tǒng)PoW 共識機制的實現(xiàn)案例 221
7.9.2以太坊PoW 共識機制的實現(xiàn)案例 230
7.9.3以太坊的PoS 共識機制的實現(xiàn)原理 237
7.10 課后習題 259
第8章 智能合約
8.1 智能合約概述 262
8.1.1智能合約的定義 262
8.1.2智能合約與區(qū)塊鏈結(jié)合的意義 264
8.2 智能合約的工作原理 266
8.2.1區(qū)塊鏈智能合約的演變 266
8.2.2以太坊智能合約的運行原理 270
8.2.3以太坊智能合約的構(gòu)建與執(zhí)行過程 272
8.3 以太坊智能合約基礎 274
8.3.1智能合約的編程語言 274
8.3.2入門代碼例程 275
8.3.3智能合約的操作 275
8.3.4EVM 的存儲方式 277
8.3.5指令集和消息調(diào)用 278
8.3.6日志功能 279
8.4 智能合約的潛在問題 280
8.4.1以太坊智能合約安全事件 280
8.4.2其他安全事件 283
8.4.3智能合約的安全建議 287
8.5 課后習題 288
第9章 以太坊智能合約的開發(fā)與實踐
9.1 以太坊開發(fā)環(huán)境的搭建 290
9.2 以太坊的交易與合約 291
9.2.1以太坊的賬戶類型 291
9.2.2交易與消息 292
9.3 以太坊接口 293
9.3.1接口方式 293
9.3.2以太坊接口配置 294
9.4 以太坊智能合約開發(fā) 296
9.4.1本地私有鏈的搭建與配置 296
9.4.2智能合約的結(jié)構(gòu) 301
9.4.3智能合約的開發(fā)工具 303
9.4.4智能合約的部署與調(diào)用 304
9.5 創(chuàng)建企業(yè)級智能合約 307
9.5.1探索ganache-cli 307
9.5.2ganache-cli 的安裝與使用 308
9.5.3可用RPC 方法 310
9.5.4Truffl e 概述 311
9.5.5編譯合約 313
9.5.6配置文件 314
9.5.7合約部署與測試 315
9.6 課后習題 318
第 10章 區(qū)塊鏈設計案例:AppChain
10.1 環(huán)境的搭建 320
10.1.1環(huán)境準備 321
10.1.2安裝所需要的環(huán)境 321
10.2 學習搭建自己的基本區(qū)塊鏈 333
10.2.1基于Python 2 的基本區(qū)塊鏈 333
10.2.2基于Python 3 的區(qū)塊鏈例程 335
10.3 搭建自己的區(qū)塊鏈 338
10.3.1創(chuàng)建一個區(qū)塊鏈 338
10.3.2區(qū)塊鏈接口 347
10.3.3運行區(qū)塊鏈 351
10.3.4網(wǎng)絡一致性 355
10.4 課后習題 361