2025-10: 距离以太坊 1.0 主网上线已经过去了 10 年。本书所列的内容也垂垂老矣。自以太坊 2.0 Beacon 上线以来,PoS的以太坊发生了很多变化,本书内容为 1.0 时代而设,故不再增改。
- 直接查阅:DOCS 文件夹。
- 编译本书:SRC 文件夹。
这是给 程序员 读的入门书,更是一本面向 从未接触过以太坊人群 的书。
以太坊是什么?怎么了解相关知识?
这本书涵盖了你想要了解的以太坊的基本知识。
前半本文艺,后半本实践,附录深刻。
内容包括钱包、交易、数据结构。也包括了Solidity语法、虚拟机原理和实战合约编写。
市面上目前的大部分公链/联盟链都借鉴了以太坊的虚拟机。读完本书,你再去看其他项目,会感到成竹在胸。
书中的知识点都是作者在区块链工作中实践总结的。希望对你们有帮助。
- 如何学习这本书
- 第 1 章 以太坊:一台全球计算机
- 简史
- 发展阶段
- 以太坊的特色
- 第 2 章 账户是什么
- 小白基础知识问答
- 我的以太币记录在哪里?
- 我的以太币余额如何变化?
- 什么是区块?
- 区块和状态的关系
- “巨大的账本”
- 我如何参与以太坊?
- 我如何与其他人同步账本?
- 账户探秘
- 账户与账户状态
- 账户状态的内涵
- 已执行交易总数
- 持币数量
- 存储区的哈希值
- 代码区的哈希值
- 没有钱包App, 如何生成账户?
- 智能合约地址的生成
- 扩展阅读
- 资料篇:Keystore 与私钥保存
- 资料篇:常用钱包 App
- 资料篇:EIP-55 格式的账户地址
- 小白基础知识问答
- 第 3 章 交易是驱动力
- 交易的发送
- 交易与消息的区别
- 交易的特性是什么?
- 交易的样子
- 交易的生命周期
- 扩展阅读
- 资料篇:共识与工作量证明
- 比特币的PoW机制(简单版)
- 比特币算力的中心化问题
- 以太坊的Pow/Pos机制
- 资料篇:矿工与挖矿奖励
- 交易的发送
- 第 4 章 数据结构
- Radix树
- Merkle树和 Merkle证明
- Merkle Patricia树
- RLP编码
- RLP字符/字符串编码
- RLP字符/字符串解码
- RLP数组编码
- RLP数组解码
- 扩展阅读
- 资料篇:状态树 (以及存储树)
- 资料篇:交易树
- 资料篇:收据树
- 资料篇:区块
- 第 5 章 构建一条以太坊私链
- 安装
- Geth客户端的结构
- 启动一条以太坊私链
- 接收挖矿奖励
- 转账与收款
- 第 6 章 手把手教你部署智能合约
- 什么是智能合约?
- 安装编译器
- Solc编译智能合约
- 智能合约发布准备
- 部署智能合约
- 调用智能合约
- 第 7 章 以太坊虚拟机探秘
- 虚拟机的执行结果
- 虚拟机的执行资源
- 合约调用合约?
- 虚拟机的输入输出
- Gas 花费与退回
- 虚拟机指令集
- 第 8 章 Solidity语法练习
- 基础概念
- 没有浮点数运算
- 合约基础
- 变量类型
- 运算符号
- 结构体 Struct
- 数组array
- 函数申明
- 类型转换与内置函数
- 合约与事件
- 语法进阶
- 数据结构:map
- 环境变量:msg.sender
- require还是assert?
- 继承和引入
- 省钱妙招:内存变量
- 接口与合约调用
- 多返回值
- 高级语法和概念
- Contract 构造函数
- Ownable控制
- Pausable控制
- 省钱妙招:struct 结构体
- 时间单位表达
- 带参数的函数修饰符
- for 循环
- 合约收款:payable修饰符
- 支付费用:transfer方法
- 小结
- 基础概念
- 第 9 章 Truffle合约开发实战
- 编译、测试工具安装
- Truffle的安装
- Ganache的安装
- Truffle启动样例项目
- 下载样例
- 编译项目
- 部署项目到 Ganache
- 测试项目
- 上手实践:ERC20合约
- 新建项目目录
- ERC20 Basic合约接口
- ERC20 合约接口
- SafeMath基础数学库
- 猫币:CAT数字资产合约
- 上手实践:ERC20合约测试
- 准备工作
- 测试辅助函数与库
- 测试代码分析
- 测试运行与结果
- 编译、测试工具安装
- 附录 有意思的冷知识
- 短地址攻击
- 比特币的区块
- 以太坊与比特币账户的区别
- 隐私与安全性的比较
- 数据体积与并发能力
- 发送交易时对双花的处理
- “不可能的三角”问题
- ETHASH 挖矿算法
- ETHASH和比特币PoW的异同
- ETHASH的设计目标
- ETHASH的挖矿运行总流程
- ETHASH算法源代码解读