EOS實戰與源碼分析

EOS實戰與源碼分析

《EOS實戰與源碼分析》是2019年6月電子工業出版社出版的圖書,作者是劉文彬。

基本介紹

  • 中文名:EOS實戰與源碼分析
  • 作者:劉文彬
  • ISBN:9787121369285
  • 頁數:276頁
  • 定價:69元
  • 出版社:電子工業出版社
  • 出版時間:2019年6月
  • 開本:16開
內容簡介,目錄,

內容簡介

在區塊鏈世界,區塊鏈1.0時代是比特幣,區塊鏈2.0時代是以太坊,區塊鏈3.0時代是EOS。EOS如同一個完整的作業系統,用戶或者機構可基於它構建各種應用程式。本書共有8章,可分為使用手冊與源碼分析兩部分。使用手冊部分主要介紹如何快速啟動單節點EOS鏈、終端互動命令cleos的使用,並模擬公鏈的配置與啟動。源碼分析部分主要介紹原始碼調試、EOS數據持久化機制、系統智慧型契約架構以及外掛程式系統。無論是正在使用EOS的軟體工程師、測試工程師、運維工程師、架構師,還是熱衷新技術的產品經理、管理人員,本書都具備很強的輔導和參考價值。

目錄

第1章 加密算法 1
1.1 單向哈希函式 1
1.2 對稱加密 2
1.3 非對稱加密 3
1.4 本章小結 3
第2章 啟動單節點EOS鏈 4
2.1 原始碼結構 4
2.2 編譯工程 4
2.2.1 腳本eosio_build.sh 5
2.2.2 常見錯誤 6
2.3 安裝命令 6
2.4 啟動nodeos 7
2.4.1 nodeos命令詳解 7
2.4.2 啟動一個獨立節點 8
2.4.3 RPC API 10
2.5 錢包服務keosd 11
2.6 Docker啟動 12
2.7 本章小結 14
第3章 終端互動命令cleos 15
3.1 cleos命令概述 15
3.2 create命令 16
3.3 convert腳本命令 17
3.3.1 打包事務 17
3.3.2 解包事務 18
3.3.3 打包action數據 19
3.4 get命令 20
3.5 set命令 21
3.5.1 設定賬戶許可權 22
3.5.2 設定action許可權 23
3.6 transfer命令 24
3.7 net命令 25
3.8 錢包操作 25
3.8.1 創建錢包 25
3.8.2 導入私鑰 26
3.8.3 創建密鑰 26
3.8.4 列舉錢包 27
3.8.5 查看私鑰 27
3.9 sign命令 27
3.10 push命令 28
3.11 multisig命令 28
3.11.1 準備環境 28
3.11.2 準備賬戶 29
3.11.3 普通轉賬 29
3.11.4 創建提案 30
3.11.5 查看提案 31
3.11.6 審批提案 33
3.11.7 執行提案 34
3.11.8 權重為1的情況 35
3.12 超級許可權sudo命令 36
3.13 系統命令system 36
3.14 本章小結 37
第4章 構建公鏈網路 38
4.1 公鏈網路概述 38
4.2 bbt腳本構建公鏈 38
4.2.1 bbt腳本幫助文檔 39
4.2.2 執行bbt腳本 41
4.3 公鏈資源管理 42
4.3.1 抵押頻寬 43
4.3.2 投票與代理投票 47
4.3.3 贖回頻寬 49
4.3.4 買賣記憶體資源 50
4.4 公鏈啟動重點步驟 51
4.4.1 創建系統賬戶 51
4.4.2 創建普通賬戶(資源管理) 52
4.4.3 註冊生產候選人 55
4.4.4 查看生產候選人 55
4.4.5 查看賬戶資源 56
4.4.6 為候選人投票 56
4.4.7 生產者認領獎勵 57
4.5 啟動結束掃尾工作 58
4.5.1 查看出塊計畫 58
4.5.2 處理eosio賬戶 59
4.5.3 處理系統賬戶 60
4.5.4 處理system契約 60
4.6 手動構建多機多節點網路 60
4.6.1 初始節點準備 61
4.6.2 連線多機多節點 62
4.7 本章小結 63
第5章 原始碼調試入門 64
5.1 調試環境搭建 64
5.2 調試nodeos命令 66
5.2.1 CMakeList.txt 66
5.2.2 application 66
5.2.3 外掛程式初始化 68
5.2.4 啟動外掛程式 72
5.2.5 執行外掛程式 74
5.2.6 斷開和異常處理 75
5.3 調試cleos創建賬戶 75
5.3.1 入口main函式 75
5.3.2 get info熱身 76
5.3.3 開始調試 78
5.3.4 事務相關參數 79
5.3.5 回調函式 80
5.3.6 context_free_actions 84
5.3.7 獲取必需密鑰 86
5.3.8 簽名事務 86
5.3.9 打包事務 87
5.4 本章小結 88
第6章 數據持久化 89
6.1 blocks.log日誌庫 89
6.1.1 Merkle Tree 89
6.1.2 區塊鏈數據結構 91
6.1.3 數據持久化概述 96
6.1.4 block_log接口 98
6.1.5 repair_log函式 99
6.2 chainbase狀態庫 101
6.2.1 並發訪問 102
6.2.2 undo操作 103
6.2.3 持久化處理 107
6.2.4 移植性 110
6.2.5 multi_index 111
6.2.6 與blocks.log對比 114
6.3 controller控制器 114
6.3.1 控制器概覽 114
6.3.2 控制器的信號 118
6.3.3 控制器實現概覽 123
6.3.4 待確認庫/分叉庫 124
6.3.5 快照技術 130
6.4 本章小結 136
第7章 智慧型契約 137
7.1 簡介 137
7.2 契約開發工具集 138
7.2.1 安裝cdt 138
7.2.2 編譯契約 139
7.2.3 部署契約 139
7.2.4 執行契約動作 140
7.2.5 編寫契約 140
7.2.6 李嘉圖契約 141
7.2.7 更新契約 141
7.2.8 調試契約 142
7.3 eosio.token 通證 142
7.3.1 創建token 142
7.3.2 發行token 143
7.3.3 token轉賬 145
7.3.4 餘額減少 146
7.3.5 餘額增加 147
7.4 eosio.system系統設定 148
7.4.1 概覽 148
7.4.2 更新已入選生產節點 150
7.4.3 系統契約管理出塊 153
7.4.4 初始化主幣 155
7.4.5 非常規賬戶競拍 156
7.4.6 創建賬戶 158
7.5 本章小結 160
第8章 外掛程式系統原始碼解析 161
8.1 chain_plugin鏈行為核心 161
8.1.1 接口列表 161
8.1.2 同步唯讀 162
8.1.3 異步讀寫 164
8.1.4 API外掛程式的生命周期 166
8.1.5 結構體成員序列化 166
8.1.6 chain外掛程式生命周期 167
8.1.7 RPC接口實現 170
8.2 http_plugin 基礎RPC 194
8.2.1 EOS外掛程式通信模式 194
8.2.2 add_api函式 196
8.2.3 add_handler函式 197
8.2.4 url_handlers集合 198
8.2.5 處理HTTP請求 198
8.2.6 生命周期 200
8.3 producer_plugin生產區塊 206
8.3.1 生命周期 207
8.3.2 同步區塊 210
8.3.3 同步事務 213
8.3.4 區塊上鏈 218
8.3.5 區塊不可逆 220
8.3.6 最後不可逆 221
8.3.7 鏈的條幅日誌 223
8.3.8 倒計時器 224
8.3.9 循環計畫出塊 226
8.3.10 校驗生產區塊 229
8.3.11 生產區塊 230
8.3.12 啟動出塊管理 231
8.4 mongo_db_plugin狀態持久化 232
8.4.1 生命周期 233
8.4.2 信號管理 236
8.4.3 佇列 237
8.4.4 擦除資料庫 238
8.4.5 初始化外掛程式 239
8.4.6 區塊消費 241
8.4.7 接收事務信號處理 243
8.4.8 套用事務信號處理 245
8.4.9 接收區塊信號處理 246
8.4.10 不可逆區塊信號處理 248
8.5 txn_test_gen_plugin測試TPS外掛程式 250
8.5.1 外掛程式的整體架構 250
8.5.2 創建測試賬戶接口 251
8.5.3 啟動測試接口 256
8.5.4 終止程式接口 261
8.5.5 TPS 261
8.6 本章小結 262,第1章 加密算法 1
1.1 單向哈希函式 1
1.2 對稱加密 2
1.3 非對稱加密 3
1.4 本章小結 3
第2章 啟動單節點EOS鏈 4
2.1 原始碼結構 4
2.2 編譯工程 4
2.2.1 腳本eosio_build.sh 5
2.2.2 常見錯誤 6
2.3 安裝命令 6
2.4 啟動nodeos 7
2.4.1 nodeos命令詳解 7
2.4.2 啟動一個獨立節點 8
2.4.3 RPC API 10
2.5 錢包服務keosd 11
2.6 Docker啟動 12
2.7 本章小結 14
第3章 終端互動命令cleos 15
3.1 cleos命令概述 15
3.2 create命令 16
3.3 convert腳本命令 17
3.3.1 打包事務 17
3.3.2 解包事務 18
3.3.3 打包action數據 19
3.4 get命令 20
3.5 set命令 21
3.5.1 設定賬戶許可權 22
3.5.2 設定action許可權 23
3.6 transfer命令 24
3.7 net命令 25
3.8 錢包操作 25
3.8.1 創建錢包 25
3.8.2 導入私鑰 26
3.8.3 創建密鑰 26
3.8.4 列舉錢包 27
3.8.5 查看私鑰 27
3.9 sign命令 27
3.10 push命令 28
3.11 multisig命令 28
3.11.1 準備環境 28
3.11.2 準備賬戶 29
3.11.3 普通轉賬 29
3.11.4 創建提案 30
3.11.5 查看提案 31
3.11.6 審批提案 33
3.11.7 執行提案 34
3.11.8 權重為1的情況 35
3.12 超級許可權sudo命令 36
3.13 系統命令system 36
3.14 本章小結 37
第4章 構建公鏈網路 38
4.1 公鏈網路概述 38
4.2 bbt腳本構建公鏈 38
4.2.1 bbt腳本幫助文檔 39
4.2.2 執行bbt腳本 41
4.3 公鏈資源管理 42
4.3.1 抵押頻寬 43
4.3.2 投票與代理投票 47
4.3.3 贖回頻寬 49
4.3.4 買賣記憶體資源 50
4.4 公鏈啟動重點步驟 51
4.4.1 創建系統賬戶 51
4.4.2 創建普通賬戶(資源管理) 52
4.4.3 註冊生產候選人 55
4.4.4 查看生產候選人 55
4.4.5 查看賬戶資源 56
4.4.6 為候選人投票 56
4.4.7 生產者認領獎勵 57
4.5 啟動結束掃尾工作 58
4.5.1 查看出塊計畫 58
4.5.2 處理eosio賬戶 59
4.5.3 處理系統賬戶 60
4.5.4 處理system契約 60
4.6 手動構建多機多節點網路 60
4.6.1 初始節點準備 61
4.6.2 連線多機多節點 62
4.7 本章小結 63
第5章 原始碼調試入門 64
5.1 調試環境搭建 64
5.2 調試nodeos命令 66
5.2.1 CMakeList.txt 66
5.2.2 application 66
5.2.3 外掛程式初始化 68
5.2.4 啟動外掛程式 72
5.2.5 執行外掛程式 74
5.2.6 斷開和異常處理 75
5.3 調試cleos創建賬戶 75
5.3.1 入口main函式 75
5.3.2 get info熱身 76
5.3.3 開始調試 78
5.3.4 事務相關參數 79
5.3.5 回調函式 80
5.3.6 context_free_actions 84
5.3.7 獲取必需密鑰 86
5.3.8 簽名事務 86
5.3.9 打包事務 87
5.4 本章小結 88
第6章 數據持久化 89
6.1 blocks.log日誌庫 89
6.1.1 Merkle Tree 89
6.1.2 區塊鏈數據結構 91
6.1.3 數據持久化概述 96
6.1.4 block_log接口 98
6.1.5 repair_log函式 99
6.2 chainbase狀態庫 101
6.2.1 並發訪問 102
6.2.2 undo操作 103
6.2.3 持久化處理 107
6.2.4 移植性 110
6.2.5 multi_index 111
6.2.6 與blocks.log對比 114
6.3 controller控制器 114
6.3.1 控制器概覽 114
6.3.2 控制器的信號 118
6.3.3 控制器實現概覽 123
6.3.4 待確認庫/分叉庫 124
6.3.5 快照技術 130
6.4 本章小結 136
第7章 智慧型契約 137
7.1 簡介 137
7.2 契約開發工具集 138
7.2.1 安裝cdt 138
7.2.2 編譯契約 139
7.2.3 部署契約 139
7.2.4 執行契約動作 140
7.2.5 編寫契約 140
7.2.6 李嘉圖契約 141
7.2.7 更新契約 141
7.2.8 調試契約 142
7.3 eosio.token 通證 142
7.3.1 創建token 142
7.3.2 發行token 143
7.3.3 token轉賬 145
7.3.4 餘額減少 146
7.3.5 餘額增加 147
7.4 eosio.system系統設定 148
7.4.1 概覽 148
7.4.2 更新已入選生產節點 150
7.4.3 系統契約管理出塊 153
7.4.4 初始化主幣 155
7.4.5 非常規賬戶競拍 156
7.4.6 創建賬戶 158
7.5 本章小結 160
第8章 外掛程式系統原始碼解析 161
8.1 chain_plugin鏈行為核心 161
8.1.1 接口列表 161
8.1.2 同步唯讀 162
8.1.3 異步讀寫 164
8.1.4 API外掛程式的生命周期 166
8.1.5 結構體成員序列化 166
8.1.6 chain外掛程式生命周期 167
8.1.7 RPC接口實現 170
8.2 http_plugin 基礎RPC 194
8.2.1 EOS外掛程式通信模式 194
8.2.2 add_api函式 196
8.2.3 add_handler函式 197
8.2.4 url_handlers集合 198
8.2.5 處理HTTP請求 198
8.2.6 生命周期 200
8.3 producer_plugin生產區塊 206
8.3.1 生命周期 207
8.3.2 同步區塊 210
8.3.3 同步事務 213
8.3.4 區塊上鏈 218
8.3.5 區塊不可逆 220
8.3.6 最後不可逆 221
8.3.7 鏈的條幅日誌 223
8.3.8 倒計時器 224
8.3.9 循環計畫出塊 226
8.3.10 校驗生產區塊 229
8.3.11 生產區塊 230
8.3.12 啟動出塊管理 231
8.4 mongo_db_plugin狀態持久化 232
8.4.1 生命周期 233
8.4.2 信號管理 236
8.4.3 佇列 237
8.4.4 擦除資料庫 238
8.4.5 初始化外掛程式 239
8.4.6 區塊消費 241
8.4.7 接收事務信號處理 243
8.4.8 套用事務信號處理 245
8.4.9 接收區塊信號處理 246
8.4.10 不可逆區塊信號處理 248
8.5 txn_test_gen_plugin測試TPS外掛程式 250
8.5.1 外掛程式的整體架構 250
8.5.2 創建測試賬戶接口 251
8.5.3 啟動測試接口 256
8.5.4 終止程式接口 261
8.5.5 TPS 261
8.6 本章小結 262

相關詞條

熱門詞條

聯絡我們