Erigon
Erigon 是以太坊(包含可嵌入共识层的执行层)的一种实现,处于效率前沿。
本 README 面向仓库的开发者。关于节点运行的所有内容——安装方法、 标志、修剪模式、端口、监控、质押——均在文档站点上。
文档
Erigon 文档 回答了大多数问题。有用的起点:
- 安装 — 二进制文件、Docker、Linux/macOS、Windows、ARM
- 硬件要求 — 磁盘、RAM、CPU、带宽
- 修剪模式 —
archive,full,blocks,minimal - CLI 参考 — 所有标志、配置文件、环境变量
- 默认端口 和 安全性
- 与 Erigon 交互 — JSON-RPC、GraphQL、gRPC 命名空间
- 创建仪表盘 — Prometheus 和 Grafana
- 升级 — 版本和快照格式
深入链接由显微镜符号(🔬)标记
用法
Erigon3 相对于 Erigon2 的变更
- 初始同步不会从 0 重新执行: 下载 99% 的 LatestState 和 History
- 历史数据的按交易粒度(Erigon2 是按块粒度)。这意味着:
- 可以执行 1 个历史交易 - 而无需执行其所在的块
- 如果账户 X 在 1 个块内(不同交易中)发生 V1->V2->V1 的变化:
debug_getModifiedAccountsByNumber返回 它 - Erigon3 不存储 Logs(即 Receipts)- 它总是重新执行历史交易(但成本更低)
- 验证者模式:已添加。
--internalcl默认启用。要禁用请使用--externalcl。 - 将大部分数据存储在不可变文件中(segments/snapshots):
- 可以将最新状态符号链接/挂载到快速驱动器,将历史数据挂载到廉价驱动器
chaindata是数十 GB(在归档主网节点上为 22GB)。rm -rf chaindata是可以接受的。(为防止增长:建议--batchSize <= 1G)
--prune标志已更改:参见--prune.mode(默认:full,归档:archive,EIP-4444:minimal)- 其他更改:
- ExecutionStage 包含许多 E2 阶段:stage_hash_state, stage_trie, log_index, history_index, trace_index
- 重启不会丢失太多部分进度:
--sync.loop.block.limit=5_000默认启用
日志记录
Torrent 客户端日志
Downloader 中的 torrent 客户端维护其自身的文件,logs/torrent.log。它写入 --torrent.verbosity 和 WARN 中更详细的那个,因此即使在默认详细级别下,警告和错误也总能到达该文件。
--torrent.verbosity 及以上级别的消息还会额外转发到 Erigon 自身的文件和控制台记录器,这些记录器仅在 --log.dir.verbosity 和 --verbosity 本身足够详细时才会输出它们。
区块生产 (PoS 验证者)
完全支持 Ethereum 和 Gnosis Chain 的区块生产。
信标链 (共识层)
Erigon 可作为外部共识层客户端的执行层使用。参见 JWT 密钥 和 使用外部 CL 的 Ethereum。
Caplin
Caplin 是 Erigon 内置的共识层,默认启用。标志、归档模式和 Beacon API 配置: Caplin 和 用于质押的 Caplin。
为什么选择新的共识层而不是 Engine API:Engine API 一次只传递一个区块,这不适合 Erigon 的批量处理模型——Erigon 旨在同时处理多个区块,并对数据进行批量排序和处理。 拥有共识层使 Erigon 能够按照自己的节奏驱动区块处理,而不是受 Engine API 的节流限制。
开发链
🔬 详细解释见 DEV_CHAIN。
面向开发者
构建
工具链:Go >= 1.25、GCC 10+ 或 Clang、64 位架构。在 Linux 上,内核 > v4。
git clone https://github.com/erigontech/erigon.git
cd erigon
make erigon
二进制文件位于 ./build/bin。使用 -j<n> 来并行化构建。打包的二进制文件、Docker 镜像以及
各平台的安装步骤位于
安装 页面;若要构建特定版本而非 main,
请检出其标签。
在 Windows 上,请原生构建(Chocolatey、MinGW 以及 MinGW 杀毒软件误报的解决方法)或在 WSL2 下构建: 原生编译 和 WSL。
可执行文件
make erigon 构建节点;make all 将完整套件构建到 ./build/bin。make help 列出所有目标。
| 命令 | 描述 |
|---|---|
erigon | 节点:包含嵌入式共识层(Caplin)的执行层 |
rpcdaemon | JSON-RPC 服务器;可在进程内运行,也可针对本地或远程 Erigon 独立运行 |
sentry | 作为独立进程运行的 p2p 层 |
txpool | 作为独立进程运行的交易池 |
downloader | 快照下载器,以及针对预验证集验证 webseed 元信息 |
integration | 同步阶段和数据目录维护工具 — 参见 cmd/integration/Readme.md |
evm | 用于运行字节码、反汇编和完整跟踪日志的独立 EVM |
mcp | Erigon 的独立 MCP 服务器 |
caplin、capcli、snapshots、rpctest 和 pics 也由 make all 构建。
测试
make test-short # fast unit tests
make test-all # full test suite
make test-fixtures-cl # consensus-spec fixtures (also: test-fixtures-eest, test-fixtures-zkevm)
make lint # run before opening or updating a PR
docs/TESTING.md 涵盖了发布时的增量同步验证,这与上述测试套件是不同的 练习。
作为库使用
# please use git branch name (or commit hash). don't use git tags
go get github.com/erigontech/erigon@main
go mod tidy
仓库文档
- docs/DEV_CHAIN.md — 开发链 / 本地开发网
- docker-compose.yml — 作为独立进程运行时各服务的连接方式
- db/etl/README.md — 在数据库插入前用于预处理数据的 ETL 框架
- db/downloader/README.md — 快照下载器内部机制
- cmd/downloader/readme.md — 快照概览:它们是什么,何时创建和拉取
- cmd/rpcdaemon/README.md — RPC 守护进程,包括远程运行
- cmd/prometheus/Readme.md — 指标和仪表盘
- CI-GUIDELINES.md — 修改工作流前请阅读
JSON-RPC 守护进程
Erigon 的大多数组件(txpool、rpcdaemon、快照下载器、sentry 等)可以在 Erigon 内部运行,也可以作为 独立进程运行。部署模式、标志和远程(Remote DB)设置: RPC Daemon 和 cmd/rpcdaemon/README.md。
默认端口和防火墙
所有默认端口、更改它们的标志以及防火墙配置指南: Default ports 和 Security。
Hetzner 预期严格的防火墙规则
需要开放的端口和需要阻止的保留 IPv4 范围: Hetzner firewall note。
作为独立用户运行 - systemd 示例
从 build/bin 作为独立用户运行 erigon 需要使用 make DIST=<path> install 安装 二进制文件。例如,您可以使用 $HOME/erigon
或 /opt/erigon 作为安装路径:
make DIST=/opt/erigon install
获取用于错误报告的诊断信息
- 获取堆栈跟踪:
kill -SIGUSR1 <pid>,获取跟踪并停止:kill -6 <pid> - 获取 CPU 性能分析:添加
--pprof标志并运行
go tool pprof -png http://127.0.0.1:6060/debug/pprof/profile\?seconds\=20 > cpu.png - 获取 RAM 性能分析:添加
--pprof标志并运行
go tool pprof -inuse_space -png http://127.0.0.1:6060/debug/pprof/heap > mem.png
运行本地开发网
🔬 详细说明见此处。
如何更改 db pagesize
联系我们
报告安全问题/疑虑
发送邮件至 security [at] torquem.ch。
获取帮助
- Discord 用于社区支持和开发聊天
- GitHub Issues 用于报告错误 — 请先查看 获取用于错误报告的诊断信息
- Release notes 查看每个版本的变更内容
许可证
Erigon 采用 GNU Lesser General Public License v3.0 许可。