以太坊源码分析
目录
感谢尹成老师的劳动成果,博客地址
- 以太坊源码分析(1): go-ethereum的设计思路及模块组织形式
- 以太坊源码分析(2): go ethereum 目录大概介绍
- 以太坊源码分析(3): 以太坊交易手续费明细
- 以太坊源码分析(4): accounts包简介
- 以太坊源码分析(5): accounts代码分析
- 以太坊源码分析(6): accounts账户管理分析
- 以太坊源码分析(7): Ethereum 资源分享
- 以太坊源码分析(8): 区块分析
- 以太坊源码分析(9): cmd包分析 & CMD实际操作分析
- 以太坊源码分析(10): CMD深入分析
以太坊的架构
以太坊的架构设计可以简单的分为三个层次,协议层、接口层和应用层。
协议层
而协议层又可以分为网络层和存储层。从技术角度看,协议层主要包括P2P网络通信,分布式算法,加密签名和数据存储技术。数据存储底层,比特币和以太坊都选用了Google开源的LevelDB数据库。
接口层
接口层与协议层完全分离,除了交易时与协议层进行交互,保证开发各种基于区块链的应用层业务不受约束,包括分布式存储业务,机器学习,物联网等。
应用层
应用层主要是从区块链自身的特性出发,在不引用第三方机构的前提下,提供去中心化,不可篡改,安全可靠的场景应用。主要包括金融服务,征信和权属管理,资源共享,投资管理以及物联网和供应链等。
go-ethereum源码的目录结构
|---accounts 以太坊账户管理
|---bmt 二进制Merkle-Patricia Trie的实现
|---build 主要是编译和构建的一些脚本和配置
|---cmd 命令行工具
| |---abigen 合约接口生成工具
| |---bootnode 实现网络发现的节点
| |---evm 以太坊虚拟机
| |---faucet
| |---geth 以太坊命令行客户端
| |---p2psim 提供了一个工具来模拟http的API
| |---puppeth 创建一个新的以太坊网络的向导
| |---rlpdump 提供RLP数据的格式化输出
| |---swarm swarm网络的接入点
| |---util 公共的组件
| |---wnode 这是一个简单的Whisper节点。 它可以用作独立的引导节点。此外,可以用于不同的测试和诊断目的。
|---common 提供了一些公共的工具类
|---consensus 以太坊的共识算法,包括ethhash, clique
|---core 以太坊的核心数据结构和算法(虚拟机,状态,区块链,布隆过滤器)
|---crypto 加密,数字签名和hash算法
|---eth 实现了以太坊的协议
|---ethclient 以太坊的RPC客户端
|---ethdb eth的数据库,主要是LevelDB及相应接口
|---event 实时事件处理
|---light 实现为以太坊轻量级客户端提供按需检索的功能
|---metrics 提供磁盘计数器
|---miner 以太坊的挖矿和共识算法
|---mobile 移动端使用的一些warpper
|---node 以太坊的多种类型的节点
|---p2p 以太坊p2p网络协议
|---rlp 以太坊序列化和反序列化处理
|---rpc 远程方法调用
|---swarm swarm网络处理|---trie 以太坊重要的数据结构MPT的实现
|---whisper whisper节点的协议