以太坊源代码分析

准备工作

以太坊的源代码是开源的,基于Go语言的版本的源代码获取参考下面的命令。还有用c++开发的源代码,不在本文的探讨范围之内。

git clone https://github.com/ethereum/go-ethereum.git

安装详细还可以参考手把手教你从源代码开始搭建自己的以太坊公链(二)搭建第一个节点
Go语言的开发环境可以参考手把手教你从源代码开始搭建自己的以太坊公链(一)Golang在Ubuntu 和 Windows下的安装

以太坊的源代码结构

子包 主要功能
accounts 实现了一个高等级的以太坊账户管理
bmt 二进制的默克尔树的实现
build 主要是编译和构建的一些脚本和配置
cmd 命令行工具,下面又分了很多的命令行工具
cmd \abigen 将智能合约源代码转换成容易使用的,编译时类型安全的Go语言包
cmd \bootnode 启动一个仅仅实现网络发现的节点
cmd evm 以太坊虚拟机的开发工具, 用来提供一个可配置的,受隔离的代码调试环境
cmd faucet
cmd geth 以太坊命令行客户端,最重要的一个工具
cmd p2psim 提供了一个工具来模拟http的API
cmd puppeth 创建一个新的以太坊网络的向导
cmd rlpdump 提供了一个RLP数据的格式化输出
cmd swarm swarm网络的接入点
cmd util 提供了一些公共的工具
cmd wnode 这是一个简单的Whisper节点。 它可以用作独立的引导节点。此外,可以用于不同的测试和诊断目的。
common 提供了一些公共的工具类
compression Package rle implements the run-length encoding used for Ethereum data.
consensus 提供了以太坊的一些共识算法,比如ethhash, clique(proof-of-authority)
console console类
contracts 智能合约
core 以太坊的核心数据结构和算法(虚拟机,状态,区块链,布隆过滤器)
crypto 加密和hash算法,
eth 实现了以太坊的协议
ethclient 提供了以太坊的RPC客户端
ethdb eth的数据库(包括实际使用的leveldb和供测试使用的内存数据库)
ethstats 提供网络状态的报告
event 处理实时的事件
les 实现了以太坊的轻量级协议子集
light 实现为以太坊轻量级客户端提供按需检索的功能
log 提供对人机都友好的日志信息
metrics 提供磁盘计数器
miner 提供以太坊的区块创建和挖矿
mobile 移动端使用的一些warpper
node 以太坊的多种类型的节点
p2p 以太坊p2p网络协议
rlp 以太坊序列化处理
rpc 远程方法调用
swarm swarm网络处理
tests 测试
trie 以太坊重要的数据结构 Merkle Patricia Tries(MPT,也称为Merkle Patricia树)的实现
whisper 提供了whisper节点的协议。

详细分析

请参见go-ethereum源码解析

你可能感兴趣的:(以太坊,区块链)