描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121369285
《EOS实战与源码分析》不仅讲解了EOS的基础知识,如加密算法,环境搭建等,还讲解了如何构建公链网络,包括脚本构建和脚本原理分析,并分析了EOS区块链的功能加强机制,即5个有代表性的插件系统。通过源码分析,读者可以更加深入地理解EOS的核心设计与实现,以便在实际使用中能够快速解决线上问题,并对性能进行调优。
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
2017年,区块链、加密货币、ICO(公募)的声音吵闹了整个夏天,截至9月,声音才渐渐消失。许多技术人员借此了解了区块链技术,并且被区块链的技术蓝图所震撼,激发了强大的兴趣,为自己能够置身于一个技术蓬勃发展的时代而感到荣幸。
笔者正是其中之一。在同样的时间,一头扎进区块链的世界,从区块链1.0时代的比特币到2.0时代的以太坊,再到3.0时代的EOS。呈现在眼前的区块链世界就像一个技术万花筒,深深地吸引笔者不断向前探索。
目前,EOS是区块链炙手可热的技术之一。它如同一个完整的操作系统,用户或者机构可基于它构建各种应用程序。下一代区块链不是ICO,而是大规模的各行各业的DApp的兴起,所以能够做好大型商业应用基建工作的公链将成为未来区块链的宠儿。目前,呼喊着百万级TPS、手续费为0、快速部署DApp的EOS无疑切中了所有的要点。
笔者作为EOS开源项目的贡献者,在超级节点的运维工作过程中,系统地研究了区块链的底层技术。后来笔者深入区块链的应用领域,总结了很多心得体会。本书共有8章,可分为使用手册与源码分析两部分。使用手册部分主要介绍如何快速启动单节点EOS链、终端交互命令cleos的使用,并模拟公链的配置与启动。源码分析部分主要介绍源代码调试、EOS数据持久化机制、系统智能合约架构以及插件系统。
无论是正在使用EOS的软件工程师、测试工程师、运维工程师、架构师,还是热衷新技术的产品经理、管理人员,本书都具备很强的辅导和参考价值。
EOSIO是构建EOS的开源项目,是一个由block.one公司开发的、基于区块链结构设计的、能够支持水平和垂直扩展的、去中心化的应用平台,提供了账户、认证、数据库、异步通信和跨平台、跨集群的定时应用。同时,有望支持每秒百万级事务,完全零费率,并可以快速且容易地部署去中心化应用。
希望能与热爱区块链技术的朋友共同研究EOS技术,笔者的博客地址是http://www.
cnblogs. com/Evsward,欢迎各位朋友前来留言讨论。
EOS中的易混淆名词
? EOS,目前指的是基于ERC20在以太坊上发行的代币体系,用于block.one公司开发软件与社区运营。
? EOSIO,由block.one开发的可构建公链的软件源代码。
? EOS platform,采用EOSIO软件构建的公链平台。
? DApp,此处指的是未来在EOS公链平台上基于EOSIO软件开发部署的去中心化应用,通常是由智能合约实现的,但在EOS中也可以通过插件的方式实现。
名词解释
EOS中有很多专用名词,下面通过表格列举展示。
EOS专用名词解释
序号 名词 解释
1 Account 账户,由用户自定义创建,可包含语义的账户名字。这比区块链只有一个加密长串地址作为账户要方便很多
2 Authority 权力,要与Permission做好区分。Permission是权限的意思,相比权力更加具体,而Authority通常用于校验某账户是否有做某件事的权力
3 Block 缩写为Blk,每个区块可包含0个或者多个事务
4 DAC 分权自治集体或者分权自治公司
5 DAO 分权自治组织
6 Deferred Transaction 缩写为defTx,延期事务。该事务是由智能合约创建的,会在未来的某个时间被执行。这个事务也能够创建另一个在其之后的事务。因此,延期事务可以创建无限循环的顺序事务。用户授权一个延期事务必须指定到执行的时刻应拥有足够的带宽,存储执行预期事务
7 DLT 分布式账本技术。分布式账本也被称作共享式账本,是一个基于复制、共享及同步数字化资产的跨站点、跨国家、跨机构的数据库
8 DPoS 授权权益证明。此外,也可以代表民主即权益证明。DPoS是共识算法的一种,即区块生产者能够针对事务或者区块的真实性、可验证性、不可逆性等特性达成共识的一种方法
9 Key pair 缩写为keys,一个密钥对,包括公钥和其对应的私钥
10 Larimer 一种EOS的计量单位,等于0.000 1 EOS,如同以太坊中的Wei
11 Master Password 用于解锁或者解密一个钱包文件的密码
12 Action 一个对区块链的改变动作。一个或者多个动作可组成一个事务
13 Non-Producing Node 非生产节点,也可以理解为普通节点。这是一个完整的区块链节点,能够智能观察和验证区块,只能维护本地区块链的拷贝。一个普通节点可以在一个“备用池”中,通过投票流程成为生产节点,即具备出块权的超级节点;也会被投票出局,成为一个普通节点进入“备用池”。但值得注意的是,大多数普通节点并不在“备用池”中
14 Oracle 在区块链和智能合约的上下文中是一个代理,被智能合约用于找到和验证外部世界中实际发生的真实数据并提交到区块链上
15 Peer-to-Peer 简称P2P,即对等计算机网络,是一种在对等者之间分配任务和工作负载的分布式应用构架
16 Permission 加权安全机制,通过评估其签名确定一个信息是否被正确授权
17 Private key 用于签名事务的私钥
18 Public key 缩写为pub key,公钥,在事务间传输
19 Scope 作用域,智能合约的作用域,账号可写入同一个作用域的(自己的)合约,但对于其他作用域的合约,该账号不能写入数据,只能读取
20 Smart Contract 缩写为SC,智能合约,一个计算机协议,旨在促进、验证或者执行谈判
21 Standby Pool 100个全节点的集合,渴望被选中为21个超级节点之一。实际上已经拥有超级节点的能力。当区块链需要替换一个超级节点时,就会从备用池中选择它
22 Transaction 缩写为Tx,一般称作事务,是一个完整的原子的区块链的变化,一个或者多个消息的组合。在EOS中通常是由一个智能合约执行的续表
23 Wallet 钱包,会生成一个加密钱包文件或者是通过客户端进行管理,如cleos管理私钥以及用一个安全的方式促进事务的签名。钱包可以被锁定或者解锁
24 Block Producer 缩写为bp,21个超级节点之一,正在出块轮次的超级节点
评论
还没有评论。