本系列笔记以 ethereum/go-ethereum at v1.8.17 为基线,记录 Ethereum Golang 客户端即 Geth 代码分析过程中的学习记录。本文记录过程中使用 Typora — a markdown editor, markdown reader. 作为 markdown 编辑器,如果你的编辑器不支持 Latex 格式的 mathmatic 公式,那么在阅读此文的时候会发现有一些格式不正常,推荐使用 Typora.io;另外所有的流程图均使用 OmniGraffle - diagramming and graphic design for Mac, iPhone, and iPad - The Omni Group 绘制。另外,其中一些图片使用了网上的资源,均标注了来源,如有遗漏请说明,笔记内容为个人学习 Geth 源码且参考网上已有内容而生成(均已标注来源,如有遗漏,请提示)。
本系列笔记分为以下几个系列:
- 从交易的角度等待 Ethereum 的功能和特性
- EVM 和合约浅知
- Ethereum 内部数据结构合集
- RLP 和 MPT 结构在 Ethereum 中的应用
- Ethereum 钱包知识以及内置 keystore 钱包实现
- BlockChian 区块同步事宜
- Ethereum 账户同步事宜
- Ethereum 网络中的矿工与区块打包事宜
- 什么是区块链共识
- Ethereum 中的 RPC 及实现
- [Ethereum 中的 P2P 协议] WIP
- [Ethereum Geth 主进程的启动过程分析] WIP
- P2P Kademlia 协议分析
- [Ethereum 通用矿池架构] WIP
- Ethereum 区块同步 Fast Sync 分析
- [Ethereum 中其它小细节] WIP
- 「Tx」 代表名词的交易,常用的场景是一笔 Tx;「交易」代表动词的交易,常用的场景是执行交易;
- 「转账」特指 Ether 转账,不包括合约创建和调用;
- 「Transaction」Yellowpaper 中明显定义:A transaction is a single cryptographically-signed instruction constructed by an actor externally to the scope of Ethereum. Etherueum 中的交易指是一个由外部单一数字签名生成的指令,由于合约账号没有私钥,故无法生成数字签名,因此合约账号所发起的交易不是 Tx,只能算是 message call, 本文中也称为 internal call。