包郵 區(qū)塊鏈智能合約開發(fā)實(shí)戰(zhàn)
-
>
全國計(jì)算機(jī)等級(jí)考試最新真考題庫模擬考場(chǎng)及詳解·二級(jí)MSOffice高級(jí)應(yīng)用
-
>
決戰(zhàn)行測(cè)5000題(言語理解與表達(dá))
-
>
軟件性能測(cè)試.分析與調(diào)優(yōu)實(shí)踐之路
-
>
第一行代碼Android
-
>
JAVA持續(xù)交付
-
>
EXCEL最強(qiáng)教科書(完全版)(全彩印刷)
-
>
深度學(xué)習(xí)
區(qū)塊鏈智能合約開發(fā)實(shí)戰(zhàn) 版權(quán)信息
- ISBN:9787302652953
- 條形碼:9787302652953 ; 978-7-302-65295-3
- 裝幀:平裝-膠訂
- 冊(cè)數(shù):暫無
- 重量:暫無
- 所屬分類:>
區(qū)塊鏈智能合約開發(fā)實(shí)戰(zhàn) 本書特色
本書詳盡講解了區(qū)塊鏈與以太坊的核心知識(shí),深入Solidity編程精髓,并通過豐富的實(shí)例助您掌握智能合約的開發(fā)與交互。適合作為高等院校區(qū)塊鏈、軟件工程相關(guān)專業(yè)的教材,也適合有一定編程基礎(chǔ)的讀者自學(xué)。
區(qū)塊鏈智能合約開發(fā)實(shí)戰(zhàn) 內(nèi)容簡(jiǎn)介
智能合約是區(qū)塊鏈技術(shù)的重要組成部分,同時(shí)也是去中心化應(yīng)用(DApp)開發(fā)過程中的核心。智能合約可以使用戶實(shí)現(xiàn)與區(qū)塊鏈的交互,執(zhí)行用戶操作。本書分為8章,講解了以太坊和智能合約、搭建以太坊智能合約環(huán)境、Solidity基礎(chǔ)、Solidity高級(jí)用法、智能合約應(yīng)用、智能合約安全、智能合約交互、智能合約開發(fā)框架等內(nèi)容。本書致力于讓讀者在學(xué)會(huì)Solidity語法的同時(shí),也能通過案例編碼練習(xí)提升編程能力。 本書適合作為高等院校區(qū)塊鏈、軟件工程相關(guān)專業(yè)的教材,也可作為有編程基礎(chǔ)或經(jīng)驗(yàn)的讀者、去中心化應(yīng)用開發(fā)工程師的自學(xué)用書。
區(qū)塊鏈智能合約開發(fā)實(shí)戰(zhàn) 目錄
1.1.1 區(qū)塊鏈發(fā)展起源 1
1.1.2 從0到1的比特幣系統(tǒng) 1
1.1.3 從比特幣到區(qū)塊鏈 3
1.1.4 區(qū)塊鏈簡(jiǎn)介 3
1.1.5 區(qū)塊鏈分類 4
1.2 以太坊基礎(chǔ) 5
1.2.1 以太坊簡(jiǎn)介 5
1.2.2 以太坊發(fā)展歷史 5
1.3 以太坊核心概念 6
1.3.1 以太坊 6
1.3.2 以太幣 6
1.3.3 Gas、Gas Price、Gas Fees 7
1.3.4 以太坊虛擬機(jī) 7
1.3.5 賬戶 8
1.3.6 交易 9
1.3.7 區(qū)塊 10
1.3.8 節(jié)點(diǎn)和客戶端 10
1.3.9 共識(shí)機(jī)制 12
1.4 智能合約與去中心化應(yīng)用 14
1.4.1 智能合約 14
1.4.2 去中心化應(yīng)用 14
1.4.3 去中心化應(yīng)用的特點(diǎn) 14
1.5 比特幣與以太坊系統(tǒng)架構(gòu) 15
1.5.1 比特幣系統(tǒng)架構(gòu) 15
1.5.2 以太坊系統(tǒng)架構(gòu) 16
本章小結(jié) 17
能力自測(cè) 17
第2章 搭建以太坊智能合約環(huán)境 18
2.1 以太坊公共網(wǎng)絡(luò) 18
2.1.1 以太坊主網(wǎng)絡(luò) 18
2.1.2 以太坊測(cè)試網(wǎng)絡(luò) 18
2.1.3 Layer 2測(cè)試網(wǎng)絡(luò) 20
2.2 以太坊專用網(wǎng)絡(luò) 21
2.2.1 開發(fā)網(wǎng)絡(luò) 21
2.2.2 聯(lián)盟鏈 22
2.3 以太坊客戶端 22
2.3.1 為什么要有客戶端 22
2.3.2 安裝Geth客戶端 22
2.3.3 同步區(qū)塊 24
2.3.4 數(shù)據(jù)存放目錄 24
2.3.5 啟動(dòng)節(jié)點(diǎn) 24
2.4 啟動(dòng)客戶端 24
2.4.1 啟動(dòng)主網(wǎng)客戶端 24
2.4.2 啟動(dòng)測(cè)試網(wǎng)絡(luò)客戶端 25
2.4.3 啟動(dòng)客戶端的可選項(xiàng)配置 25
2.5 搭建私有鏈 25
2.5.1 準(zhǔn)備工作 26
2.5.2 創(chuàng)建創(chuàng)世區(qū)塊配置文件 26
2.5.3 初始化:將創(chuàng)世區(qū)塊信息寫入?yún)^(qū)塊鏈 27
2.5.4 啟動(dòng)私有節(jié)點(diǎn) 28
2.5.5 Geth的JavaScript控制臺(tái)操作 29
2.6 搭建多節(jié)點(diǎn)私有鏈 31
2.6.1 創(chuàng)建節(jié)點(diǎn)目錄 32
2.6.2 分別初始化節(jié)點(diǎn) 32
2.6.3 啟動(dòng)節(jié)點(diǎn) 32
2.6.4 查看節(jié)點(diǎn)信息 32
2.6.5 手動(dòng)添加節(jié)點(diǎn) 33
2.7 以太坊錢包 33
2.7.1 以太坊錢包的概念 33
2.7.2 錢包的分類 34
2.7.3 錢包中的重要概念 35
2.8 MetaMask錢包 36
2.8.1 MetaMask簡(jiǎn)介 36
2.8.2 MetaMask的安裝 36
2.8.3 創(chuàng)建新錢包 36
2.8.4 連接不同的網(wǎng)絡(luò) 38
2.9 Solidity編程語言和開發(fā)工具 40
2.9.1 Solidity簡(jiǎn)介 40
2.9.2 Solidity程序結(jié)構(gòu)和編程規(guī)范 41
2.9.3 智能合約開發(fā)工具Remix 42
2.9.4 智能合約部署和調(diào)用 43
本章小結(jié) 43
能力自測(cè) 44
第3章 Solidity基礎(chǔ) 45
3.1 值類型 45
3.1.1 布爾型 45
3.1.2 整型 46
3.1.3 地址類型 47
3.1.4 字節(jié)數(shù)組 48
3.1.5 枚舉 49
3.2 函數(shù) 50
3.2.1 函數(shù)的概念和定義 50
3.2.2 函數(shù)的可見性 50
3.2.3 pure和view關(guān)鍵字 51
3.2.4 payable關(guān)鍵字 53
3.2.5 函數(shù)的返回值 53
3.3 引用類型 54
3.3.1 數(shù)據(jù)存儲(chǔ)位置 55
3.3.2 數(shù)據(jù)位置與賦值規(guī)則 56
3.3.3 數(shù)組 58
3.3.4 結(jié)構(gòu)體 62
3.3.5 映射類型 63
3.4 變量初始值和常量 64
3.4.1 變量初始值 65
3.4.2 delete操作符 65
3.4.3 常量 66
3.5 流程控制 67
3.5.1 條件語句 67
3.5.2 循環(huán)語句 69
3.5.3 中斷語句 71
3.6 特殊函數(shù) 73
3.6.1 構(gòu)造函數(shù) QE_肨麭?_73
3.6.2 析構(gòu)函數(shù) 74
3.6.3 函數(shù)修改器 74
3.6.4 常見內(nèi)置函數(shù) 75
3.7 事件 76
3.7.1 事件的定義 76
3.7.2 觸發(fā)事件 76
3.8 繼承 77
3.8.1 繼承 77
3.8.2 函數(shù)重寫 78
3.8.3 多繼承 79
3.9 抽象合約 79
3.10 接口 80
3.10.1 接口的定義 80
3.10.2 實(shí)現(xiàn)接口 80
3.10.3 接口與抽象合約的區(qū)別 81
3.11 錯(cuò)誤處理 81
3.11.1 錯(cuò)誤處理機(jī)制 81
3.11.2 require和assert 82
3.11.3 revert函數(shù) 83
3.11.4 自定義error 84
本章小結(jié) 85
能力自測(cè) 85
第4章 Solidity高級(jí)用法 86
4.1 函數(shù)重載 86
4.1.1 函數(shù)重載的定義 86
4.1.2 實(shí)參匹配 86
4.2 庫的使用 87
4.2.1 庫的概念和定義 87
4.2.2 使用庫合約 88
4.2.3 庫示例和OpenZeppelin 88
4.3 導(dǎo)入并使用其他合約 92
4.3.1 文件路徑導(dǎo)入 92
4.3.2 URL導(dǎo)入 93
4.3.3 安裝庫文件導(dǎo)入 94
4.4 接收以太幣 94
4.4.1 msg全局變量 94
4.4.2 payable修飾符 95
4.4.3 receive和fallback函數(shù) 95
4.5 轉(zhuǎn)賬交易 98
4.5.1 transfer函數(shù) 98
4.5.2 send函數(shù) 98
4.5.3 call函數(shù) 98
4.6 合約間的交互 99
4.6.1 庫的缺點(diǎn) 99
4.6.2 通過合約(接口)和地址創(chuàng)建合約引用 100
4.6.3 使用call調(diào)用其他合約 103
4.6.4 使用delegatecall調(diào)用其他合約 103
4.7 創(chuàng)建合約 105
4.7.1 CREATE操作碼 105
4.7.2 CREATE2操作碼 106
4.8 ABI 110
4.8.1 ABI簡(jiǎn)介 110
4.8.2 ABI的結(jié)構(gòu) 110
4.8.3 ABI編解碼 113
4.9 字節(jié)碼 114
4.10 哈希函數(shù) 114
4.10.1 哈希函數(shù) 114
4.10.2 哈希函數(shù)的分類 115
4.10.3 Keccak算法的使用 116
4.11 異常捕獲與處理 117
本章小結(jié) 119
能力自測(cè) 119
第5章 智能合約應(yīng)用 120
5.1 錢包應(yīng)用 120
5.1.1 錢包合約程序 120
5.1.2 多簽錢包合約 122
5.2 ERC系列代幣 126
5.2.1 ERC簡(jiǎn)介 126
5.2.2 ERC20代幣 127
5.2.3 ERC721代幣 131
5.2.4 ERC1155代幣 141
5.3 默克爾樹及其應(yīng)用 152
5.3.1 默克爾樹簡(jiǎn)介 152
5.3.2 默克爾樹和默克爾證明 153
5.3.3 默克爾樹的應(yīng)用 155
本章小結(jié) 160
能力自測(cè) 160
第6章 智能合約安全 161
6.1 重放攻擊 161
6.1.1 重放攻擊原理 161
6.1.2 事件回顧及分析 161
6.1.3 簡(jiǎn)單重放攻擊保護(hù)提案 162
6.1.4 防止重放攻擊 162
6.2 重入攻擊 163
6.2.1 重入攻擊原理 163
6.2.2 事件回顧及分析 163
6.2.3 解決思路 165
6.3 整數(shù)溢出 165
6.3.1 整型溢出問題 165
6.3.2 溢出漏洞事件分析 166
6.4 訪問控制 166
6.4.1 訪問控制 166
6.4.2 漏洞分析 167
6.4.3 訪問控制總結(jié) 168
6.5 條件競(jìng)爭(zhēng) 170
6.5.1 條件競(jìng)爭(zhēng)概念 170
6.5.2 分析和修復(fù) 171
6.6 選擇器沖突 172
6.6.1 選擇器沖突概念 172
6.6.2 事件回顧分析 173
6.7 短地址攻擊 175
6.7.1 短地址攻擊簡(jiǎn)介 175
6.7.2 短地址攻擊防御 176
本章小結(jié) 176
能力自測(cè) 177
第7章 智能合約交互 178
7.1 以太坊JavaScript庫及環(huán)境準(zhǔn)備 178
7.1.1 Node.js簡(jiǎn)介 179
7.1.2 Node.js環(huán)境安裝 179
7.1.3 Node.js程序示例 180
7.1.4 剖析package.json 181
7.1.5 npm使用介紹 183
7.2 Web3.js使用方法 184
7.2.1 Web3.js簡(jiǎn)介 184
7.2.2 Web3.js安裝 185
7.2.3 連接到以太坊節(jié)點(diǎn) 186
7.2.4 查看以太坊鏈上信息 188
7.2.5 Web3庫的API介紹 191
7.2.6 使用Web3編譯部署合約 195
7.3 Ethers.js使用方法 200
7.3.1 Ethers.js簡(jiǎn)介 200
7.3.2 Ethers.js模塊及API介紹 200
7.3.3 安裝Ethers.js庫 203
7.3.4 使用Ethers.js連接到本地節(jié)點(diǎn) 204
7.3.5 Ethers.js的基本使用方法 205
本章小結(jié) 208
能力自測(cè) 208
第8章 智能合約開發(fā)框架 209
8.1 框架的功能和舉例 209
8.2 Truffle框架基礎(chǔ) 210
8.2.1 Truffle簡(jiǎn)介 210
8.2.2 Truffle的構(gòu)成及作用 210
8.2.3 Truffle安裝 210
8.2.4 Truffle命令 211
8.2.5 使用Truffle創(chuàng)建項(xiàng)目 211
8.2.6 truffle-config.js文件解析 213
8.2.7 編譯部署合約 215
8.3 Truffle框架進(jìn)階 217
8.3.1 控制臺(tái)交互 217
8.3.2 與合約交互 217
8.4 Hardhat框架 220
8.4.1 Hardhat簡(jiǎn)介 220
8.4.2 安裝Hardhat 221
8.4.3 創(chuàng)建智能合約應(yīng)用 221
8.4.4 編寫智能合約程序 222
8.4.5 編寫測(cè)試合約 224
8.4.6 編譯和部署合約 225
8.4.7 部署到指定網(wǎng)絡(luò)環(huán)境 227
本章小結(jié) 228
能力自測(cè) 229
附錄 本書教學(xué)資源 230
參考文獻(xiàn) 231
區(qū)塊鏈智能合約開發(fā)實(shí)戰(zhàn) 作者簡(jiǎn)介
江海,現(xiàn)任江西軟件職業(yè)技術(shù)大學(xué)區(qū)塊鏈學(xué)院副院長(zhǎng),江西省區(qū)塊鏈技術(shù)專委會(huì)委員、江西省區(qū)塊鏈學(xué)會(huì)副秘書長(zhǎng)、江西省計(jì)算機(jī)用戶協(xié)會(huì)專家。
于洪偉,北京千鋒互聯(lián)科技有限公司教學(xué)主管,8年互聯(lián)網(wǎng)開發(fā)經(jīng)驗(yàn),曾任光大銀行技術(shù)研發(fā),負(fù)責(zé)產(chǎn)品研發(fā)、技術(shù)牽引等工作。完成數(shù)十個(gè)大中型項(xiàng)目,多年的項(xiàng)目開發(fā)和項(xiàng)目管理經(jīng)驗(yàn)。出版發(fā)行《以太坊源碼分析》、《Fabric網(wǎng)絡(luò)學(xué)習(xí)》、《區(qū)塊鏈去中心化錢包》等系列視頻和教程。
吳書博,河北工程技術(shù)學(xué)副教授,主要研究領(lǐng)域經(jīng)濟(jì)管理、教育管理。
- >
有舍有得是人生
- >
新文學(xué)天穹兩巨星--魯迅與胡適/紅燭學(xué)術(shù)叢書(紅燭學(xué)術(shù)叢書)
- >
小考拉的故事-套裝共3冊(cè)
- >
莉莉和章魚
- >
巴金-再思錄
- >
我從未如此眷戀人間
- >
詩經(jīng)-先民的歌唱
- >
伊索寓言-世界文學(xué)名著典藏-全譯本