以太坊的指南针
目录
如何学习这本书
第 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算法源代码解读
以太坊的指南针
»
第 1 章 以太坊:一台全球计算机
Edit on GitHub
第 1 章 以太坊:一台全球计算机
¶
以太坊从何而来?它的前辈是谁?诞生的过程又是怎样?下面让我们先来回顾一下。
简史
发展阶段
以太坊的特色