本書詳細介紹區(qū)塊鏈涉及的相關理論、思想和方法。全書共11章,按照區(qū)塊鏈3.0的體系架構思想,由底向上逐層介紹數(shù)據(jù)層、網(wǎng)絡層、共識層、激勵層、智能合約層、應用層所涉及的核心方法,同時對區(qū)塊鏈的安全和比特幣、以太坊、超級賬本三種典型區(qū)塊鏈系統(tǒng)進行了介紹,并輔以相應示例。本書內容知識點覆蓋全面,文字通俗易懂,技術介紹深淺有度,應用示例多,可操作性強,可作為高等學校區(qū)塊鏈工程與技術、計算機科學與技術、金融科技、商務智能等相關專業(yè)的教材,也可作為區(qū)塊鏈從業(yè)人員和相關企業(yè)事業(yè)單位相關人員的參考書。
潘恒,女,中原工學院計算機學院副院長,前沿信息技術研究院院長,現(xiàn)任中國計算機學會區(qū)塊鏈專委會委員,河南省區(qū)塊鏈研究會副會長兼秘書長,中國計算機學會鄭州分部秘書長,河南省計算機學會理事,河南省保密技術專家委員會專家,鄭州市信息化促進會專家委員會專家。曾任CCF Yocsef 鄭州2014屆副主席。
目 錄
第1章 認識區(qū)塊鏈1
1.1 區(qū)塊鏈概述1
1.1.1 分布式賬本1
1.1.2 共識機制4
1.1.3 非對稱密碼算法8
1.1.4 智能合約10
1.1.5 區(qū)塊鏈的典型工作流程11
1.1.6 其他相關概念12
1.2 區(qū)塊鏈的分類16
1.3 區(qū)塊鏈的特點18
1.4 區(qū)塊鏈技術發(fā)展歷程19
1.5 典型區(qū)塊鏈系統(tǒng)21
1.5.1 比特幣21
1.5.2 以太坊25
1.5.3 超級賬本30
1.6 區(qū)塊鏈的技術發(fā)展方向32
1.6.1 可擴展性32
1.6.2 隱私保護34
1.6.3 安全問題34
1.6.4 監(jiān)管問題35
1.7 區(qū)塊鏈在信息時代的作用35
1.7.1 區(qū)塊鏈的作用35
1.7.2 區(qū)塊鏈的價值37
本章小結38
思考與練習39
參考文獻40
第2章 數(shù)據(jù)層41
2.1 哈希函數(shù)41
2.1.1 哈希函數(shù)的定義與性質41
2.1.2 SHA-1算法42
2.1.3 SHA-2算法45
2.1.4 RIPEMD-160算法47
2.1.5 SM3算法48
2.2 非對稱加密算法與數(shù)字簽名52
2.2.1 RSA密碼體制53
2.2.2 橢圓曲線密碼體制53
2.2.3 SM2算法57
2.3 Merkle樹57
本章小結59
思考與練習59
參考文獻59
第3章 網(wǎng)絡層60
3.1 P2P網(wǎng)絡60
3.2 區(qū)塊鏈網(wǎng)絡拓撲結構61
3.3 區(qū)塊鏈網(wǎng)絡技術64
3.3.1 比特幣網(wǎng)絡技術64
3.3.2 以太坊網(wǎng)絡65
3.3.3 Fabric網(wǎng)絡69
本章小結72
思考與練習72
參考文獻72
第4章 共識層73
4.1 分布式一致性問題73
4.2 共識算法概述76
4.3 CFT類型算法詳解78
4.3.1 Paxos算法78
4.3.2 Raft算法81
4.4 BFT類算法87
4.4.1 PoW算法87
4.4.2 PoS算法90
4.4.3 DPoS算法92
4.4.4 實用拜占庭容錯94
4.5 新型區(qū)塊鏈共識算法100
4.6 目前共識機制存在的問題106
4.7 共識算法演進108
本章小結109
思考與練習110
參考文獻110
第5章 激勵層111
5.1 激勵層概述111
5.2 激勵層發(fā)行機制112
5.2.1 比特幣的發(fā)行機制112
5.2.2 以太坊中的發(fā)行機制112
5.2.3 IPFS激勵層Filecoin中的發(fā)行機制113
5.3 激勵層分配機制114
5.3.1 比特幣中的分配機制114
5.3.2 以太坊中的分配機制115
5.3.3 IPFS激勵層Filecoin的分配制度117
本章小結117
思考與練習118
參考文獻118
第6章 智能合約層119
6.1 智能合約概述119
6.2 智能合約的特點120
6.3 智能合約的應用120
6.4 比特幣智能合約121
6.5 以太坊智能合約124
6.5.1 以太坊賬戶模型125
6.5.2 以太坊智能合約的調用126
6.5.3 智能合約執(zhí)行的成本126
6.5.4 以太坊虛擬機127
6.5.5 智能合約在以太坊中的生命周期128
6.5.6 以太坊智能合約實例129
6.6 Hyperledger Fabric智能合約130
本章小結135
思考與練習135
參考文獻135
第7章 應用層136
7.1 區(qū)塊鏈的金融應用136
7.2 區(qū)塊鏈的實體經(jīng)濟應用137
7.3 區(qū)塊鏈的行業(yè)服務應用139
7.4 典型區(qū)塊鏈應用開發(fā)環(huán)境及流程140
7.4.1 比特幣應用開發(fā)140
7.4.2 以太坊應用開發(fā)142
7.4.3 超級賬本Fabric143
本章小結144
思考與練習144
參考文獻144
第8章 區(qū)塊鏈安全146
8.1 區(qū)塊鏈安全概述146
8.1.1 區(qū)塊鏈面臨的安全威脅146
8.1.2 區(qū)塊鏈的安全目標147
8.2 區(qū)塊鏈安全威脅149
8.2.1 數(shù)據(jù)層的安全威脅150
8.2.2 網(wǎng)絡層的安全威脅152
8.2.3 激勵層的安全威脅157
8.2.4 共識層的安全威脅159
8.2.5 合約層的安全威脅161
8.2.6 應用層的安全威脅163
8.3 區(qū)塊鏈安全技術163
8.3.1 區(qū)塊鏈數(shù)據(jù)安全技術163
8.3.2 區(qū)塊鏈身份保護技術170
8.3.3 區(qū)塊鏈共識安全技術173
8.3.4 區(qū)塊鏈智能合約安全技術175
8.3.5 區(qū)塊鏈內容安全技術176
8.3.6 區(qū)塊鏈使用安全技術178
本章小結178
思考與練習178
參考文獻179
第9章 比特幣系統(tǒng)180
9.1 比特幣簡介180
9.2 比特幣的原理181
9.2.1 比特幣的體系結構181
9.2.2 比特幣網(wǎng)絡184
9.2.3 比特幣系統(tǒng)更新185
9.3 共識機制186
9.3.1 比特幣共識算法186
9.3.2 比特幣挖礦189
9.4 區(qū)塊結構和交易信息192
9.4.1 區(qū)塊及交易結構分析192
9.4.2 區(qū)塊及交易示例196
9.5 比特幣運行201
9.5.1 交易構建和驗證201
9.5.2 區(qū)塊構建和傳播203
9.6 比特幣錢包203
9.7 比特幣源碼解讀204
9.7.1 Bitcoin Core簡介204
9.7.2 Bitcoin Core編譯204
9.7.3 模塊分析209
9.7.4 bitcoind啟動過程源碼分析210
9.7.5 區(qū)塊結構源碼分析213
9.7.6 交易結構源碼分析214
9.7.7 交易過程源碼分析214
9.8 Bitcoin Core操作215
9.8.1 生成目錄和文件說明216
9.8.2 命令行及配置文件說明217
9.8.3 bitcoin-qt.exe的使用219
9.8.4 bitcoind.exe/bitcoin-cli.exe RPC命令221
9.8.5 bitcoind.exe/bitcoin-cli.exe regtest測試222
思考與練習224
參考文獻225
第10章 以太坊系統(tǒng)226
10.1 以太坊詳解226
10.1.1 以太坊體系結構226
10.1.2 以太坊工作流程及運行原理227
10.1.3 以太坊區(qū)塊結構和鏈結構236
10.2 以太坊開發(fā)環(huán)境237
10.2.1 以太坊開發(fā)工具及框架238
10.2.2 以太坊開發(fā)環(huán)境的搭建242
10.3 以太坊智能合約開發(fā)244
10.3.1 智能合約運行環(huán)境244
10.3.2 智能合約開發(fā)語言248
10.4 應用系統(tǒng)開發(fā)實例262
本章小結264
思考與練習265
參考文獻265
第11章 超級賬本Fabric266
11.1 超級賬本簡介266
11.1.1 超級賬本設計思想266
11.1.2 超級賬本項目267
11.2 Fabric基礎269
11.2.1 Fabric概況269
11.2.2 Fabric版本演進及特點270
11.2.3 Fabric架構272
11.2.4 Fabric數(shù)據(jù)存儲結構278
11.2.5 Fabric交易流程278
11.3 Fabric鏈碼281
11.3.1 Fabric鏈碼的概念281
11.3.2 Fabric鏈碼結構283
11.3.3 區(qū)塊鏈開發(fā)者模式284
11.4 Fabric環(huán)境搭建285
11.4.1 開發(fā)環(huán)境準備285
11.4.2 Fabric網(wǎng)絡搭建286
11.5 Fabric鏈碼示例解析286
11.6 基于Fabric的電子合同存證系統(tǒng)開發(fā)實例292
11.6.1 實例需求分析292
11.6.2 實例區(qū)塊鏈網(wǎng)絡架構294
11.6.3 實例詳細設計295
本章小結304
思考與練習304
參考文獻305
附錄A 安裝VMware和Ubuntu306
附錄B 安裝Go語言環(huán)境309
附錄C 安裝Docker310
附錄D Fabric常用工具312
附錄E 拉取Fabric鏡像313
附錄F 搭建Fabric網(wǎng)絡316
附錄G 以太坊投票智能合約代碼示例324
附錄H 以太坊積分商城項目智能合約代碼示例327
附錄I 以太坊積分商城項目DApp代碼示例338