预购商品
书目分类
特别推荐
本書從區塊鏈的概念、原理、核心技術和應用四個方面,系統地介紹了以太坊區塊鏈開發的相關知識。其中,重點介紹了以太坊的相關概念和原理、以太坊客戶端Geth、以太坊常用智能合約開發工具、Solidity語言和智能合約開發等內容,並實現了眾籌合約和代幣合約兩個項目實戰案例,可以讓讀者對智能合約開發的整體流程有一個全面的了解。另外,書中結合示例對Web3.js的相關知識也做了詳細介紹,以幫助讀者更好地理解和利用以太坊的相關數據。 本書內容豐富,講解通俗易懂,案例典型,實用性強,特別適合區塊鏈技術愛好者和智能合約開發的相關從業人員閱讀,也適合區塊鏈底層研究人員閱讀。另外,本書還適合作為區塊鏈培訓機構作為相關課程的培訓教材使用。
前言 第1篇 基礎理論與原理 第1章 與區塊鏈的第一次親密接觸 2 1.1 什麼是區塊鏈 2 1.1.1 區塊鏈簡介 2 1.1.2 區塊鏈的鏈式結構 3 1.1.3 區塊鏈上的區塊常見數據 4 1.2 工作量證明機制(PoW) 6 1.2.1 區塊鏈遭遇的問題 6 1.2.2 PoW模型 8 1.2.3 PoW為什麼能防止篡改 9 1.3 權益證明機制(PoS) 11 1.3.1 什麼是PoS 12 1.3.2 PoS的優勢與劣勢 12 1.4 委託權益證明(DPoS) 12 1.5 權威證明(PoA) 13 1.6 區塊鏈的應用 13 1.7 本章小結 13 第2章 去中心化應用——DApp 15 2.1 DApp簡介 15 2.1.1 什麼是DApp 15 2.1.2 DApp網路組建過程 16 2.1.3 DApp的優點 16 2.1.4 DApp存在的問題 16 2.2 中心化與去中心化 17 2.2.1 身份驗證 17 2.2.2 通信 17 2.2.3 資料交互 17 2.2.4 系統維護 18 2.3 DApp網路與通信 18 2.3.1 P2P網路與WWW 19 2.3.2 P2P網路拓撲結構類型 20 2.3.3 小結 21 2.4 DApp貨幣與中心化資料交互 22 2.4.1 DApp貨幣 22 2.4.2 中心化應用獲取去中心化資料 22 2.4.3 去中心化應用獲取中心化資料 22 2.5 常見的DApp 23 2.5.1 比特幣 23 2.5.2 乙太坊 23 2.5.3 IPFS存儲系統 23 第3章 比特幣那些事 25 3.1 比特幣簡介 25 3.1.1 比特幣公開金鑰與私密金鑰 25 3.1.2 數位簽章 26 3.2 橢圓曲線演算法 26 3.2.1 群 26 3.2.2 橢圓曲線演算法定義 28 3.2.3 橢圓曲線幾何運算 29 3.2.4 橢圓曲線演算法的代碼實現 30 3.2.5 橢圓曲線加密與簽名原理 37 3.3 比特幣私密金鑰、公開金鑰與地址 39 3.3.1 從私密金鑰到地址 39 3.3.2 公開金鑰壓縮 40 3.3.3 私密金鑰格式 41 3.3.4 私密金鑰與安全 41 3.4 比特幣交易 44 3.4.1 交易簡介 44 3.4.2 交易輸出 44 3.4.3 交易輸入 44 3.4.4 交易費 45 3.4.5 付款至公開金鑰雜湊(P2PKH) 45 3.4.6 多重簽名與P2SH 46 3.5 比特幣錢包 46 3.5.1 錢包簡介 46 3.5.2 生成助記詞 47 3.5.3 從助記詞生成種子 48 3.5.4 從種子生成HD錢包 48 3.5.5 HD錢包金鑰路徑 50 3.6 比特幣相關資源 51 第4章 乙太坊 52 4.1 乙太坊簡介 52 4.1.1 什麼是乙太坊 52 4.1.2 乙太坊虛擬機器(EVM) 53 4.1.3 乙太坊智慧合約與高階語言 53 4.1.4 乙太幣單位 54 4.1.5 乙太坊發行版本本與提案 54 4.2 乙太坊帳戶 55 4.2.1 外部帳戶 55 4.2.2 合約帳戶 56 4.2.3 外部帳戶與合約帳戶的異同 56 4.3 乙太坊交易 57 4.3.1 gas、gasPrice與gasLimit 57 4.3.2 gasUsed與交易花費 58 4.3.3 什麼是乙太坊交易與消息 58 4.4 乙太坊網路 59 4.4.1 乙太坊網路簡介 59 4.4.2 乙太坊與Kademlia 59 4.4.3 乙太坊用戶端 61 4.5 挖礦 62 4.5.1 什麼是挖礦 62 4.5.2 挖礦獎勵 62 4.5.3 乙太坊區塊 63 4.6 GHOST協議 64 4.6.1 區塊時間 64 4.6.2 區塊分叉 65 4.6.3 普通分叉帶來的問題 66 4.6.4 GHOST協定的具體內容 67 4.7 Ethash演算法之DAG 68 4.7.1 什麼是DAG 68 4.7.2 DAG生成過程 69 4.7.3 為什麼要使用DAG 69 4.8 Ethash演算法 70 4.8.1 Ethash演算法簡介 70 4.8.2 Ethash演算法流程 70 4.9 本章小結 71 第2篇 開發工具 第5章 智慧合約開發常用工具 74 5.1 Git簡介 74 5.1.1 Git安裝 74 5.1.2 Git常用命令 75 5.1.3 Git資源推薦 76 5.2 Node.js簡介 76 5.2.1 什麼是Node.js 76 5.2.2 Node.js安裝 77 5.3 NPM簡介 78 5.3.1 npm config命令 78 5.3.2 NPM與語義化版本 80 5.3.3 npm install命令 82 5.3.4 NPM鏡像 83 5.3.5 NPM的其他常用命令 84 5.4 webpack簡介 85 5.4.1 認識webpack 85 5.4.2 webpack首秀 85 5.4.3 webpack 與webpack-dev-server 87 5.4.4 webpack常用功能與配置 90 5.4.5 webpack總結 92 5.5 Postman簡介 92 5.5.1 認識Postman 93 5.5.2 Postman的簡單用法 94 5.5.3 Postman腳本 95 5.6 LevelDB簡介 96 5.6.1 認識LevelDB 96 5.6.2 LevelDB文件 97 5.6.3 SST結構與資料查找 99 第6章 乙太坊私鏈神器——Ganache 102 6.1 Ganache簡介 102 6.1.1 什麼是Ganache 102 6.1.2 ganache-cli命令安裝 103 6.1.3 Ganache圖形介面 104 6.2 Ganache常見命令參數 106 6.2.1 挖礦時間 106 6.2.2 主機埠與網路 106 6.2.3 gas相關參數 106 6.2.4 其他參數 106 6.3 Ganache帳戶 107 6.3.1 能多給我點錢嗎 107 6.3.2 能多給我幾個帳戶嗎 108 6.3.3 助記詞相關參數 108 6.3.4 指定帳戶 108 6.3.5 鎖定帳戶與解鎖 109 6.4 Ganache與JavaScript 109 6.4.1 在工程中引用Ganache的Provider 109 6.4.2 在工程中啟動Ganache的Server 110 6.4.3 配置工程中依賴的Ganache 111 6.5 Ganache交易相關RPC方法 112 6.5.1 eth_sendTransaction方法 113 6.5.2 eth_getTransactionCount方法 115 6.5.3 eth_getTransactionReceipt方法 116 6.5.4 eth_getTransactionByHash方法 116 6.5.5 交易相關的其他方法 117 6.6 Ganache帳戶相關RPC方法 117 6.6.1 eth_accounts方法 118 6.6.2 eth_getBalance方法 118 6.6.3 eth_coinbase方法 119 6.7 Ganache區塊相關RPC方法 119 6.7.1 eth_getBlockByHash方法 119 6.7.2 eth_getBlockByNumber方法 122 6.7.3 其他相關方法 122 6.8 Ganache日誌相關RPC方法 123 6.8.1 eth_newFilter方法 123 6.8.2 eth_getFilterLogs方法 124 6.8.3 eth_getLogs方法 125 6.8.4 其他關聯方法 126 6.9 Ganache的其他RPC方法 127 6.9.1 web3_clientVersion方法 127 6.9.2 net_version方法 127 6.9.3 eth_getCode方法 128 6.9.4 eth_sign方法 129 第7章 乙太坊官方用戶端——Geth 130 7.1 Geth簡介 130 7.1.1 Geth是什麼 130 7.1.2 Geth安裝 130 7.1.3 Geth相關目錄 132 7.1.4 Geth相關工具 134 7.2 Geth子命令 134 7.2.1 Geth子命令概述 135 7.2.2 Geth子命令之account 136 7.2.3 Geth子命令之console與attach 137 7.2.4 Geth子命令之copydb與removedb 137 7.3 Geth啟動參數 138 7.3.1 Geth資料同步模式 138 7.3.2 Geth網路相關參數 138 7.3.3 Geth乙太坊相關參數 139 7.3.4 Geth RPC相關參數 140 7.3.5 Geth挖礦相關參數 141 7.3.6 Geth ethash演算法參數 142 7.3.7 Geth交易池配置 142 7.3.8 Geth日誌參數 145 7.3.9 Geth的其他參數 146 7.4 Geth啟動實例 146 7.4.1 Geth啟動單個節點 146 7.4.2 Geth啟動多節點組網 148 7.5 Geth控制台與管理介面 149 7.5.1 admin模組 149 7.5.2 debug模組 150 7.5.3 miner模組 151 7.5.4 personal模組 152 7.5.5 txpool模組 153 7.6 keystore文件 153 7.6.1 keystore文件簡介 153 7.6.2 從金鑰到金鑰文件 154 7.6.3 從金鑰到金鑰檔流程驗證 155 第8章 乙太坊錢包與流覽器 158 8.1 MetaMask外掛程式 158 8.1.1 MetaMask簡介 158 8.1.2 MetaMask安裝 159 8.1.3 第一次使用MetaMask 160 8.1.4 MetaMask的連接配置 161 8.1.5 MetaMask的其他配置 162 8.1.6 MetaMask帳戶管理 163 8.1.7 MetaMask交易 164 8.1.8 小結 165 8.2 Ethereum Wallet錢包 166 8.2.1 Ethereum Wallet簡介 166 8.2.2 安裝Ethereum Wallet與Mist 166 8.2.3 使用Ethereum Wallet 169 8.3 Mist與Ethereum Wallet 170 8.3.1 Ethereum Wallet與Mist的區別 171 8.3.2 Mist的配置與使用 171 8.3.3 小結 172 8.4 MyEtherWallet網頁錢包 172 8.4.1 MyEtherWallet簡介 173 8.4.2 MyEtherWallet合約交互 174 8.4.3 MyEtherWallet離線交易 175 8.4.4 MyEtherWallet的其他功能 177 第3篇 Solidity與智慧合約開發 第9章 Solidity初遇 180 9.1 Solidity簡介 180 9.1.1 什麼是Solidity 180 9.1.2 智能合約示例 181 9.1.3 Solidity編譯版本 182 9.2 Solidity編輯器 182 9.2.1 Sublime編輯器 182 9.2.2 Atom編輯器 185 9.2.3 IDEA編輯器 187 9.3 Remix編輯器 188 9.3.1 Remix簡介 188 9.3.2 Remix文件管理 189 9.3.3 Remix編輯面板與控制台 190 9.3.4 Remix編譯與運行面板 191 9.3.5 Remix基本配置面板 193 9.3.6 Remix分析配置面板 194 9.4 Solidity常見概念 196 9.4.1 狀態變數 196 9.4.2 區域變數 196 9.4.3 Solidity函數 197 9.4.4 返回多值 197 9.4.5 構造函數 198 9.4.6 異常 200 9.4.7 Solidity注釋與文檔 201 9.5 Solidity運算子 203 9.5.1 Solidity運算子簡介 203 9.5.2 Solidity運算子注意事項 204 9.6 Solidity控制結構 205 9.6.1 控制結構簡介 205 9.6.2 判斷語句 205 9.6.3 for迴圈 206 9.6.4 while與do…while迴圈 206 9.6.5 continue與break 207 9.6.6 三目運算子 208 9.7 可見性修飾符 209 9.7.1 public修飾符 209 9.7.2 internal修飾符 210 9.7.3 private修飾符 213 9.7.4 external修飾符 214 9.8 函數其他修飾符 216 9.8.1 constant修飾符 216 9.8.2 view修飾符 217 9.8.3 pure修飾符 217 第10章 Solidity資料類型 219 10.1 資料類型簡介 219 10.1.1 數值型別 219 10.1.2 參考類型 220 10.1.3 小結 221 10.2 Booleans類型 221 10.2.1 Booleans類型簡介 221 10.2.2 Booleans類型支援的運算子 221 10.3 Integers類型 223 10.3.1 Integers類型簡介 223 10.3.2 Integers類型支援的運算子 224 10.3.3 Integers整除問題 225 10.4 定點數類型 226 10.4.1 定點數類型簡介 226 10.4.2 定點數類型支援的運算子 227 10.5 字面量 227 10.5.1 字串字面量 227 10.5.2 十六進位字面量 229 10.5.3 有理數字面量 230 10.6 Enum類型 231 10.6.1 枚舉類型簡介 231 10.6.2 枚舉類型實例 231 10.7 mapping類型 232 10.7.1 mapping類型簡介 232 10.7.2 mapping類型實例 232 10.8 struct類型 233 第11章 Solidity資料類型進階 235 11.1 Solidity固定大小位元組陣列 235 11.1.1 固定大小位元組陣列類型 235 11.1.2 固定大小位元組陣列支援
唐盛彬,就職於國內領先的手機遊戲平臺當樂網(d.cn),主要負責當樂遊戲中心App平臺的SDK及區塊鏈遊戲眾籌平臺DOGI.IO的智慧合約開發工作。熟悉乙太坊,對乙太坊底層原理和相關協定有較為深入的研究;熟悉乙太坊智慧合約開發的核心技術與常用工具,如Solidity語言、web3.js、Truffle和Geth等;對使用Solidity語言進行乙太坊智慧合約開發有豐富的實戰經驗,特別是在眾籌和代幣開發等相關領域。
客服公告
热门活动
订阅电子报