本書詳細介紹區(qū)塊鏈涉及的相關(guān)理論、思想和方法。全書共11章,按照區(qū)塊鏈3.0的體系架構(gòu)思想,由底向上逐層介紹數(shù)據(jù)層、網(wǎng)絡層、共識層、激勵層、智能合約層、應用層所涉及的核心方法,同時對區(qū)塊鏈的安全和比特幣、以太坊、超級賬本三種典型區(qū)塊鏈系統(tǒng)進行了介紹,并輔以相應示例。本書內(nèi)容知識點覆蓋全面,文字通俗易懂,技術(shù)介紹深淺有度,應用示例多,可操作性強,可作為高等學校區(qū)塊鏈工程與技術(shù)、計算機科學與技術(shù)、金融科技、商務智能等相關(guān)專業(yè)的教材,也可作為區(qū)塊鏈從業(yè)人員和相關(guān)企業(yè)事業(yè)單位相關(guān)人員的參考書。
潘恒,女,中原工學院計算機學院副院長,前沿信息技術(shù)研究院院長,現(xiàn)任中國計算機學會區(qū)塊鏈專委會委員,河南省區(qū)塊鏈研究會副會長兼秘書長,中國計算機學會鄭州分部秘書長,河南省計算機學會理事,河南省保密技術(shù)專家委員會專家,鄭州市信息化促進會專家委員會專家。曾任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 其他相關(guān)概念12
1.2 區(qū)塊鏈的分類16
1.3 區(qū)塊鏈的特點18
1.4 區(qū)塊鏈技術(shù)發(fā)展歷程19
1.5 典型區(qū)塊鏈系統(tǒng)21
1.5.1 比特幣21
1.5.2 以太坊25
1.5.3 超級賬本30
1.6 區(qū)塊鏈的技術(shù)發(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
本章小結(jié)38
思考與練習39
參考文獻40
第2章 數(shù)據(jù)層41
2.1 哈希函數(shù)41
2.1.1 哈希函數(shù)的定義與性質(zhì)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
本章小結(jié)59
思考與練習59
參考文獻59
第3章 網(wǎng)絡層60
3.1 P2P網(wǎng)絡60
3.2 區(qū)塊鏈網(wǎng)絡拓撲結(jié)構(gòu)61
3.3 區(qū)塊鏈網(wǎng)絡技術(shù)64
3.3.1 比特幣網(wǎng)絡技術(shù)64
3.3.2 以太坊網(wǎng)絡65
3.3.3 Fabric網(wǎng)絡69
本章小結(jié)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
本章小結(jié)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
本章小結(jié)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 以太坊智能合約的調(diào)用126
6.5.3 智能合約執(zhí)行的成本126
6.5.4 以太坊虛擬機127
6.5.5 智能合約在以太坊中的生命周期128
6.5.6 以太坊智能合約實例129
6.6 Hyperledger Fabric智能合約130
本章小結(jié)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
本章小結(jié)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ū)塊鏈安全技術(shù)163
8.3.1 區(qū)塊鏈數(shù)據(jù)安全技術(shù)163
8.3.2 區(qū)塊鏈身份保護技術(shù)170
8.3.3 區(qū)塊鏈共識安全技術(shù)173
8.3.4 區(qū)塊鏈智能合約安全技術(shù)175
8.3.5 區(qū)塊鏈內(nèi)容安全技術(shù)176
8.3.6 區(qū)塊鏈使用安全技術(shù)178
本章小結(jié)178
思考與練習178
參考文獻179
第9章 比特幣系統(tǒng)180
9.1 比特幣簡介180
9.2 比特幣的原理181
9.2.1 比特幣的體系結(jié)構(gòu)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ū)塊結(jié)構(gòu)和交易信息192
9.4.1 區(qū)塊及交易結(jié)構(gòu)分析192
9.4.2 區(qū)塊及交易示例196
9.5 比特幣運行201
9.5.1 交易構(gòu)建和驗證201
9.5.2 區(qū)塊構(gòu)建和傳播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ū)塊結(jié)構(gòu)源碼分析213
9.7.6 交易結(jié)構(gòu)源碼分析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 以太坊體系結(jié)構(gòu)226
10.1.2 以太坊工作流程及運行原理227
10.1.3 以太坊區(qū)塊結(jié)構(gòu)和鏈結(jié)構(gòu)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
本章小結(jié)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架構(gòu)272
11.2.4 Fabric數(shù)據(jù)存儲結(jié)構(gòu)278
11.2.5 Fabric交易流程278
11.3 Fabric鏈碼281
11.3.1 Fabric鏈碼的概念281
11.3.2 Fabric鏈碼結(jié)構(gòu)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)絡架構(gòu)294
11.6.3 實例詳細設計295
本章小結(jié)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