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