以太坊源码分析(1)——代码结构

一、说在最前

本系列文章【以太坊源码分析】将边学习边更新,如未特殊说明,将默认为【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

你可能感兴趣的:(以太坊)