本書是一本系統(tǒng)介紹區(qū)塊鏈理論知識和應用開發(fā)的教程。全書共10章,主要分為兩部分,區(qū)塊鏈理論知識(第1~3章):包括區(qū)塊鏈概述、區(qū)塊鏈中的密碼學以及區(qū)塊鏈的核心機制;區(qū)塊鏈應用開發(fā)(第4~10章):包括打造自己的第一個區(qū)塊鏈—基于Python、智能合約開發(fā)實踐—基于Solidity、以太坊之DApp開發(fā)實戰(zhàn)—基于Truffle框架、超級賬本開發(fā)實戰(zhàn)—基于Go語言、Libra開發(fā)實踐—基于Move語言、區(qū)塊鏈即服務平臺(BaaS)以及區(qū)塊鏈綜合應用開發(fā)實踐。本書在系統(tǒng)介紹區(qū)塊鏈理論知識的基礎上,結合豐富的案例進行實踐操作的講解,力求引領讀者在實踐中深入理解區(qū)塊鏈技術,具備基于主流的區(qū)塊鏈平臺開發(fā)區(qū)塊鏈實際應用的能力。
本書可以作為區(qū)塊鏈開發(fā)者的自學用書,也可作為開設區(qū)塊鏈開發(fā)相關課程的各類院校、培訓機構的教材。
目錄
前言
第1章 區(qū)塊鏈概述1
1.1 什么是區(qū)塊鏈1
1.1.1 區(qū)塊鏈的概念2
1.1.2 區(qū)塊的概念3
1.1.3 區(qū)塊鏈的運行原理7
1.1.4 模擬生成一個區(qū)塊鏈8
1.2 區(qū)塊鏈的技術構成與邏輯架構13
1.2.1 區(qū)塊鏈的技術構成13
1.2.2 區(qū)塊鏈的邏輯架構15
1.3 區(qū)塊鏈的分類18
1.3.1 公有鏈、聯(lián)盟鏈和私有鏈18
1.3.2 跨鏈19
1.4 區(qū)塊鏈的特點20
1.5 區(qū)塊鏈的發(fā)展歷程21
1.6 區(qū)塊鏈的典型應用23
1.6.1 加密數(shù)字貨幣的代表—比特幣23
1.6.2 智能合約鼻祖—以太坊24
1.6.3 迪士尼區(qū)塊鏈平臺—龍鏈25
1.6.4 Linux基金會的開源賬本—Hyperledger26
1.6.5 區(qū)塊鏈操作系統(tǒng)—EOS26
1.6.6 中國央行數(shù)字貨幣DC/EP27
1.6.7 去中心化金融(DeFi)的崛起30
1.6.8 全球通用支付平臺—Libra33
1.6.9 區(qū)塊鏈即服務平臺—BaaS34
1.7 區(qū)塊鏈應用的開發(fā)技術34
1.7.1 常用的區(qū)塊鏈應用開發(fā)技術34
1.7.2 常用的區(qū)塊鏈應用開發(fā)方式34
1.8 區(qū)塊鏈技術的現(xiàn)狀及展望35
1.8.1 區(qū)塊鏈技術的現(xiàn)狀35
1.8.2 未來的區(qū)塊鏈36
第2章 區(qū)塊鏈中的密碼學38
2.1 哈希算法和哈希值38
2.1.1 什么是哈希算法和哈希值38
2.1.2 哈希算法的特點39
2.1.3 哈希算法的應用40
2.2 區(qū)塊鏈涉及的密碼學知識42
2.2.1 對稱加密算法和非對稱加密算法42
2.2.2 橢圓曲線密碼學42
2.2.3 Merkle樹43
2.2.4 數(shù)字簽名和數(shù)字證書45
第3章 區(qū)塊鏈的核心機制47
3.1 共識機制47
3.1.1 共識問題的產(chǎn)生—拜占庭將軍問題47
3.1.2 幾個重要的共識機制49
3.2 賬戶、錢包和交易54
3.2.1 賬戶54
3.2.2 錢包55
3.2.3 交易56
3.3 智能合約58
3.3.1 智能合約的概念58
3.3.2 智能合約的特點和作用59
3.3.3 智能合約的應用場景59
第4章 打造自己的第一個區(qū)塊鏈—基于Python61
4.1 Python基礎61
4.1.1 Python簡介61
4.1.2 Python基礎語法70
4.1.3 Python區(qū)塊鏈開發(fā)常用庫74
4.2 基于Python實現(xiàn)區(qū)塊鏈76
4.2.1 區(qū)塊鏈原型的實現(xiàn)77
4.2.2 區(qū)塊鏈之工作量證明79
4.2.3 錢包、賬戶和交易功能82
4.2.4 實現(xiàn)一個簡單的去中心化網(wǎng)絡88
4.2.5 測試區(qū)塊鏈網(wǎng)絡功能91
第5章 智能合約開發(fā)實戰(zhàn)—基于Solidity94
5.1 搭建開發(fā)環(huán)境95
5.1.1 安裝以太坊測試環(huán)境Ganache95
5.1.2 安裝和使用以太坊錢包96
5.2 Solidity語言簡介101
5.3 智能合約的開發(fā)102
5.3.1 編譯器Remix的使用103
5.3.2 開發(fā)智能合約“helloBlockchain”103
第6章 以太坊之DApp開發(fā)實戰(zhàn)—基于Truffle框架108
6.1 什么是DApp(去中心化應用)108
6.1.1 DApp的概念108
6.1.2 DApp的特點109
6.1.3 知名的DApp110
6.2 Truffle框架112
6.2.1 Truffle框架介紹112
6.2.2 Truffle的安裝和常用命令112
6.2.3 Truffle中模板的使用114
6.3 DApp開發(fā)實例1—猜拳游戲115
6.3.1 使用Truffle創(chuàng)建項目115
6.3.2 智能合約的實現(xiàn)116
6.3.3 猜拳游戲用戶界面的實現(xiàn)118
6.4 DApp開發(fā)實例2—寵物商店121
6.4.1 寵物商店功能簡述121
6.4.2 準備工作122
6.4.3 智能合約的實現(xiàn)和部署123
6.4.4 寵物商店的完整實現(xiàn)124
第7章 超級賬本開發(fā)實戰(zhàn)—基于Go語言127
7.1 超級賬本概述127
7.1.1 超級賬本的架構127
7.1.2 超級賬本Fabric的架構130
7.1.3 超級賬本Fabric的特點131
7.2 搭建Fabric開發(fā)環(huán)境132
7.2.1 Go語言簡介及其開發(fā)環(huán)境安裝132
7.2.2 Docker簡介及使用134
7.2.3 安裝Fabric的開發(fā)環(huán)境138
7.3 Chaincode的開發(fā)部署及使用139
7.3.1 什么是Chaincode139
7.3.2 Chaincode的開發(fā)和使用140
7.3.3 Chaincode的打包142
7.4 超級賬本開發(fā)實例1—建立一個Fabric網(wǎng)絡142
7.4.1 構建第1個Fabric網(wǎng)絡142
7.4.2 與Fabric網(wǎng)絡的交互144
7.4.3 查詢和更新超級賬本146
7.5 超級賬本開發(fā)實例2—fabcar區(qū)塊鏈應用147
7.5.1 fabcar功能概述148
7.5.2 fabcar結構說明148
7.5.3 fabcar的開發(fā)和部署148
第8章 Libra開發(fā)實戰(zhàn)—基于Move語言156
8.1 Libra簡介156
8.1.1 什么是Libra156
8.1.2 Libra的架構和特點158
8.2 Libra的Move語言159
8.2.1 Move語言的特性160
8.2.2 Move語言基本語法160
8.3 Libra開發(fā)實戰(zhàn)163
8.3.1 Libra開發(fā)環(huán)境搭建163
8.3.2 實現(xiàn)名為ZCoin的數(shù)字貨幣165
第9章 區(qū)塊鏈即服務平臺(BaaS)171
9.1 BaaS簡介171
9.1.1 什么是BaaS171
9.1.2 BaaS架構172
9.2 主流BaaS平臺173
9.2.1 IBM BaaS173
9.2.2 微軟BaaS174
9.2.3 亞馬遜BaaS175
9.2.4 甲骨文BaaS175
9.2.5 螞蟻BaaS176
9.3 BaaS實戰(zhàn)177
9.3.1 功能介紹177
9.3.2 實例開發(fā)177
第10章 區(qū)塊鏈綜合應用開發(fā)實踐184
10.1 以太坊數(shù)據(jù)查詢分析系統(tǒng)184
10.1.1 準備對接環(huán)境184
10.1.2 對接以太坊接口188
10.1.3 創(chuàng)建Flask應用191
10.1.4 實現(xiàn)查詢和分析功能193
10.2 ERC20代幣開發(fā)實例200
10.2.1 ERC20代幣介紹200
10.2.2 ERC20代幣開發(fā)—Mini Token202
10.3 基于OpenSea平臺開發(fā)數(shù)字資產(chǎn)“加密豬”206
10.3.1 OpenSea介紹207
10.3.2 開發(fā)加密豬207