本新手想从头学下以太坊源码,但是中文版的go-ethereum目录结构版本都稍旧,就翻译了英文版本的,应该有不少错误,欢迎大家指正。
原目录网址ethereum · pkg.go.dev
目录 | 结构 |
---|---|
accounts | 实现了高级以太坊账户管理 |
accounts/abi | 实现了以太坊abi(应用程序二进制接口) |
accounts/abi/bind | 生成以太坊合约Go语言绑定 |
accounts/external | |
accounts/keystore | 实现了secp256k1私钥的加密存储 |
accounts/scwallet | |
accounts/usbwallet | 实现支持USB硬件钱包 |
accounts/usbwallet/trezor | 包含连接协议 |
build | 编译和构建的脚本与配置 |
cmd | 命令行工具 |
cmd/abidump | |
cmd/abigen | 将以太坊智能合约定义转换为类型安全的Go或Java包的源代码转换器 |
cmd/bootnode | 启动一个用于网络发现的节点 |
cmd/checkpoint-admin | 一个实用程序,可用于查询检查点信息并注册稳定检查点到oracle合约。 |
cmd/clef | |
cmd/devp2p | |
cmd/ethkey | |
cmd/evm | 执行EVM代码片段 |
cmd/faucet | 一个依赖轻客户端的以太水龙头 |
cmd/geth | 以太坊官方命令行客户端 |
cmd/p2psim | 提供了一个命令行客户端来模拟HTTP API |
cmd/puppeth | 组装和维护私有网络的命令 |
cmd/rlpdump | 提供了一个RLP数据的格式化输出 |
cmd/utils | 提供了go-ethereum命令的辅助函数 |
common | 包含各种辅助函数 |
common/bitutil | 实现快速位操作 |
common/compiler | 封装Solidity和Vyper编译器可执行文件(solc;vyper) |
common/fdlimit | |
common/hexutil | 使用0x前缀实现十六进制编码。 |
common/math | 提供整数数学实用程序 |
common/mclock | 单调时钟源的封装器 |
common/prque | 实现一个支持任意值类型和int64优先级的优先级队列数据结构 |
consensus | 实现不同的以太坊共识引擎 |
consensus/clique | 实现POA共识引擎 |
consensus/ethash | 实现ethash POW共识引擎 |
consensus/misc | |
console | |
console/prompt | |
contracts/checkpointoracle | 一个链上轻型客户端检查点oracle |
core | 实现以太坊共识协议 |
core/asm | 为处理EVM组装指令提供支持(例如,拆卸它们) |
core/bloombits | 对数据批实现bloom过滤 |
core/forkid | 实现EIP-2124 |
core/rawdb | 包含低级数据库访问器的集合 |
core/state | 提供在以太坊状态树上的缓存层 |
core/state/snapshot | 实现日志记录的动态转储 |
core/types | 包含与以太坊共识相关的数据类型 |
core/vm | 实现以太坊虚拟机 |
core/vm/runtime | 提供执行EVM代码的基本执行模型 |
crypto | |
crypto/blake2b | 实现由RFC 7693定义的BLAKE2b散列算法和可扩展输出函数(XOF) BLAKE2Xb |
crypto/bls12381 | |
crypto/bn256 | 在256位Barreto-Naehrig曲线上实现最优Ate配对 |
crypto/bn256/cloudflare | 在128位安全级别上实现特定的双线性组 |
crypto/bn256/google | 实现一个特定的双线性组 |
crypto/ecies | |
crypto/secp256k1 | 封装了比特币secp256k1 C库 |
crypto/signify | |
eth | 实现以太坊协议 |
eth/downloader | 包含手动全链同步 |
eth/fetcher | 包含基于区块头、区块或交易同步的通知 |
eth/filters | 为区块、交易和日志事件实现以太坊过滤系统 |
eth/gasprice | |
eth/tracers | JavaScript交易跟踪器的集合 |
eth/tracers/internal/tracers | 包含实用JavaScript跟踪程序 |
ethclient | 为以太坊RPC API提供客户端 |
ethdb | 定义以太坊数据存储的接口 |
ethdb/dbtest | |
ethdb/leveldb | 实现了基于LevelDB的键值数据库 |
ethdb/memorydb | 实现基于内存映射的键值数据库 |
ethstats | 实现网络统计报告服务 |
event | 处理实时事件的订阅 |
graphql | 提供以太坊节点数据的GraphQL接口 |
internal/build | |
internal/cmdtest | |
internal/debug | 接口Golang运行时调试设施 |
internal/ethapi | 实现一般以太坊API功能 |
internal/flags | |
internal/guide | 一个小型测试套件,用于确保开发指南中的代码片段能够正常工作 |
internal/jsre | 为JavaScript提供执行环境 |
internal/jsre/deps | go-bindata生成的代码 |
internal/testlog | 为单元测试提供日志处理程序 |
internal/utesting | 为包测试提供独立的备选 |
internal/web3ext | 包含geth特定的web3.js扩展 |
les | 实现轻型以太坊子协议 |
les/checkpointoracle | 检查点oracle合约的包装器,定义了额外的规则 |
les/flowcontrol | 实现客户端流控制机制 |
les/lespay/client | |
les/lespay/server | |
les/utils | |
light | 为以太坊轻客户端实现按需检索的状态和链对象 |
log | 为人类和机器都可读的最佳实践日志记录提供了一个基于观点的、简单的工具包 |
metrics | Coda Hale的指标库Go接口 |
metrics/exp | 在任何/debug/metrics请求中,将go-metrics挂钩到expvar中,将注册表中的所有var加载到expvar中,并执行常规的expvar处理程序 |
metrics/influxdb | |
metrics/librato | |
metrics/prometheus | 将go-metrics暴露为Prometheus格式 |
miner | 实现以太坊区块创建和挖掘 |
mobile | 包含go-ethereum的简化移动API |
node | 设置多协议以太坊节点 |
p2p | 实现以太坊p2p网络协议 |
p2p/discover | 实现节点发现协议 |
p2p/discover/v4wire | 实现Discovery v4连接协议 |
p2p/discover/v5wire | |
p2p/discv5 | Discvery v5的原型实现 |
p2p/dnsdisc | 通过DNS实现节点发现(EIP-1459) |
p2p/enode | |
p2p/enr | 实现EIP-778中定义的以太坊节点记录 |
p2p/nat | 提供对公共网络端口映射协议的访问 |
p2p/netutil | 包含对网络包的扩展 |
p2p/nodestate | |
p2p/rlpx | 实现RLPx传输协议 |
p2p/simulations | 模拟p2p网络 |
p2p/simulations/adapters | |
p2p/simulations/examples | |
p2p/simulations/pipes | |
params | |
rlp | 实现RLP序列化格式 |
rpc | 在多个传输中实现双向JSON-RPC 2.0 |
signer/core | |
signer/fourbyte | 包含4字节数据库 |
signer/rules | |
signer/rules/deps | |
signer/storage | |
tests | 实现以太坊JSON测试的执行 |
tests/fuzzers/abi | |
tests/fuzzers/bls12381 | |
tests/fuzzers/keystore | |
tests/fuzzers/rlp | |
tests/fuzzers/stacktrie | |
tests/fuzzers/stacktrie/debug | |
tests/fuzzers/trie | |
tests/fuzzers/txfetcher | |
trie | 实现梅克尔帕特里夏树 |