go ethereum 源码目录介绍

Posted by 姚飞亮 on 2020-07-15

go ethereum 源码目录介绍

go-ethereum项目的组织结构基本上是按照功能模块划分的目录,下面简单介绍一下各个目录的结构,每个目录在GO语言里面又被成为一个Package

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
accounts    实现了一个高等级的以太坊账户管理
build 主要是编译和构建的一些脚本和配置
cmd 命令行工具,又分了很多的命令行工具,下面一个一个介绍
/abidump 解析给定的ABI数据并尝试从fourbyte数据库解释它。
/abigen 源代码生成器,用于将以太坊合同定义转换为易于使用、编译时类型的safe-Go包
/bootnode 启动一个仅仅实现网络发现的节点
/checkpoint-admin 检查点管理是一个用于更新检查点oracle状态的工具。它提供了一系列功能,包括部署检查点oracle契约、签署新的检查点以及更新检查点oracle契约中的检查点。
/clef cryp可以用来签署交易和数据,并意味着(n最终)取代Geth的账户管理。这使得dapp不依赖Geth的账户管理。当DApp想要对数据(或事务)进行签名时,它可以将内容发送给Clef,后者将为用户提供上下文并请求对内容进行签名的权限。如果用户批准了签名请求,Clef将把签名发送回DApp。
/devp2p 开发测试p2p工具
/ethkey 是一个用于处理以太坊密钥文件的简单命令行工具。
/evm 以太坊虚拟机的开发工具, 用来提供一个可配置的,受隔离的代码调试环境
/faucet 水龙头
/geth 以太坊命令行客户端,最重要的一个工具
/p2psim 提供了一个工具来模拟http的API
/puppeth 创建一个新的以太坊网络的向导
/rlpdump 提供了一个RLP数据的格式化输出
/util 提供了一些公共的工具
/wnode 这是一个简单的Whisper节点。它可以用作独立的引导节点。此外,可以用于不同的测试和诊断目的。
common 提供了一些公共的工具类
consensus 提供了以太坊的一些共识算法,比如ethhash, clique(proof-of-authority)
console console类
contracts 合同
core 以太坊的核心数据结构和算法(虚拟机,状态,区块链,布隆过滤器)
crypto 加密和hash算法,
eth 实现了以太坊的协议
ethclient 提供了以太坊的RPC客户端
ethdb eth的数据库(包括实际使用的leveldb和供测试使用的内存数据库)
ethstats 提供网络状态的报告
event 处理实时的事件
graphql 是一种针对 Graph(图状数据)进行查询特别有优势的 Query Language(查询语言)
internal 内部的
les 实现了以太坊的轻量级协议子集
light 实现为以太坊轻量级客户端提供按需检索的功能
log 提供对人机都友好的日志信息
metrics 提供磁盘计数器
miner 提供以太坊的区块创建和挖矿
mobile 移动端使用的一些warpper
node 以太坊的多种类型的节点
p2p 以太坊p2p网络协议
params 参数
rlp 以太坊序列化处理
rpc 远程方法调用
swarm swarm网络处理
tests 测试
trie 以太坊重要的数据结构Package trie implements Merkle Patricia Tries.
whisper 提供了whisper节点的协议。


Ω