书籍详情

EOS实战与源码分析

EOS实战与源码分析

作者:刘文彬

出版社:电子工业出版社

出版时间:2019-06-01

ISBN:9787121369285

定价:¥69.00

购买这本书可以去
内容简介
  在区块链世界,区块链1.0时代是比特币,区块链2.0时代是以太坊,区块链3.0时代是EOS。EOS如同一个完整的操作系统,用户或者机构可基于它构建各种应用程序。本书共有8章,可分为使用手册与源码分析两部分。使用手册部分主要介绍如何快速启动单节点EOS链、终端交互命令cleos的使用,并模拟公链的配置与启动。源码分析部分主要介绍源代码调试、EOS数据持久化机制、系统智能合约架构以及插件系统。无论是正在使用EOS的软件工程师、测试工程师、运维工程师、架构师,还是热衷新技术的产品经理、管理人员,本书都具备很强的辅导和参考价值。
作者简介
  刘文彬,北京航空航天大学软件工程硕士,IT互联网行业从业8年,现任某互联网公司架构师。 区块链技术博客博主EOSIO开源项目贡献者之一IEEE区块链北京专家组成员IEEE P2418.1区块链标准工作组专家委员在以太坊、EOS、比特币Omni协议、Oracle等方向有深入研究,擅长区块链产品设计、架构以及自动化运维等。目前专注于区块链领域的技术探索,致力于发展下一代DApp。
目录

第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

猜您喜欢

读书导航