如何运行 Reth 节点

本文档详细介绍了如何使用Rust编写的以太坊执行客户端Reth搭建和运行以太坊节点,包括安装配置Reth、运行完整节点、监控同步状态以及使用JSON-RPC方法查询区块链数据。文章还介绍了Reth与共识客户端的关系,以及在mainnet上运行Reth时需要注意的配置变更。

概述

Reth 是由 Paradigm 以 Rust 构建的高性能以太坊执行客户端。本指南将引导你设置并运行一个 Reth 节点,使你能够直接与以太坊区块链交互。在本教程结束时,你将拥有一个完全同步的 Reth 节点,该节点可以作为你访问以太坊的网关。

你将学到什么

  • 安装和配置 Reth
  • 使用 Reth 运行完整的以太坊节点
  • 监控节点的同步状态
  • 使用 JSON-RPC 方法查询区块链数据

你需要什么

  • 同步的共识客户端(例如,Lighthouse、Nimbus)- 你需要遵循单独的共识客户端指南来正确设置它
  • 最低系统要求
  • Linux、macOS 或 Windows 操作系统
  • 已安装 Git
  • 具备基本的命令行知识

注意:本指南演示了使用 Hoodi 测试网 的设置。Hoodi 是较新的测试网,已取代 Holesky。要切换到用于生产用途的 主网,请参阅本指南末尾概述的配置更改。

什么是 Reth?

Reth (Rust Ethereum) 是 Paradigm 开发的以太坊执行客户端。Reth 完全用 Rust 编写,专注于快速、内存高效且对开发者友好。它被设计成模块化的,允许开发者自定义和扩展其功能,同时保持与以太坊的兼容性。

在深入研究技术实现之前,让我们首先回顾一下什么是执行客户端和共识客户端。

什么是执行客户端?

执行客户端(以前称为“Eth1 客户端”)负责处理交易、执行智能合约和管理以太坊状态。它处理以太坊上发生的所有计算工作,例如交易处理、智能合约执行、状态管理、Mempool 管理。

执行客户端 vs 共识客户端

自从以太坊在 2022 年 9 月通过“The Merge”过渡到权益证明以来,运行完整的以太坊节点需要执行客户端和共识客户端协同工作。诸如 Reth、Geth、Nethermind 和 Besu 等执行客户端处理交易执行和状态管理,同时还提供开发者和应用程序用来与以太坊交互的 JSON-RPC API。与此同时,诸如 Nimbus、Lighthouse、Prysm 和 Teku 等共识客户端管理权益证明共识机制,并处理验证器操作和区块生产。

项目设置

在继续之前,请确保你具有运行共识客户端和执行客户端的最低系统要求。在本演练中,我们将展示使用具有以下规范的 AWS EC2 实例进行的设置:

  • 实例类型:t2.xlarge
  • :1.5 TB
  • 操作系统:Amazon Linux 2023

设置好机器后,让我们从源代码构建并安装所需的依赖项:

安装依赖项

  1. 确保已安装 Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. 克隆存储库,导航到内部并安装 Reth
git clone https://github.com/paradigmxyz/reth
cd reth
cargo install --locked --path bin/reth --bin reth

注意:构建可能需要大约 10-15 分钟

  1. 如果你还没有,请创建一个 JWT 密钥(这将用于 Reth 节点和共识客户端(例如,Nimbus))
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 完整节点

选择在终端中手动运行 Reth,还是作为 systemd 服务运行以实现自动启动和管理。

  • 终端(前台进程)
  • Systemd 服务(系统服务/守护进程)

通过终端设置 Reth

现在启动 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 调用来检验同步状态。

与 JSON-RPC 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。如果正在同步,它返回一个包含 startingBlockcurrentBlockhighestBlock 的对象。

检查当前区块号

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

从 USDT 合约获取日志

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(或省略,因为主网是默认设置)
  • 确保你有足够的存储空间 (2TB+ SSD) 和带宽用于主网
  • 更新你的共识客户端以使用主网(例如,Nimbus 的 --network mainnet
  • 使用主网检查点同步端点 url

替代方案:使用 QuickNode 的托管基础设施

虽然运行你自己的 Reth 节点可让你完全控制并有助于网络去中心化,但它也需要大量的时间、资源和持续维护。如果你更喜欢专注于构建应用程序而不是管理基础设施,QuickNode 提供了一种可靠的替代方案,具有企业级的性能和 99.9% 的正常运行时间。

QuickNode 的核心 API 提供对以太坊的即时访问,而无需等待同步时间,从而从各种执行客户端提供请求,以确保可靠性和性能。他们的全球网络通过全球节点分布降低了延迟,并且该平台会自动处理客户端更新、安全补丁和系统维护的所有复杂性。

对于需要特定客户端实现或增强性能的应用程序,QuickNode 的 专用集群 允许你选择首选的执行客户端,包括 Reth。这些专用资源提供可自定义的配置,并允许你随着应用程序的增长无缝扩展,而无需担心基础设施限制。

最后的想法

做得好。你已成功设置和配置了 Reth 执行客户端。运行你自己的以太坊节点不仅使你可以直接访问区块链,还有助于网络的去中心化和弹性。请记住,维护节点需要持续的监控、更新和系统维护。无论你选择运行自己的基础设施还是使用 QuickNode 等托管服务,了解以太坊客户端的工作方式都可以让你深入了解网络的架构。当你构建应用程序或探索更高级的区块链开发时,此知识将对你有所帮助。

更多资源

  • 探索我们的 以太坊 API 文档 以了解更多 JSON-RPC 方法
  • 为你的节点设置监控和警报
  • 如果你想参与共识,请考虑运行验证器
  • 加入 GitHub 上的 Reth 社区以获取更新和讨论

订阅我们的 新闻通讯 以获取更多关于以太坊基础设施和开发的文章和指南。如果你有任何反馈,请随时通过 X 与我们联系。你始终可以在我们的 Discord 社区服务器上与我们聊天,其中包含你将遇到的最酷的一些开发人员!

We ❤️ Feedback!

如果你对新主题有任何反馈或要求,请告诉我们。 我们很乐意听取你的意见。

  • 原文链接: quicknode.com/guides/inf...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。