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