深入以太坊智慧型契約開發是一本2019年出版的圖書,由機械工業出版社出版
基本介紹
- 中文名:深入以太坊智慧型契約開發
- 作者: 楊鎮 姜信寶 朱智勝 蓋方宇
- 出版時間:2019年
- 出版社:機械工業出版社
- ISBN:9787111623724
- 定價:99 元
內容簡介,圖書目錄,
內容簡介
這是一部能指導讀者從入門到進階的以太坊智慧型契約開發指南。HiBlock區塊鏈技術社區官方出品,4位區塊鏈技術專家聯合撰寫。
從開發工具與生態、程式語言(Solidity)、編寫方法、實踐、以太坊虛擬機、契約安全、軟體工程等維度全景呈現以太坊智慧型契約開發的各個方面。更重要的是,以實戰為導向,包含若干個翔實、完整的DApp案例講解。
全書共12章,分為4個部分:
準備篇(第1~2章) 介紹了以太坊的常識、基礎互動和開發工具套件。
基礎篇(第3~6章) 詳細講解了智慧型契約開發語言 Solidity 的所有語法和編寫契約的基本方法,同時也介紹了編譯器和 Solidity 集成開發工具的使用。
進階篇(第7~10章) 首先詳細講解了以太坊協定的細節和以太坊虛擬機的實現原理和架構設計;然後講解了用於以太坊虛擬機函式調用的套用二進制編碼的細節,以及公共基礎契約庫 openzeppelin-solidity 的源碼實現;*後為智慧型契約的安全開發提供了經驗性的指導,有極高的參考價值。
實戰篇(第11~12章) 結合若干 DApp 實例講解了如何基於智慧型契約來構造可用的去中性化應用程式。這部分內容可以幫助開發者快速上手構建基於以太坊的新一代網際網路應用程式。
本書的附錄中還包含了對以太坊協定中涉及的部分基礎算法、以太坊虛擬機的費用設計和指令設計、 Solidity 內聯彙編等的簡單介紹。
圖書目錄
推薦序
讚譽
前言
部分 準備篇
第1章 快速了解以太坊2
1.1 以太坊是什麼2
1.2 以太坊的歷史和發展路線圖5
1.3 以太坊的基本概念8
1.3.1 賬戶(accounts)8
1.3.2 契約(contracts)9
1.3.3 交易(transaction)和訊息(message)9
1.3.4 氣(gas)10
1.4 以太幣(ether)12
1.4.1 以太幣的發行12
1.4.2 以太幣的單位13
1.4.3 以太坊挖礦13
1.5 以太坊測試網路13
1.6 以太坊客戶端14
1.7 以太坊生態系統全景掃描15
1.7.1 Swarm15
1.7.2 ENS15
1.7.3 Whisper16
1.7.4 其他相關項目16
1.8 本章小結17
第2章 以太坊基礎互動及基礎開發工具詳解18
2.1 以太坊客戶端的下載、安裝及簡介18
2.1.1 Geth下載18
2.1.2 Geth安裝19
2.1.3 Geth啟動與數據目錄結構20
2.1.4 網路環境分類20
2.2 核心命令和參數解析21
2.2.1 如何獲得命令及參數21
2.2.2 常見基礎操作命令22
2.2.3 常見web3j互動命令23
2.3 Remix詳解26
2.3.1 Remix簡介26
2.3.2 Remix實戰27
2.4 本章小結32
第二部分 基礎篇
第3章 智慧型契約開發語言Solidity基礎34
3.1 智慧型契約與Solidity簡介34
3.2 Solidity基礎語法35
3.2.1 版本雜注35
3.2.2 import的用法35
3.2.3 代碼注釋36
3.2.4 數據類型36
3.2.5 全局變數52
3.2.6 表達式和控制結構55
3.3 Solidity語言速查表63
3.4 Solidity原始碼書寫風格68
3.5 本章小結82
第4章 Solidity編譯器83
4.1 安裝Solidity編譯器83
4.1.1 直接獲取可執行程式包83
4.1.2 從原始碼編譯構建84
4.1.3 Solidity編譯器版本號詳解86
4.2 使用Solidity編譯器87
4.2.1 命令行編譯器87
4.2.2 編譯器輸入、輸出的JSON描述88
4.3 契約元數據93
4.4 本章小結96
第5章 Solidity智慧型契約編寫97
5.1 創建智慧型契約97
5.2 可見性控制99
5.3 getter函式100
5.4 函式修飾器102
5.5 狀態常量104
5.6 函式104
5.6.1 view函式105
5.6.2 pure函式105
5.6.3 fallback函式106
5.6.4 函式重載107
5.7 事件108
5.8 繼承110
5.8.1 基類構造函式110
5.8.2 多重繼承111
5.8.3 線性化114
5.9 抽象智慧型契約114
5.10 接口115
5.11 庫116
5.12 using for的用法119
5.13 本章小結121
第6章 Solidity集成開發工具簡介122
6.1 Truffle122
6.1.1 Truffle簡介122
6.1.2 快速體驗123
6.1.3 用Truffle的開發過程124
6.1.4 Truffle高級用法134
6.2 Embark136
6.2.1 Embark安裝137
6.2.2 Embark快速開始138
6.2.3 Embark常規用法139
6.2.4 智慧型契約的配置與調用143
6.2.5 Embark去中心化存儲145
6.2.6 Embark去中心化通信148
6.3 其他工具(Remix)149
6.3.1 Solidity編輯與編譯149
6.3.2 Solidity契約部署150
6.4 本章小結151
第三部分 進階篇
第7章 深入理解以太坊虛擬機154
7.1 區塊鏈範式154
7.2 狀態、交易、收據和區塊155
7.2.1 狀態155
7.2.2 交易156
7.2.3 收據157
7.2.4 區塊158
7.2.5 以太坊基礎數據結構匯總160
7.2.6 理解gas161
7.3 交易執行162
7.4 執行模型—以太坊虛擬機163
7.4.1 EVM概述164
7.4.2 EVM基礎操作碼164
7.4.3 EVM代碼的執行166
7.5 契約創建167
7.6 訊息調用168
7.7 區塊定稿170
7.8 本章小結172
第8章 套用二進制接口174
8.1 函式選擇器174
8.2 參數編碼175
8.2.1 類型的規範表達175
8.2.2 編碼的形式化說明176
8.2.3 編碼實例178
8.3 動態類型的使用180
8.4 事件184
8.5 契約接口的JSON描述185
8.6 處理元組類型186
8.7 非標準打包模式188
8.8 本章小結189
第9章 OpenZeppelin原始碼詳解190
9.1 通用基礎契約191
9.1.1 地址工具(AddressUtils.sol)191
9.1.2 橢圓曲線簽名操作(ECRecovery.sol)192
9.1.3 限制子契約的餘額(LimitBalance.sol)194
9.1.4 Merkle證明(Merkle-Proof.sol)195
9.1.5 拒絕重入(Reentrancy-Guard.sol)196
9.2 算術運算197
9.2.1 基本算術(Math.sol)197
9.2.2 安全算術(SafeMath.sol)198
9.3 自省(introspection)200
9.3.1 ERC165(ERC165.sol)200
9.3.2 接口查找基礎契約(Supports-InterfaceWithLookup.sol)201
9.4 歸屬權(用戶許可權)202
9.4.1 歸屬權(Ownable.sol)202
9.4.2 用戶角色(Roles.sol)204
9.4.3 基於角色的訪問控制(RBAC.sol)205
9.4.4 超級用戶(Superuser.sol)208
9.4.5 聯繫方式(Contactable.sol)210
9.4.6 歸屬權轉移請求(Claimable.sol)210
9.4.7 有時限的歸屬權轉移請求(DelayedClaimable.sol)211
9.4.8 歸屬權繼承(Heritable.sol)212
9.4.9 契約不歸屬於契約(HasNoContracts.sol)215
9.4.10 契約不持有以太幣(HasNoEther.sol)216
9.4.11 契約可找回token(Can-ClaimToken.sol)218
9.4.12 契約不持有token(HasNo-Tokens.sol)218
9.4.13 契約什麼都不持有(NoOwner.sol)219
9.5 訪問控制220
9.5.1 簽名保