内容简介
第1章 以太坊概述
1.1 区块链起源
1.2 以太坊发展之路
1.3 以太坊核心技术
1.3.1 智能合约
1.3.2 PoS
1.4 以太坊系统架构
1.5 以太坊社区
1.6 以太坊路线图
1.7 本章小结
第2章 设计理念
2.1 密码学
2.1.1 Hash
2.1.2 椭圆曲线的加解密算法
2.1.3 签名
2.1.4 Merkle树和验证
2.1.5 MPT状态树
2.2 共识问题
2.2.1 分布式一致性问题
2.2.2 Paxos和Raft
2.2.3 拜占庭容错及PBFT
2.2.4 以太坊IBFT共识
2.2.5 PoW
2.2.6 Casper
2.2.7 以太坊性能
2.3 图灵完备
2.3.1 比特币脚本
2.3.2 以太坊虚拟机(EVM)
2.4 本章小结
第3章 技术架构
3.1 概述
3.2 Geth的架构与启动
3.2.1 Geth架构
3.2.2 Geth启动流程
3.3 web3与RPC接口
3.3.1 以太坊中的JSON-RPC
3.3.2 以太坊RPC服务
3.4 账户管理
3.4.1 keystore
3.4.2 账户后端
3.4.3 签名
3.5 节点网络管理
3.5.1 节点管理启动
3.5.2 节点发现协议启动
3.5.3 节点创建和连接
3.5.4 消息处理
3.6 交易管理
3.6.1 交易池
3.6.2 交易提交
3.6.3 交易广播
3.7 链和区块管理
3.7.1 区块的结构
3.7.2 区块数据验证
3.7.3 区块“上链”
3.8 共识管理
3.8.1 Engine
3.8.2 Worker
3.8.3 Miner
3.8.4 共识激励
3.9 数据库
3.9.1 rawdb
3.9.2 stateDB
3.10 Ethereum对外操作接口
3.11 本章小结
第4章 共识算法
4.1 PoW
4.1.1 算法概述
4.1.2 设计实现
4.1.3 优缺点分析
4.2 PoA
4.2.1 算法概述
4.2.2 设计实现
4.2.3 优缺点分析
4.3 PoS
4.3.1 算法概述
4.3.2 优缺点分析
4.4 本章小结
第5章 智能合约开发
5.1 智能合约的诞生
5.2 以太坊上的智能合约
5.2.1 以太坊智能合约概述
5.2.2 关于智能合约的理解误区
5.2.3 合约账户
5.2.4 智能合约举例
5.2.5 智能合约在以太坊上的运行流程
5.3 智能合约编程语言
5.4 智能合约应用开发
5.4.1 连接和访问以太坊
5.4.2 以太坊集成开发环境Remix
5.4.3 truffle
5.4.4 智能合约编译器solc
5.5 solidity语法详解
5.5.1 智能合约源文件
5.5.2 solidity数据类型
5.5.3 智能合约的内建全局变量和函数
5.5.4 智能合约中的单位
5.5.5 solidity表达式和控制结构
5.5.6 函数
5.5.7 常量状态变量
5.5.8 智能合约的事件
5.5.9 智能合约的继承性
5.5.10 智能合约的创建
5.5.11 智能合约的销毁
5.6 solidity编程规范
5.6.1 代码布局
5.6.2 编码约定
5.6.3 命名约定
5.7 本章小结
第6章 智能合约运行机制
6.1 调用智能合约函数
6.1.1 外部调用
6.1.2 内部调用
6.2 以太坊ABI协议
6.2.1 ABI定义
6.2.2 函数选择器
6.2.3 参数编码
6.2.4 ABI编码举例
6.3 交易的费用和计算
6.3.1 什么是Gas机制
6.3.2 为什么需要Gas机制
6.3.3 交易费用计算法方法
6.3.4 交易费用的组成
6.4 智能合约的事件
6.4.1 事件的存储和解析
6.4.2 Logs的底层接口
6.4.3 事件的查询
6.4.4 事件查询过程
6.5 库和链接原理
6.5.1 库的定义
6.5.2 库的使用
6.5.3 库的连接
6.5.4 库中的事件
6.6 智能合约元数据
6.7 智能合约安全性分析
6.7.1 智能合约中的陷阱
6.7.2 建议
6.7.3 案例分析:资金回退流程
6.8 智能合约与外界的通信
6.8.1 oracle介绍
6.8.2 oracle需要解决的问题
6.8.3 数据商店
6.9 智能合约的动态升级
6.9.1 solidity是一个受限的语言
6.9.2 动态升级的实现
6.10 智能合约的数据存储
6.10.1 存储
6.10.2 内存
6.10.3 栈
6.11 本章小结
第7章 智能合约字节码与汇编
7.1 智能合约汇编指令集
7.2 智能合约字节码解析
7.3 状态变量的存储
7.3.1 普通状态变量的存储
7.3.2 动态数据的storage存储
7.3.3 总结
7.4 solidity内嵌汇编
7.4.1 内嵌汇编指令
7.4.2 单独使用汇编指令
7.5 本章小结
第8章 开发者工具
8.1 MetaMask
8.1.1 MetaMask安装
8.1.2 MetaMask作为Web钱包
8.1.3 MetaMask作为DApp客户端
8.2 以太坊测试网络
8.2.1 Morden
8.2.2 Ropsten
8.2.3 Kovan
8.2.4 Rinkeby
8.2.5 本地以太坊私链
8.2.6 连接测试网络
8.3 Remix
8.3.1 本地安装Remix
8.3.2 在线Remix
8.4 truffle
8.4.1 安装truffle
8.4.2 构建应用项目
8.4.3 demo合约实践
8.4.4 智能合约测试和验证
8.5 myetherwallet
8.5.1 创建钱包
8.5.2 在线发送ETH和代币
8.5.3 离线发送ETH和代币
8.5.4 币间互换
8.5.5 智能合约操作
8.5.6 以太坊域名服务
8.6 Etherscan
8.6.1 以太坊浏览器
8.6.2 智能合约操作
8.6.3 以太坊统计图表
8.6.4 Etherscan API
8.7 本章小结
第9章 企业以太坊
9.1 联盟成立
9.2 技术框架
9.2.1 分层设计
9.2.2 组件模块化
9.2.3 可插拔共识
9.2.4 权限和隐私保护
9.2.5 数据安全
9.3 治理框架
9.4 本章小结
第10章 跨链
10.1 跨链技术方案
10.1.1 见证人模式
10.1.2 侧链技术
10.1.3 链中继技术
10.1.4 Hash锁定
10.2 跨链项目
10.2.1 Interledger
10.2.2 Cosmos
10.2.3 Aion链
10.3 本章小结
第11章 展望
11.1 以太坊性能提升
11.1.1 以太坊的“瓶颈”
11.1.2 分片
11.1.3 Plasma
11.2 零知识证明
11.2.1 什么是零知识证明?
11.2.2 应用场景
11.2.3 以太坊支持零知识证明
11.3 Casper
11.4 本章小结