一、说在最前
本系列文章【以太坊源码分析】将边学习边更新,如未特殊说明,将默认为【go-ethereum-1.8.0】。
本系列文章的目的为深入学习以太坊,文章中会加入博主对区块链的理解,任何组织或个人不得在不经作者同意的情况下,用于商业用途。如经发现,本博主将保留法律追究的权利。除此之外,欢迎转载,多多分享。
最后,本系列文章是学习类和分享类文章,如有错误欢迎指正。
二、首先从目录结构入手
.
├── accounts 账户相关
├── bmt 二进制Merkle-Patricia Trie的实现
├── build 构建脚本等
├── cmd 命令行工具入口
├── common 提供了一些公共的工具类
├── compression 压缩
├── consensus 以太坊的共识算法,包括ethhash, clique
├── console JavaScript解释的运行时控制台环境
├── containers 包括docker等容器用于开发
├── contracts 内置合约,用户测试
├── core 核心模块,包括交易,区块,虚拟机等
├── crypto 加密,数字签名和hash算法
├── dashboard 仪表板
├── eth 以太坊协议
├── ethclient 以太坊rpc客户端实现
├── ethdb 数据库,主要是LevelDB
├── ethstats 以太坊网络状态相关
├── event 事件的实现
├── internal 内部一些东西(暂时了解的只有一些api,如 PrivateAccountAPI)
├── les 轻量级Ethereum子协议
├── light 轻量级客户端
├── log 日志实现
├── metrics 度量器
├── miner 区块打包、挖矿实现
├── mobile 手机客户端
├── node 节点实现
├── p2p p2p协议
├── params
├── rlp rlp 编码
├── rpc rpc 实现
├── swarm swarm网络处理
├── tests
├── trie MPT的实现
├── vendor
└── whisper whisper节点的协议
二、以太坊代码关联
以太坊源码中,除 build
cmd
miner
模块之外,其他代码都是一些实现类的小模块,最后在 core
模块下组装出核心功能,并在 cmd
中构建出一些命令行工具对外提供访问入口。
其中,以太坊的几个核心功能模块包括:
eth
协议miner
挖矿consensus
共识ethclient
客户端rpc实现ethdb
数据库
后面将围绕这几个模块进入代码学习阶段。
三、打个广告
这段时间实在是太忙了,本系列文章之后还是会陆陆续续更新,保质不保量,希望更多同学了解区块链,喜欢区块链。
作者本人是 C++ 出身,有喜欢 C++ 的可进QQ群一起吹牛逼:【C/C++ 研究院】 428553786