ITADN
erigontech/erigon
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Erigon

Docs Blog Twitter Discord Build status

Erigon 是以太坊(包含可嵌入共识层的执行层)的一种实现,处于效率前沿。

下载 | 文档 | 博客

本 README 面向仓库的开发者。关于节点运行的所有内容——安装方法、 标志、修剪模式、端口、监控、质押——均在文档站点上。

文档

Erigon 文档 回答了大多数问题。有用的起点:

深入链接由显微镜符号(🔬)标记

用法

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 默认启用

日志记录

日志标志、日志级别和日志文件:LogsCLI 参考

Torrent 客户端日志

Downloader 中的 torrent 客户端维护其自身的文件,logs/torrent.log。它写入 --torrent.verbosityWARN更详细的那个,因此即使在默认详细级别下,警告和错误也总能到达该文件。 --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/binmake help 列出所有目标。

命令描述
erigon节点:包含嵌入式共识层(Caplin)的执行层
rpcdaemonJSON-RPC 服务器;可在进程内运行,也可针对本地或远程 Erigon 独立运行
sentry作为独立进程运行的 p2p 层
txpool作为独立进程运行的交易池
downloader快照下载器,以及针对预验证集验证 webseed 元信息
integration同步阶段和数据目录维护工具 — 参见 cmd/integration/Readme.md
evm用于运行字节码、反汇编和完整跟踪日志的独立 EVM
mcpErigon 的独立 MCP 服务器

caplincapclisnapshotsrpctestpics 也由 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

仓库文档

JSON-RPC 守护进程

Erigon 的大多数组件(txpool、rpcdaemon、快照下载器、sentry 等)可以在 Erigon 内部运行,也可以作为 独立进程运行。部署模式、标志和远程(Remote DB)设置: RPC Daemoncmd/rpcdaemon/README.md

默认端口和防火墙

所有默认端口、更改它们的标志以及防火墙配置指南: Default portsSecurity

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

获取帮助

许可证

Erigon 采用 GNU Lesser General Public License v3.0 许可。