本文介绍了如何设置和运行 Nimbus 信标节点,Nimbus 是以太坊共识客户端,旨在为验证者和节点运营者提供高效、资源节约的替代方案,以参与网络共识。文章涵盖了 Nimbus 的安装、配置、使用可信检查点同步、连接到执行客户端、监控性能以及与 Nimbus Beacon API 交互等步骤。
Nimbus 是一个轻量级的以太坊共识客户端,它为以太坊的客户端多样性生态系统做出了贡献。作为可用于以太坊的几种共识客户端实现之一,Nimbus 为验证者和节点运营商提供了一种高效、资源节约的替代方案,以参与网络共识。本指南将引导你设置和运行 Nimbus 信标节点。
重要提示:仅有共识客户端不足以运行完整的以太坊节点。你还必须与 Nimbus 一起运行一个执行客户端。我们建议按照我们的 如何运行 Reth 节点 指南来设置执行客户端。
自从以太坊在 2022 年 9 月通过“The Merge”过渡到权益证明以来,该网络使用两种类型的客户端协同工作。
共识客户端 管理权益证明共识机制、验证器操作和区块生产,而 执行客户端 管理交易执行、状态管理以及开发者和 dApp 用于与以太坊通信的 JSON-RPC API 接口。这些客户端通过 Engine API 进行通信,相互协调,从而创建一个完整的以太坊节点。
如果你想了解更多关于 EVM 的信息,或者如何运行你自己的执行客户端,请查看此处的指南列表。
Nimbus 是由 Status 构建的以太坊共识客户端,旨在:
在继续之前,请确保你的系统满足最低要求。
在本技术指南中,我们将使用带有 Amazon Linux 2023 的 AWS EC2 实例。请注意,某些安装命令可能会根据你的操作系统而变化。
首先,让我们安装所需的系统工具:
sudo dnf install gcc gcc-c++ make git bash coreutils -y
Nimbus 需要 Git LFS(Large File Storage)来处理大型存储库文件,接下来让我们安装这些依赖项:
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
sudo dnf install git-lfs -y
然后,克隆 Nimbus 存储库并导航到其中:
git clone https://github.com/status-im/nimbus-eth2
cd nimbus-eth2
之后,构建 Nimbus 信标节点及其依赖项:
make -j4 nimbus_beacon_node
这可能需要 10-20 分钟,具体取决于你的系统
最后,创建一个 JWT 密钥文件。这将用于共识客户端 (Nimbus) 和执行客户端之间的安全通信:
openssl rand -hex 32 | tr -d "\n" > /opt/jwtsecret
注意:如果已经为你的执行客户端(例如,Reth)创建了此文件,请跳过上述步骤。
现在我们已经安装了依赖项并构建了 Nimbus 节点。让我们在下一节中使用受信任的检查点同步快速启动并运行。
首次启动信标节点时,它通常从创世块开始同步(这个过程可能需要几个小时甚至几天)。为了防止这种情况,我们可以使用检查点同步(也称为受信任节点同步)从最近的已验证状态开始,从而将同步时间缩短到几分钟。这里的权衡是,你必须信任检查点提供者提供正确的链状态。因此,如果检查点提供者是恶意的或受到损害的,他们可能会给你一个虚假的区块链状态版本,并且你的节点将无法检测到这种欺骗行为。当使用信誉良好的提供商时,这通常被认为是可接受的风险,但重要的是要理解你所做的信任假设。
现在,运行以下命令以使用受信任的检查点同步:
build/nimbus_beacon_node trustedNodeSync \
--network=hoodi \
--trusted-node-url=https://checkpoint-sync.hoodi.ethpandaops.io
上面的命令将从受信任的节点下载最近的检查点,验证检查点的有效性并从该点开始启动节点。
这可能需要几分钟时间,一旦成功,你将看到如下日志输出:
Writing checkpoint state
Writing checkpoint block
...
Done, your beacon node is ready to serve you! Don't forget to check that you're on the canonical chain by comparing the checkpoint root with other online sources.
See https://nimbus.guide/trusted-node-sync.html for more information.
在下一节中,我们将启动 Nimbus 信标节点。但是,请确保你的执行客户端已通过以下指南之一正确配置:
确保你的执行客户端:
/opt/jwtsecret
)在以下部分中,我们将首先启动 Nimbus(特别是使用检查点同步),然后启动执行客户端。
准备好了吗?现在让我们使用以下命令启动 Nimbus 信标节点:
如果你正在使用 Systemd 设置 Nimbus 节点,请跳过此部分
/nimbus-eth2/build/nimbus_beacon_node \
--network=hoodi \
--data-dir=build/data/shared_hoodi_0 \
--web3-url=http://127.0.0.1:8551 \
--rest-port=5052 \
--rest \
--metrics \
--jwt-secret="/opt/jwtsecret"
让我们了解一下关键配置参数:
--network=hoodi
:指定以太坊网络(本示例中为 Hoodi 测试网)--data-dir
:区块链数据和节点状态存储的目录--web3-url
:到你的执行客户端的连接端点(Engine API)--rest
:启用 REST API 以进行监控和外部集成--metrics
:启用指标收集以进行性能监控--jwt-secret
:JWT 密钥文件的路径,用于客户端身份验证当 Nimbus 成功启动时,你将看到类似于以下的输出:
窗口中的日志将向你显示对等连接、区块处理和同步状态更新。
启用 --rest
标志后,你可以通过 HTTP 查询你的节点状态:
## 节点版本
curl http://localhost:5052/eth/v1/node/version
## 对等节点数
curl http://localhost:5052/eth/v1/node/peer_count
## 获取同步状态
curl http://localhost:5052/eth/v1/node/syncing
在已同步的节点上,上面的命令将如下所示:
## 节点版本
{"data":{"version":"Nimbus/v25.9.0-660ebe-stateofus"}}
## 对等节点数
{"data":{"disconnected":"302","connecting":"0","connected":"64","disconnecting":"0"}}
## 同步状态
{"data":{"head_slot":"1269662","sync_distance":"1","is_syncing":false,"is_optimistic":false,"el_offline":false}}
现在我们的节点已与最新提示同步,我们还可以获取 Beacon 链数据:
## 创世信息
curl http://localhost:5052/eth/v1/beacon/genesis
## 当前头区块根
curl http://localhost:5052/eth/v1/beacon/blocks/head/root
## 区块证明
curl http://localhost:5052/eth/v1/beacon/blocks/head/attestations
响应:
## 创世
{"data":{"genesis_time":"1742213400","genesis_validators_root":"0x212f13fc4df078b6cb7db228f1c8307566dcecf900867401a92023d7ba99cb5f","genesis_fork_version":"0x10000910"}}
## 头区块根
{"execution_optimistic":false,"finalized":false,"data":{"root":"0x1c18e87530d2209cbd806adc5697583cda490fff83ca7b1b98d50773ddbe035a"}}
## 区块证明
{
"aggregation_bits": "0xebfffffff7ffffdeff...",
"data": {
"slot": "1269703",
"index": "0",
"beacon_block_root": "0xa6ec2573440ff2db4ec1bff907dfde73922ca3b05e5f1bb12ce1ef88938cec3d",
"source": {
"epoch": "39677",
"root": "0x3ec79147d1c4346f7463afa4d9e938b07a62d94270d512735231a73c873b12d9"
},
"target": {
"epoch": "39678",
"root": "0x1c18e87530d2209cbd806adc5697583cda490fff83ca7b1b98d50773ddbe035a"
}
},
"signature": "0xb8c18ddbfaf9008228...",
"committee_bits": "0xffffffffffffffff..."
}
如果你已经走到这一步,恭喜你!我们已经在 Hoodi 测试网上配置并运行了一个 Nimbus 节点,并与 Beacon API 交互以获取区块链数据。
如果你计划长期运行这个节点,你将需要使用我们在本指南前面演示的 systemd 服务,以便在任何系统重启后自动重新启动它。
本指南使用 Hoodi 测试网进行安全实验。当你准备好使用主网时,以下是主网所需的关键更改:
--network hoodi
更改为 --network mainnet
(或省略,因为主网是默认设置)--data-dir=build/data/shared_mainnet_0
--chain mainnet
)请注意,主网需要比 Hoodi 测试网大得多的存储空间,并且同步时间可能需要数天或数周,具体取决于你机器的性能。你还可以考虑使用快照,快照是区块链数据库在特定时间点的压缩存档。这可以显着减少同步时间,但是,权衡之处是你信任快照中的区块链状态。
虽然运行你自己的 Nimbus Beacon 节点可以让你完全控制并为网络去中心化做出贡献,但它也需要大量的时间、资源和持续的维护。如果你更喜欢专注于构建应用程序而不是管理基础设施,QuickNode 提供了一种可靠的替代方案,具有企业级性能和 99.9% 的正常运行时间。
QuickNode 的 Core API 提供对以太坊的即时访问,而无需等待同步时间,它使用来自不同执行客户端的请求,以确保可靠性和性能。他们的全球网络通过全球节点分布减少了延迟,并且该平台会自动处理客户端更新、安全补丁和系统维护的所有复杂性。
对于需要特定客户端实现或增强性能的应用程序,QuickNode 的 专用集群 允许你选择你喜欢的执行客户端(包括 Reth、Geth 等)。这些专用资源提供可自定义的配置,并允许你随着应用程序的增长而扩展,而无需担心基础设施的限制。
订阅我们的 时事通讯 以获取更多关于以太坊的文章和指南。如果你有任何反馈,请随时通过 X 与我们联系。你也可以随时在我们的 Discord 社区服务器上与我们聊天,那里有一些你见过的最酷的开发者 :)
如果你有任何反馈或新主题的要求,请 告诉我们。我们很乐意听取你的意见。
- 原文链接: quicknode.com/guides/inf...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!