第1章智能合约原理
1.1智能合约的定义
1.2为什么需要智能合约
1.3智能合约的技术实现
1.4智能合约的模型
1.5智能合约的运行机制
第2章智能合约平台
2.1以太坊概述
2.2以太坊架构
2.3智能合约
2.4账户
2.5账户状态
2.6以太坊虚拟机
2.7gas
2.8以太坊交易
2.8.1价值传递
2.8.2创建智能合约
2.8.3调用合约方法
2.9区块
2.10以太坊客户端
2.10.1geth安装
2.10.2geth使用
2.11以太坊钱包
2.12以太坊网络
2.12.1主网网络
2.12.2测试网络
2.12.3私有网络、开发者模式
2.12.4模拟区块链网络
2.12.5以太坊货币单位
2.13以太坊历史回顾
2.13.1奥林匹克
2.13.2边疆
2.13.3家园
2.13.4DAO分叉
2.13.5拜占庭
2.13.6君士坦丁堡
2.13.7伊斯坦布尔
2.13.8以太坊2.0
第3章智能合约的开发、测试与部署
3.1什么是智能合约
3.2Remix
3.2.1基础模块
3.2.2典型模块
3.2.3单元测试
第4章Solidity编程基础
4.1Solidity中的变量
4.1.1状态变量
4.1.2局部变量
4.1.3全局变量
4.1.4Solidity变量名
4.2Solidity数据类型
4.2.1值类型
4.2.2引用类型
4.2.3类型转换
4.3函数调用
4.3.1参数
4.3.2返回值
4.3.3函数可见性
4.3.4状态可变性(mutability)
4.4变量的作用域
4.5控制结构
4.6合约
4.6.1可见性
4.6.2构造函数
4.6.3使用new创建合约
4.6.4constant状态常量
4.6.5immutable不可变量
4.6.6view()函数
4.6.7pure()函数
4.6.8getter()函数
4.6.9receive()函数
4.6.10fallback()函数
4.6.11函数修改器
4.6.12函数重载
4.6.13事件
4.7错误处理及异常
4.7.1错误处理函数
4.7.2require()还是assert()
4.7.3try/catch
4.8Solidity全局变量及API
4.8.1区块和交易属性API
4.8.2ABI编码及解码函数API
4.8.3数学和密码学函数API
第5章Solidity高级编程
5.1合约继承
5.1.1多重继承
5.1.2父合约构造函数
5.1.3抽象合约
5.1.4函数重写
5.2接口
5.3库
5.3.1内嵌库
5.3.2链接库
5.3.3using for
5.4应用程序二进制接口
5.4.1ABI编码
5.4.2函数选择器
5.4.3参数编码
5.4.4通过ABI编码调用函数
5.4.5ABI接口描述
5.5gas优化
5.5.1变量打包
5.5.2选择适合的数据类型
5.5.3内存和存储
5.5.4减少存储
5.5.5其他建议
5.6使用内联汇编
5.6.1汇编基础概念
5.6.2Solidity中引入汇编
5.6.3汇编变量定义与赋值
5.6.4汇编中的块和作用域
5.6.5汇编中访问变量
5.6.6for循环
5.6.7if判断语句
5.6.8汇编switch语句
5.6.9汇编函数
5.6.10元组
5.6.11汇编缺点
第6章Solidity合约
6.1OpenZeppelin
6.2SafeMath安全算数运算
6.3地址工具
6.4ERC165接口实现
6.5ERC20代币
6.5.1标准ERC20实现
6.5.2WETH实现
6.6ERC777功能型代币
6.6.1ERC1820接口注册表
6.6.2ERC777标准
6.6.3ERC777实现
6.6.4实现Hook函数
6.7ERC721
6.7.1ERC721代币规范
6.7.2ERC721实现
第7章智能合约的安全性
7.1安全事件
7.2安全原则
7.3已知的经典漏洞攻击方法
7.3.1重入攻击
7.3.2算术溢出
7.3.3delegatecall导致意外代码的执行
7.3.4未检查返回值
7.3.5拒绝服务
7.3.6错误命名构造函数
7.4总结
第8章以太坊虚拟机
8.1什么是以太坊虚拟机
8.1.1概述
8.1.2账号
8.1.3交易
8.1.4gas
8.1.5存储、主存和栈
8.1.6指令集
8.1.7消息调用
8.1.8代理调用/代码调用和库
8.1.9日志
8.1.10创建合约
8.1.11移除合约
8.2EVM工作原理
8.2.1EVM解释执行流程
8.2.2创建合约流程
8.2.3调用合约流程
8.2.4Solidity编译为EVM字节码
8.3EVM指令集
8.3.1算术运算指令
8.3.2位移运算指令
8.3.3比较操作指令
8.4gas
8.4.1执行阶段的gas计量
8.4.2gas计量原则
8.4.3gas消耗和gas价格
8.4.4区块的gas限制
8.5WASM拓展
8.5.1什么是WASM
8.5.2WASM的特点
8.5.3WASM的优势
8.5.4WASM有哪些对开发者友好的特点
8.5.5WASM在大型项目中的应用
参考文献