内容简介
第1章 由浅入深理解区块链
1.1 区块链简介
1.2 区块链1.0——比特币,一种点对点的现金支付系统
1.2.1 比特币的产生
1.2.2 深入分析比特币的工作机制
1.2.3 结合《比特币白皮书》理解比特币
1.2.4 比特币的回顾与剖析
1.2.5 比特币的不足
1.3 区块链2.0——以太坊
1.3.1 以太坊的产生
1.3.2 深入理解以太坊
1.4 区块链3.0——DApp
1.5 基于以太坊的智能合约入门
1.5.1 智能合约的结构
1.5.2 EOS上的智能合约及其与以太坊的对比
第2章 智能合约开发实战
2.1 以太坊网络
2.2 私有链的搭建
2.2.1 geth简介
2.2.2 geth的安装与配置
2.2.3 geth的操作及相关说明
2.2.4 以太坊中的账户与密钥
2.2.5 查看以太坊网络的状态
2.3 Mist和Ethereum Wallet的安装、配置与操作
2.3.1 下载与安装
2.3.2 通过Ethereum Wallet连接本地私有库
2.3.3 用Mist实现多重签名
2.4 以太坊智能合约开发实战
2.4.1 开发环境
2.4.2 编写第一个智能合约
2.5 ERC-20 Token合约
2.5.1 Token合约概述
2.5.2 ERC-20 Token合约详解
2.5.3 对ERC-20 Token合约的进一步说明
2.6 本章小结
第3章 智能合约语法实战
3.1 造就骨架——建立合约框架
3.2 初添血肉——添加状态变量
3.2.1 数据类型简介
3.2.2 添加uint类型的变量
3.2.3 添加结构体
3.2.4 添加数组
3.3 再添经脉——添加函数
3.3.1 添加一个简单的函数
3.3.2 添加一个复杂的函数
3.3.3 特别的函数——回退函数
3.4 与外界交互——添加事件
3.5 大脑的沟通——多用户拓展
3.5.1 神经的连接——映射和地址
3.5.2 神经的传输——msg.sender
3.5.3 神经兴奋的判别——require()方法
3.5.4 生命的传承——Inheritance
3.5.5 血液里的本能——“猎食”和“繁殖”
3.5.6 DNA的融合
3.5.7 各司其职的隐私——关于函数可见性的更多内容
3.5.8 同化作用——合约交互
3.5.9 同化作用的结果——获得奖励
3.6 高级Solidity理论
3.6.1 外部依赖关系
3.6.2 权限的产生——Ownable Contracts
3.6.3 权限的确认——函数修饰符onlyOwner
3.6.4 运转的动力——gas
3.7 Truffle的介绍与安装
3.8 创建、部署、使用Token合约
3.8.1 Truffle的box和OpenZeppelin
3.8.2 安装tutorialtoken box和OpenZeppelin
3.8.3 创建TutorialToken合约
3.8.4 合约的编译与部署
3.8.5 合约操作与实践
3.9 创建、部署、使用ICO合约
3.9.1 ICO简介
3.9.2 创建ICO合约
3.9.3 ICO合约的编译与部署
3.9.4 ICO合约的操作实践
3.10 本章小结
第4章 智能合约常见漏洞
4.1 智能合约审计指南
4.1.1 智能合约审计概述
4.1.2 智能合约审计报告的结构
4.2 整型溢出漏洞
4.2.1 漏洞概述
4.2.2 代码片段
4.2.3 漏洞分析与调试
4.2.4 相关案例
4.2.5 规避整型溢出的神器——SafeMath库
4.3 重入漏洞
4.3.1 漏洞概述
4.3.2 代码片段
4.3.3 漏洞分析、调试与防范
4.3.4 相关案例
4.4 访问控制缺陷
4.4.1 漏洞概述
4.4.2 代码片段
4.4.3 漏洞分析、调试与防范
4.4.4 相关案例
4.5 特权功能暴露
4.5.1 漏洞概述
4.5.2 代码片段
4.5.3 漏洞分析、调试与防范
4.5.4 相关案例
4.6 跨合约调用漏洞
4.6.1 漏洞概述
4.6.2 代码片段
4.6.3 漏洞分析、调试与防范
4.6.4 相关案例
4.7 拒绝服务漏洞
4.7.1 漏洞概述
4.7.2 代码片段
4.7.3 漏洞分析、调试与防范
4.7.4 相关案例
4.8 矿工特权隐患
4.8.1 漏洞概述
4.8.2 代码片段
4.8.3 漏洞分析与防范
4.8.4 相关案例
4.9 短地址攻击
4.9.1 漏洞概述
4.9.2 代码片段
4.9.3 漏洞分析、调试与防范
4.10 tx.origin漏洞
4.10.1 漏洞概述
4.10.2 代码片段
4.10.3 漏洞分析、调试与防范
4.11 本章小结
第5章 智能合约蜜罐
5.1 智能合约蜜罐概述
5.2 WhaleGiveaway1
5.2.1 蜜罐分析
5.2.2 代码复现
5.3 Gift_ 1_ ETH
5.3.1 蜜罐分析
5.3.2 代码复现
5.4 MultiplicatorX3
5.4.1 蜜罐分析
5.4.2 代码复现
5.5 TestBank
5.5.1 蜜罐分析
5.5.2 代码复现
5.6 CryptoRoulette
5.6.1 蜜罐分析
5.6.2 代码复现
5.7 OpenAddressLottery
5.7.1 蜜罐分析
5.7.2 代码复现
5.8 KingOfTheHill
5.8.1 蜜罐分析
5.8.2 代码复现
5.9 RACEFORETH
5.10 For Test
5.10.1 蜜罐分析
5.10.2 代码复现
5.11 DividendDistributor
5.11.1 蜜罐分析
5.11.2 代码复现
5.12 与智能合约蜜罐相关的安全建议
5.13 本章小结
第6章 常见智能合约分析与审计工具
6.1 智能合约分析工具——Solgraph
6.1.1 Solgraph简介
6.1.2 Solgraph的安装与使用
6.2 智能合约审计工具——mythril
6.2.1 mythril的安装
6.2.2 mythril的使用与功能说明
6.3 智能合约审计平台——SECURIFY
6.3.1 SECURIFY概述
6.3.2 SECURIFY系统探究
6.3.3 SECURIFY的使用
第7章 智能合约审计实战
7.1 智能合约审计清单
7.2 博彩游戏合约审计
7.2.1 合约代码与合约功能浏览
7.2.2 审计报告
7.3 CryptoKitties合约审计
7.4 本章小结
第8章 智能合约字节码解构
8.1 打开引擎盖——智能合约下的字节码
8.2 解构第一步——creation
8.3 解构第二步——runtime
8.3.1 函数选择器
8.3.2 函数包装器
8.3.3 函数主体
8.3.4 元数据散列
8.4 本章小结
参考文献