本文档详细介绍了如何使用Rust编写的以太坊执行客户端Reth搭建和运行以太坊节点,包括安装配置Reth、运行完整节点、监控同步状态以及使用JSON-RPC方法查询区块链数据。文章还介绍了Reth与共识客户端的关系,以及在mainnet上运行Reth时需要注意的配置变更。
Reth 是由 Paradigm 以 Rust 构建的高性能以太坊执行客户端。本指南将引导你设置并运行一个 Reth 节点,使你能够直接与以太坊区块链交互。在本教程结束时,你将拥有一个完全同步的 Reth 节点,该节点可以作为你访问以太坊的网关。
注意:本指南演示了使用 Hoodi 测试网 的设置。Hoodi 是较新的测试网,已取代 Holesky。要切换到用于生产用途的 主网,请参阅本指南末尾概述的配置更改。
Reth (Rust Ethereum) 是 Paradigm 开发的以太坊执行客户端。Reth 完全用 Rust 编写,专注于快速、内存高效且对开发者友好。它被设计成模块化的,允许开发者自定义和扩展其功能,同时保持与以太坊的兼容性。
在深入研究技术实现之前,让我们首先回顾一下什么是执行客户端和共识客户端。
执行客户端(以前称为“Eth1 客户端”)负责处理交易、执行智能合约和管理以太坊状态。它处理以太坊上发生的所有计算工作,例如交易处理、智能合约执行、状态管理、Mempool 管理。
自从以太坊在 2022 年 9 月通过“The Merge”过渡到权益证明以来,运行完整的以太坊节点需要执行客户端和共识客户端协同工作。诸如 Reth、Geth、Nethermind 和 Besu 等执行客户端处理交易执行和状态管理,同时还提供开发者和应用程序用来与以太坊交互的 JSON-RPC API。与此同时,诸如 Nimbus、Lighthouse、Prysm 和 Teku 等共识客户端管理权益证明共识机制,并处理验证器操作和区块生产。
在继续之前,请确保你具有运行共识客户端和执行客户端的最低系统要求。在本演练中,我们将展示使用具有以下规范的 AWS EC2 实例进行的设置:
设置好机器后,让我们从源代码构建并安装所需的依赖项:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
git clone https://github.com/paradigmxyz/reth
cd reth
cargo install --locked --path bin/reth --bin reth
注意:构建可能需要大约 10-15 分钟
openssl rand -hex 32 | tr -d "\n" > /opt/jwtsecret
让我们介绍一下我们将在本指南中使用的确切配置,并提供其他资源来设置你自己的自定义配置:
reth node
- 启动与网络同步、公开 RPC 端点并与你的共识客户端通信的 Reth 执行客户端
--chain hoodi
- 指定要连接的以太坊网络链
--http
- 启用 HTTP JSON-RPC 服务器
--http.addr 0.0.0.0
- 将 HTTP JSON-RPC 服务器绑定到所有可用的网络接口
--http.port 8545
- HTTP JSON-RPC 服务器的端口
--authrpc.addr 127.0.0.1
- 共识客户端用于与执行层通信的 Engine API 端点
--authrpc.port 8551
- 共识客户端用于与执行客户端通信的 Engine API 端口
--authrpc.jwtsecret /opt/jwtsecret
- 用于安全客户端通信的 JWT 密钥文件的路径
--full
- 在完整节点模式下运行,验证所有区块和交易,同时存储完整的状态数据
现在我们更好地了解了将在 Reth 上启用的选项,让我们开始吧。
选择在终端中手动运行 Reth,还是作为 systemd 服务运行以实现自动启动和管理。
现在启动 Reth 节点,运行以下命令:
注意:此时你将需要运行你的共识客户端。如果你尚未设置共识客户端,请首先按照我们的 Nimbus Beacon 节点 指南进行操作。如果没有共识客户端,Reth 无法正确同步,你将看到连接警告。
reth node \
--chain hoodi \
--http \
--http.addr 0.0.0.0 \
--http.port 8545 \
--authrpc.addr 127.0.0.1 \
--authrpc.port 8551 \
--authrpc.jwtsecret /opt/jwtsecret \
--full
你将在启动时看到以下内容:
2025-09-08T14:49:18.579719Z INFO Initialized tracing, debug log directory: /home/ec2-user/.cache/reth/logs/hoodi
2025-09-08T14:49:18.580599Z INFO Starting reth version="1.6.0 (e93e1fc)"
2025-09-08T14:49:18.580646Z INFO Opening database path="/home/ec2-user/.local/share/reth/hoodi/db"
2025-09-08T14:49:18.594352Z INFO Launching node
2025-09-08T14:49:18.595698Z INFO Configuration loaded path="/home/ec2-user/.local/share/reth/hoodi/reth.toml"
2025-09-08T14:49:18.599860Z INFO Verifying storage consistency.
2025-09-08T14:49:18.616544Z INFO Database opened
2025-09-08T14:49:18.617758Z INFO Transaction pool initialized
2025-09-08T14:49:18.617996Z INFO Loading saved peers file=/home/ec2-user/.local/share/reth/hoodi/known-peers.json
2025-09-08T14:49:18.652799Z INFO P2P networking initialized enode=enode://9ec058a4e354524a13a65f68fd42409696be968c97285384b40d508e9db97e7d64c88d78b88930c99351519c5733b1ce268389fd1e76f78855288d9ee7035596@0.0.0.0:30303
2025-09-08T14:49:18.653026Z INFO StaticFileProducer initialized
2025-09-08T14:49:18.653839Z INFO Pruner initialized prune_config=PruneConfig { block_interval: 5, segments: PruneModes { sender_recovery: Some(Full), transaction_lookup: None, receipts: Some(Distance(10064)), account_history: Some(Distance(10064)), storage_history: Some(Distance(10064)), bodies_history: None, receipts_log_filter: ReceiptsLogPruneConfig({}) } }
2025-09-08T14:49:18.658132Z INFO Consensus engine initialized
2025-09-08T14:49:18.658304Z INFO Engine API handler initialized
2025-09-08T14:49:18.664589Z INFO RPC auth server started url=127.0.0.1:8551
2025-09-08T14:49:18.664917Z INFO RPC IPC server started path=/tmp/reth.ipc
2025-09-08T14:49:18.664969Z INFO RPC HTTP server started url=0.0.0.0:8545
2025-09-08T14:49:18.665143Z INFO Starting consensus engine
2025-09-08T14:49:21.658936Z INFO Status connected_peers=0 latest_block=2372
2025-09-08T14:49:46.659153Z INFO Status connected_peers=3 latest_block=2372
2025-09-08T14:50:11.659641Z INFO Status connected_peers=4 latest_block=2372
可能需要一天的时间才能同步。所以去喝杯咖啡,浏览 X 或探索我们的其他内容,例如我们的 YouTube 频道和 示例应用程序库。你可以通过日志监控节点上的区块号。一旦你看到接近 tip 的区块号,你就可以进行一些 API 调用来验证:
在 Hoodi 上同步可能需要一天的时间(在主网上需要更长的时间)。你可以通过日志监控节点上的区块号。 一旦你看到区块号接近网络 tip,你就可以进行 API 调用来检验同步状态。
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' \
http://localhost:8545
如果已同步,eth_syncing
返回 false。如果正在同步,它返回一个包含 startingBlock
、currentBlock
和 highestBlock
的对象。
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
http://localhost:8545
希望到目前为止,你的节点已同步,并且你已准备好进行更多 API 调用。 在此处 探索以太坊 API 文档,然后展开 以太坊 JSON-RPC API 下拉菜单,然后选择一些 API 方法进行试验。
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0x3f07a9c83155594c000642e7d60e8a8a00038d03e9849171a05ed0e2d47acbb3",false],"id":1}' \
http://localhost:8545
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"}],"id":1}' \
http://localhost:8545
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x8D97689C9818892B700e27F316cc3E41e17fBeb9", "latest"],"id":1}' \
http://localhost:8545
本指南使用 Hoodi 测试网进行安全实验。当你准备好进行生产时,以下是主网所需的关键更改:
--chain hoodi
更改为 --chain mainnet
(或省略,因为主网是默认设置)--network mainnet
)虽然运行你自己的 Reth 节点可让你完全控制并有助于网络去中心化,但它也需要大量的时间、资源和持续维护。如果你更喜欢专注于构建应用程序而不是管理基础设施,QuickNode 提供了一种可靠的替代方案,具有企业级的性能和 99.9% 的正常运行时间。
QuickNode 的核心 API 提供对以太坊的即时访问,而无需等待同步时间,从而从各种执行客户端提供请求,以确保可靠性和性能。他们的全球网络通过全球节点分布降低了延迟,并且该平台会自动处理客户端更新、安全补丁和系统维护的所有复杂性。
对于需要特定客户端实现或增强性能的应用程序,QuickNode 的 专用集群 允许你选择首选的执行客户端,包括 Reth。这些专用资源提供可自定义的配置,并允许你随着应用程序的增长无缝扩展,而无需担心基础设施限制。
做得好。你已成功设置和配置了 Reth 执行客户端。运行你自己的以太坊节点不仅使你可以直接访问区块链,还有助于网络的去中心化和弹性。请记住,维护节点需要持续的监控、更新和系统维护。无论你选择运行自己的基础设施还是使用 QuickNode 等托管服务,了解以太坊客户端的工作方式都可以让你深入了解网络的架构。当你构建应用程序或探索更高级的区块链开发时,此知识将对你有所帮助。
订阅我们的 新闻通讯 以获取更多关于以太坊基础设施和开发的文章和指南。如果你有任何反馈,请随时通过 X 与我们联系。你始终可以在我们的 Discord 社区服务器上与我们聊天,其中包含你将遇到的最酷的一些开发人员!
如果你对新主题有任何反馈或要求,请告诉我们。 我们很乐意听取你的意见。
- 原文链接: quicknode.com/guides/inf...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!