Solidity智能合約開發技術與實戰 版權信息
- ISBN:9787115589439
- 條形碼:9787115589439 ; 978-7-115-58943-9
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
Solidity智能合約開發技術與實戰 本書特色
1.結合讀者興趣,講解區塊鏈基礎理論,實現區塊鏈技術科普。
作為去中心化的分布式系統,區塊鏈的工作原理和運作方式與傳統的中心化系統有很多不同之處。為了使讀者充分理解基礎的技術框架和工作原理,本書第 1 章結合人們耳熟能詳的經典區塊鏈應用——比特幣,介紹區塊鏈技術的工作原理。雖然講解的是區塊鏈基礎理論,但是本書結合了讀者感興趣的主題,例如“區塊鏈為什么會成為國家戰略”等。
2.依托經典實例,分析智能合約相關原理,錘煉 DApp 開發實戰技能。
作為區塊鏈開發的入門級教材,本書通過各種流程圖、結構圖、架構圖來描述區塊鏈技術的數據結構和工作原理。本書將介紹很多基于以太坊智能合約 DApp 的經典實例,包括第 6 章的“明日之星”在線投票應用、第 8 章的代幣模型實例 MetaCoin 和寵物商店實例 pet-shop、第 9 章的在測試網絡中基于 Web3.js 完成以太坊交易實例以及第 10 章的智能合約的安全審計實例。這些經典實例為讀者理解抽象概念提供了捷徑,可以幫助讀者系統掌握區塊鏈技術在各領域的應用以及這些應用的實現過程。
3.面向高校教學,配套豐富教輔資源,錄制優質微課視頻。
編者為使用本書的教師制作了配套的電子教案,并提供各章課后習題的參考答案和7個實驗的電子文檔,以及書中涉及的所有實例程序的源碼。此外,編者還針對本書各章中的重點及難點錄制了優質微課視頻,助力讀者更好地開展自主學習。讀者可以通過人郵教育社區下載本書的配套資源。
Solidity智能合約開發技術與實戰 內容簡介
在區塊鏈發展歷程中,以太坊的誕生具有里程碑式的意義。本書介紹使用Solidity開發以太坊智能合約DApp的方法,內容涵蓋Solidity的基本語法,使用開發框架Truffle開發、部署、測試以太坊DApp的方法,通過以太坊測試網絡進行交易的方法,開發安全智能合約所應遵守的規范和對智能合約進行安全審計的方法等。讀者在閱讀本書時可以充分了解和體驗以太坊智能合約的強大功能,以及使用Solidity開發以太坊智能合約DApp的便利。
本書可作為高等院校計算機、軟件工程、大數據、人工智能等專業相關課程的教材,也可供區塊鏈應用程序開發人員參考使用。
Solidity智能合約開發技術與實戰 目錄
【章名目錄】
第 1章 區塊鏈技術基礎
第 2章 以太坊區塊鏈
第3章 Solidity編程基礎
第4章 常用語句
第5章 智能合約與函數
第6章 以太坊JavaScript API——Web3.js
第7章 事件與日志
第8章 以太坊DApp開發框架Truffle
第9章 以太坊測試網絡
第 10章 編寫安全的智能合約
【詳細目錄】
第 1章 區塊鏈技術基礎
1.1 從比特幣說起 1
1.1.1 比特幣的發展歷程 1
1.1.2 什么是比特幣系統 2
1.1.3 共識算法和比特幣的挖礦 7
1.1.4 雙花問題 10
1.1.5 區塊鏈技術賦予比特幣“價值” 13
1.2 區塊鏈的工作原理及底層技術 15
1.2.1 分布式系統的概念 15
1.2.2 區塊鏈的架構設計 15
1.2.3 加密算法 17
1.2.4 區塊鏈的分類 19
1.2.5 區塊鏈為什么會成為國家戰略 19
1.2.6 區塊鏈技術的發展歷程 21
1.2.7 智能合約 22
1.2.8 區塊鏈的編程語言 23
1.3 本章小結 24
習題 24
第2章 以太坊區塊鏈
2.1 以太坊的發展歷程與特色 25
2.1.1 以太坊的誕生與發展 25
2.1.2 以太坊與比特幣系統的對比 27
2.2 以太坊的工作原理 28
2.2.1 以太坊節點 28
2.2.2 以太坊的狀態機 28
2.2.3 以太坊網絡的總體架構 29
2.2.4 DApp 31
2.2.5 DApp瀏覽器 32
2.2.6 以太坊的數據結構與存儲方式 33
2.2.7 以太坊的分叉 36
2.2.8 Gas和以太幣 36
2.2.9 以太坊賬戶、錢包和交易 38
2.2.10 以太坊的PoS共識算法 38
2.3 搭建以太坊私有鏈 39
2.3.1 搭建測試環境 39
2.3.2 安裝以太坊客戶端Geth 46
2.3.3 初始化創世區塊 49
2.3.4 創建開發者賬戶 50
2.3.5 以開發者模式啟動私有鏈 51
2.3.6 私有鏈賬戶管理 51
2.3.7 在私有鏈中挖礦 53
2.3.8 轉賬操作 54
2.4 本章小結 55
習題 55
第3章 Solidity編程基礎
3.1 Solidity的第 一個示例程序 57
3.1.1 實時在線Solidity編輯器Remix 57
3.1.2 Solidity Hello World程序 58
3.1.3 使用Visual Studio Code開發Solidity程序 61
3.2 常量和變量 63
3.2.1 常量 63
3.2.2 變量 64
3.3 基本數據類型 66
3.3.1 字符串型 66
3.3.2 整型 68
3.3.3 定長浮點型 69
3.3.4 布爾類型 69
3.3.5 地址類型 70
3.3.6 合約類型 72
3.4 復合數據類型 72
3.4.1 枚舉類型 72
3.4.2 結構體 73
3.4.3 映射 74
3.4.4 數組 75
3.5 本章小結 77
習題 77
第4章 常用語句
4.1 賦值語句 79
4.2 分支語句 80
4.2.1 if語句 80
4.2.2 if…else if…else…語句 81
4.3 循環語句 82
4.3.1 for語句 82
4.3.2 while語句 83
4.3.3 do…while…語句 84
4.4 本章小結 85
習題 86
第5章 智能合約與函數
5.1 智能合約編程基礎 87
5.1.1 狀態變量的可見性 87
5.1.2 智能合約的構造函數 90
5.1.3 智能合約之間的繼承 91
5.2 函數編程基礎 92
5.2.1 定義函數 92
5.2.2 函數修飾符 93
5.2.3 函數的參數 97
5.3 函數的高級應用 98
5.3.1 自毀函數 98
5.3.2 內置函數 99
5.3.3 函數重載 100
5.4 外部函數 101
5.4.1 導入外部函數 101
5.4.2 函數庫 102
5.4.3 Fallback函數 103
5.5 抽象合約、接口和繼承 106
5.5.1 抽象合約 106
5.5.2 接口 107
5.5.3 繼承 107
5.6 異常處理函數 108
5.6.1 assert() 函數 108
5.6.2 require() 函數 109
5.6.3 revert() 函數 109
5.7 本章小結 110
習題 110
第6章 以太坊JavaScript API——Web3.js
6.1 Web3.js概述 111
6.1.1 什么是Web3.js 111
6.1.2 安裝Web3.js 111
6.1.3 第 一個Web3.js的小實例 113
6.1.4 在網頁中使用Web3.js 114
6.1.5 本章實例的執行環境 115
6.1.6 JavaScript Promise對象 115
6.2 區塊編程 117
6.2.1 標識區塊 117
6.2.2 獲取當前區塊編號 118
6.2.3 獲取默認區塊編號 119
6.2.4 獲取指定區塊詳情 119
6.2.5 獲取指定叔區塊 120
6.3 以太坊賬戶與交易編程 120
6.3.1 獲取賬戶列表 120
6.3.2 默認賬戶和幣基賬戶 121
6.3.3 獲取賬戶余額 122
6.3.4 獲取指定區塊中的交易數量 123
6.3.5 獲取指定區塊中的交易詳情 125
6.3.6 根據交易哈希獲取交易對象 126
6.3.7 獲取交易的收據對象 127
6.3.8 向以太坊網絡提交交易 129
6.3.9 估算交易的Gas用量 131
6.4 智能合約編程基礎 132
6.4.1 以太坊智能合約的ABI 132
6.4.2 以太坊智能合約的字節碼 135
6.4.3 在Visual Studio Code中生成智能合約的 ABI和字節碼 140
6.4.4 JSON-RPC 141
6.5 在Web3.js中與智能合約進行交互 148
6.5.1 創建合約對象 148
6.5.2 調用合約函數 151
6.6 Web3.js開發實例:“明日之星”在線投票 155
6.6.1 編寫投票智能合約 155
6.6.2 部署和測試投票智能合約 157
6.7 本章小結 167
習題 167
第7章 事件與日志
7.1 事件 169
7.1.1 事件模型 169
7.1.2 定義和觸發事件 170
7.1.3 在Web3.js中監聽事件 170
7.2 日志 176
7.2.1 在Remix中查看日志數據 176
7.2.2 底層日志接口 177
7.2.3 檢索日志 179
7.3 本章小結 180
習題 181
第8章 以太坊DApp開發框架Truffle
8.1 Truffle開發框架概述 182
8.1.1 Truffle開發框架的基本特性 182
8.1.2 安裝Truffle開發框架 182
8.1.3 選擇以太坊客戶端 183
8.1.4 個人區塊鏈Ganache 183
8.2 Truffle項目管理 185
8.2.1 創建項目 185
8.2.2 配置Truffle項目 188
8.2.3 編譯合約 189
8.2.4 部署合約 190
8.3 智能合約編程 193
8.3.1 與合約進行交互 193
8.3.2 Truffle Develop 198
8.3.3 Truffle框架與智能合約MetaCoin交互的前端應用示例 200
8.3.4 在Truffle框架中使用MetaMask 205
8.3.5 使用Truffle react項目模板開發基于以太坊智能合約的DApp 211
8.4 測試合約 221
8.4.1 Mocha測試框架簡介 221
8.4.2 使用JavaScript編寫測試腳本 223
8.4.3 使用Solidity編寫測試腳本 224
8.5 Truffle示例項目寵物商店pet-shop 226
8.5.1 創建pet-shop項目 226
8.5.2 編寫智能合約 226
8.5.3 編譯和部署智能合約 227
8.5.4 開發前端應用 227
8.5.5 安裝并配置MetaMask錢包 231
8.5.6 運行應用程序 232
8.6 本章小結 234
習題 234
第9章 以太坊測試網絡
9.1 主網絡和測試網絡 236
9.1.1 以太坊測試網絡概述 236
9.1.2 獲取測試幣 237
9.2 通過Infura節點集群連接以太坊網絡 238
9.2.1 注冊Infura賬戶 238
9.2.2 通過Infura連接以太坊網絡 238
9.2.3 項目ID和項目密鑰 241
9.2.4 白名單 243
9.2.5 部署智能合約到Ropsten網絡 243
9.3 在測試網絡中基于Web3.js完成以太坊交易 245
9.3.1 以太坊交易的過程 245
9.3.2 使用ethereumjs-tx實現與以太坊的交易 246
9.3.3 完整的交易實例 249
9.4 本章小結 252
習題 252
第 10章 編寫安全的智能合約
10.1 以太坊智能合約安全設計的基本原則 253
10.1.1 需要遵循的安全理念 253
10.1.2 從軟件工程技術角度規避風險 256
10.1.3 開發文檔 263
10.1.4 關于報錯賞金 264
10.2 常見的針對智能合約的攻擊 265
10.2.1 重入問題 265
10.2.2 搶先交易 268
10.2.3 強制發送以太幣到智能合約 269
10.3 智能合約開發過程中的安全建議 269
10.3.1 關于以太坊智能合約系統開發的建議 270
10.3.2 Solidity的安全問題 271
10.4 智能合約的安全審計 274
10.4.1 如何對智能合約進行審計 274
10.4.2 一個審計報告的例子 275
10.4.3 使用Mythril分析Solidity智能合約的安全漏洞 282
10.5 本章小結 287
習題 287
展開全部
Solidity智能合約開發技術與實戰 作者簡介
李曉黎,軟件開發工程師,畢業于吉林大學計算機系;自2006年以來,帶領團隊一直從事網絡管理軟件、企業ERP系統和電商平臺等的開發與建設工作,具有中國投資銀行、國家開發銀行、中信銀行等多家銀行從業經歷,參與銀行信息化建設、網銀平臺開發、智能合約設計與開發工作多年,在系統軟件開發、團隊組織管理和系統架構設計等領域積累了豐富的實戰經驗。