1.業(yè)內(nèi)專家汪波、何瓊、孤失、翟東明聯(lián)袂力薦
2.本書(shū)將向讀者展示EOS區(qū)塊鏈技術(shù)的眾多概念和特性,包括初識(shí)EOS、EOS的工作原理、開(kāi)發(fā)工具和環(huán)境、編寫(xiě)智能合約、EOS RPC接口、創(chuàng)建和部署DApp、部署基于EOS的側(cè)鏈等內(nèi)容。
3.本書(shū)結(jié)合實(shí)戰(zhàn)經(jīng)驗(yàn),從基礎(chǔ)的概念和原理,到一線的執(zhí)行與案例,對(duì)EOS技術(shù)進(jìn)行了系統(tǒng)且深入的闡述。
EOS被稱為區(qū)塊鏈3.0,是下一代區(qū)塊鏈技術(shù),本書(shū)將向讀者展示EOS區(qū)塊鏈技術(shù)的眾多概念和特性。全書(shū)共分為7章,分別是初識(shí)EOS、EOS的工作原理、開(kāi)發(fā)工具和環(huán)境、編寫(xiě)智能合約、EOS RPC接口、創(chuàng)建和部署DApp、部署基于EOS的側(cè)鏈等。本書(shū)希望能夠幫助開(kāi)發(fā)者進(jìn)入EOS的世界并比較容易地上手開(kāi)發(fā)DApp。
虞家男(Eric Yu),上海交通大學(xué)碩士,區(qū)塊鏈技術(shù)專家,全棧開(kāi)發(fā)者,麥子錢(qián)包CTO&聯(lián)合創(chuàng)始人,EOSData.io技術(shù)社區(qū)聯(lián)合創(chuàng)始人。
第1章 初識(shí)EOS 1
1.1 區(qū)塊鏈操作系統(tǒng) 1
1.1.1 什么是EOS 1
1.1.2 EOS要解決什么問(wèn)題 1
1.1.3 EOS的解決方案 2
1.1.4 EOS的生態(tài)發(fā)展需要哪些支持 4
1.2 EOS開(kāi)發(fā)團(tuán)隊(duì) 8
1.3 EOS基礎(chǔ)名詞解釋 11
1.3.1 區(qū)塊鏈 11
1.3.2 比特幣 11
1.3.3 以太坊 12
1.3.4 智能合約 14
1.3.5 DApp去中心化應(yīng)用 15
1.3.6 共識(shí)機(jī)制 16
1.3.7 出塊時(shí)間 16
1.3.8 IPFS 16
1.4 EOS系統(tǒng)的特點(diǎn) 18
1.4.1 設(shè)計(jì)理念 18
1.4.2 功能特性 20
1.4.3 經(jīng)濟(jì)模型 21
1.5 EOS技術(shù)意義 22
1.5.1 EOS與BTC 22
1.5.2 EOS與ETH 22
1.5.3 EOS與騰訊服務(wù)器集群 23
1.5.4 并行執(zhí)行智能合約 25
1.5.5 數(shù)據(jù)中心級(jí)節(jié)點(diǎn) 26
1.5.6 跨鏈通信與更加輕量級(jí)的默克爾樹(shù)證明 27
1.5.7 拓展性 28
1.5.8 拒絕服務(wù)攻擊DDoS 28
1.6 開(kāi)發(fā)進(jìn)度規(guī)劃 30
1.6.1 階段1:最小可行的測(cè)試環(huán)境(2017年夏季) 30
1.6.2 階段2:最小可行的測(cè)試網(wǎng)絡(luò)(2017年秋季) 32
1.6.3 階段3:測(cè)試&安全審計(jì)(2017年冬季,2018
年春季) 33
1.6.4 階段4:并行優(yōu)化(2018年夏季/秋季) 34
1.6.5 階段5:實(shí)現(xiàn)集群(未來(lái)) 34
1.7 EOS系統(tǒng)當(dāng)前面臨的挑戰(zhàn) 34
1.7.1 開(kāi)發(fā)者的成本 34
1.7.2 潛在的攻擊EOS系統(tǒng)的方法 35
1.7.3 超級(jí)節(jié)點(diǎn)的服務(wù)器成本和穩(wěn)定性 35
1.8 總結(jié) 36
第2章 EOS的工作原理 37
2.1 EOS系統(tǒng)架構(gòu) 37
2.2 區(qū)塊數(shù)據(jù)結(jié)構(gòu) 39
2.2.1 區(qū)塊頭(block_header) 39
2.2.2 區(qū)塊摘要(signed_block_summary) 40
2.2.3 區(qū)塊 41
2.3 EOS的賬戶體系 41
2.3.1 什么是賬戶 41
2.3.2 什么是交易 42
2.3.3 什么是公鑰 42
2.3.4 什么是密鑰對(duì) 43
2.3.5 什么是權(quán)限 43
2.3.6 賬戶權(quán)限的更新 43
2.3.7 什么是錢(qián)包 44
2.3.8 賬戶和錢(qián)包的關(guān)系 44
2.3.9 EOS權(quán)限管理 46
2.3.10 丟失密碼可恢復(fù) 53
2.4 EOS的共識(shí)機(jī)制 54
2.4.1 EOS共識(shí)機(jī)制的歷史背景 54
2.4.2 什么是BFT-DPoS 54
2.4.3 交易的數(shù)據(jù)結(jié)構(gòu) 56
2.4.4 每秒處理交易數(shù)(TPS) 57
2.4.5 交易確認(rèn) 57
2.4.6 交易作為權(quán)益證明(TaPoS) 58
2.4.7 DPoS的不可逆確認(rèn)算法 58
2.4.8 EOS共識(shí)機(jī)制的優(yōu)勢(shì) 59
2.4.9 EOS共識(shí)機(jī)制的問(wèn)題 61
2.5 社區(qū)治理模式 62
2.5.1 超級(jí)節(jié)點(diǎn) 62
2.5.2 節(jié)點(diǎn)基礎(chǔ)配置 62
2.5.3 節(jié)點(diǎn)收益 63
2.5.4 EOS主網(wǎng)啟動(dòng)過(guò)程 64
2.5.5 節(jié)點(diǎn)投票的設(shè)計(jì) 65
2.5.6 并行的EOS主網(wǎng) 68
2.6 EOS資源的經(jīng)濟(jì)模型 68
2.6.1 什么是EOS資源 68
2.6.2 EOS不是免費(fèi)的嗎?為什么還要消耗資源 70
2.6.3 EOS資源模型與ETH的不同 70
2.6.4 CPU和帶寬的抵押模型 71
2.6.5 內(nèi)存買(mǎi)賣(mài)模型 72
2.6.6 EOS收費(fèi)模式可能存在的問(wèn)題 73
2.7 總結(jié) 74
第3章 開(kāi)發(fā)工具和環(huán)境 75
3.1 EOS客戶端安裝 75
3.1.1 硬件和系統(tǒng)要求 75
3.1.2 環(huán)境準(zhǔn)備 76
3.1.3 安裝EOS 76
3.1.4 驗(yàn)證安裝結(jié)果 78
3.1.5 單節(jié)點(diǎn)測(cè)試 78
3.1.6 多節(jié)點(diǎn)測(cè)試 79
3.1.7 測(cè)試節(jié)點(diǎn)同步 80
3.1.8 主網(wǎng)節(jié)點(diǎn)同步測(cè)試 81
3.1.9 如何更新EOS版本 84
3.1.10 編譯安裝常見(jiàn)問(wèn)題 86
3.2 nodeos命令行工具 89
3.3 cleos命令行工具 91
3.4 keosd錢(qián)包 95
3.4.1 如何運(yùn)行keosd 95
3.4.2 命令參考 96
3.4.3 使用nodeos管理錢(qián)包 98
3.5 EOS源代碼結(jié)構(gòu) 99
3.6 EOS編程開(kāi)發(fā)工具 103
3.6.1 Visual Studio Code 103
3.6.2 CLion 104
3.7 技術(shù)社區(qū) 105
3.8 總結(jié) 105
第4章 編寫(xiě)智能合約 106
4.1 什么是EOS智能合約 106
4.2 C/C++ 106
4.2.1 預(yù)處理和頭文件 107
4.2.2 構(gòu)造函數(shù) 107
4.2.3 私有函數(shù) 107
4.2.4 公有函數(shù) 108
4.2.5 設(shè)置Action 108
4.2.6 .h、.hpp和.cpp文件 108
4.3 WebAssembly 109
4.4 ABI 110
4.5 通信模式 115
4.5.1 Action 116
4.5.2 Transaction 117
4.6 控制結(jié)構(gòu) 117
4.7 數(shù)據(jù)類(lèi)型 117
4.7.1 自定義類(lèi)型 117
4.7.2 結(jié)構(gòu)體 119
4.7.3 結(jié)構(gòu)體的別名 121
4.8 EOS智能合約數(shù)據(jù)庫(kù) 122
4.8.1 什么是EOS智能合約數(shù)據(jù)庫(kù) 122
4.8.2 多重索引數(shù)據(jù)庫(kù)API(Multi-Index API) 123
4.8.3 數(shù)據(jù)表 124
4.8.4 多索引 125
4.8.5 迭代器 126
4.8.6 使用multi-index表 126
4.9 eosio賬戶 129
4.10 eosiolib庫(kù) 129
4.11 系統(tǒng)合約 131
4.11.1 eosio.bios智能合約 131
4.11.2 eosio.token智能合約 133
4.11.3 exchange智能合約 133
4.11.4 eosio.msig智能合約 133
4.12 李嘉圖合約(Ricardian Contract) 134
4.13 應(yīng)用實(shí)踐1:Hello World 135
4.13.1 你的第一個(gè)EOS DApp 135
4.13.2 搭建智能合約測(cè)試環(huán)境 135
4.13.3 創(chuàng)建DApp工程 140
4.13.4 編譯智能合約 141
4.13.5 部署智能合約到賬戶 143
4.13.6 調(diào)用智能合約 144
4.13.7 李嘉圖合約 144
4.14 資源消耗限制 147
4.15 調(diào)試智能合約 148
4.16 智能合約安全性 148
4.16.1 溢出漏洞處理 148
4.16.2 智能合約更新升級(jí) 149
4.16.3 EOS核心仲裁法庭解決爭(zhēng)議 149
4.17 應(yīng)用實(shí)踐2:eosio.token智能合約 150
4.17.1 創(chuàng)建賬戶 150
4.17.2 部署智能合約 151
4.17.3 創(chuàng)建EOS Token 151
4.17.4 發(fā)行Token 152
4.17.5 轉(zhuǎn)賬 153
4.18 總結(jié) 154
第5章 EOS RPC接口 155
5.1 配置插件 155
5.2 測(cè)試工具 155
5.3 主網(wǎng)RPC接口地址 156
5.4 主要接口功能說(shuō)明 157
5.4.1 API參數(shù) 157
5.4.2 Chain API 157
5.4.3 Wallet API 158
5.5 獲取智能合約數(shù)據(jù) 158
5.6 客戶端簽名 160
5.6.1 keosd簽名 160
5.6.2 eosjs庫(kù)簽名 162
5.6.3 eosjs2庫(kù)簽名 164
5.6.4 mds-eosjs庫(kù)簽名 166
5.7 應(yīng)用實(shí)踐3:EOS錢(qián)包 168
5.7.1 錢(qián)包的各種類(lèi)型 169
5.7.2 錢(qián)包的數(shù)據(jù)和界面 169
5.7.3 查詢賬戶余額 169
5.7.4 轉(zhuǎn)賬 170
5.7.5 開(kāi)源EOS錢(qián)包 171
5.8 應(yīng)用實(shí)踐4:區(qū)塊鏈瀏覽器 172
5.8.1 基本信息 172
5.8.2 區(qū)塊列表與區(qū)塊詳情 173
5.8.3 交易詳情 177
5.8.4 查詢賬戶交易記錄 181
5.9 總結(jié) 183
第6章 創(chuàng)建和部署DApp 184
6.1 什么是DApp(去中心化應(yīng)用) 184
6.2 DApp基礎(chǔ)架構(gòu) 185
6.3 Demux DApp架構(gòu) 186
6.4 MongoDB數(shù)據(jù)庫(kù)插件 189
6.5 智能合約的資源消耗 191
6.6 應(yīng)用實(shí)踐5:TicTacToe 192
6.6.1 游戲規(guī)則 193
6.6.2 合約開(kāi)發(fā) 193
6.6.3 創(chuàng)建ABI文件 205
6.6.4 編譯合約 207
6.6.5 部署合約 207
6.6.6 命令行測(cè)試游戲 207
6.6.7 創(chuàng)建Web前端應(yīng)用程序 209
6.7 應(yīng)用實(shí)踐6:Todolist DApp 211
6.7.1 創(chuàng)建table 212
6.7.2 創(chuàng)建Action 213
6.7.3 部署和命令行測(cè)試 214
6.7.4 前端實(shí)現(xiàn) 215
6.8 應(yīng)用實(shí)踐7:EOS Blog DApp 217
6.8.1 合約開(kāi)發(fā) 217
6.8.2 前端開(kāi)發(fā) 220
6.9 其他著名EOS DApp案例 222
6.9.1 Everipedia――基于EOS的維基百科 222
6.9.2 Chintai――EOS通證租賃平臺(tái) 224
6.9.3 EOSfinex――基于EOS的去中心化交易所 226
6.9.4 RiskExchange――基于EOS的風(fēng)險(xiǎn)交易所 227
6.10 總結(jié) 228
第7章 部署基于EOS的側(cè)鏈 229
7.1 主鏈和側(cè)鏈 229
7.1.1 主鏈 229
7.1.2 側(cè)鏈 229
7.1.3 分層網(wǎng)絡(luò)架構(gòu) 230
7.2 側(cè)鏈的意義 231
7.2.1 根據(jù)資源付費(fèi)的無(wú)幣區(qū)塊鏈 231
7.2.2 降低開(kāi)發(fā)資源費(fèi)用 231
7.3 啟動(dòng)多節(jié)點(diǎn)測(cè)試側(cè)鏈 232
7.4 啟動(dòng)支持投票的EOS側(cè)鏈 237
7.4.1 手動(dòng)執(zhí)行啟動(dòng)過(guò)程 237
7.4.2 配置初始啟動(dòng)節(jié)點(diǎn) 238
7.4.3 IP地址準(zhǔn)備和P2P連接 238
7.4.4 啟動(dòng)genesis節(jié)點(diǎn) 238
7.4.5 為eosio賬戶創(chuàng)建密鑰 239
7.4.6 創(chuàng)建重要的系統(tǒng)賬戶 239
7.4.7 部署eosio.token智能合約 240
7.4.8 部署eosio.msig智能合約 241
7.4.9 創(chuàng)建 SYS Token 242
7.4.10 部署eosio.system智能合約 243
7.4.11 切換到多節(jié)點(diǎn) 243
7.4.12 抵押Token和拓展網(wǎng)絡(luò) 244
7.4.13 創(chuàng)建抵押賬戶 245
7.4.14 注冊(cè)出塊節(jié)點(diǎn) 246
7.4.15 eosio撤銷(xiāo)權(quán)限 249
7.5 總結(jié) 250
本書(shū)總結(jié) 251
參考文獻(xiàn) 252