配置 Smartnode 堆栈(Docker / Hybrid 模式)

运行完整的执行层和共识层客户端可能令人生畏;有多个选项可供选择,每个选项都有大量不同的设置。 幸运的是,Smartnode 旨在隐藏所有这些复杂性,使其快速且易于配置,同时仍然给您自由定制所有内容的自由。

在本节中,如果您使用基于 Docker 的设置混合设置(连接到外部管理的执行或共识客户端,例如,您在 Smartnode 之外管理的用于单独质押的客户端),我们将介绍配置 Smartnode 的各种方法。

注意

如果您在不使用 Docker 的情况下使用原生模式,请访问原生配置指南

有三种配置方式:

  • 通过向导 UI - 这是最简单的方法。它只会问您几个基本问题,并使用经过充分测试的默认值。这是您首次运行 rocketpool service config 时将看到的内容。
  • 通过设置管理器 UI - 这使您可以访问 Smartnode 的所有设置,以便您可以随意自定义所有内容。
  • 通过命令行无头配置 - 这是为在无头(非交互式)环境中运行 Smartnode 并需要自动配置的人提供的选项。

从上面的列表中选择您想了解更多的模式,或简单地滚动浏览下面的每个选项。

通过向导配置

要启动配置过程,请运行以下命令:

rocketpool service config

这将启动一个基于终端的 UI,可让您快速轻松地配置节点,并为高级自定义提供可选的细粒度控制。

注意

如果您已经配置了 Smartnode,您将看到设置管理器。 如果您喜欢,可以选择从那里重新打开向导,所有现有设置都将为您预先选择。

当您第一次运行配置 UI(或者如果您选择稍后再次运行向导)时,您将看到如下所示的屏幕:

提示

要使用向导,方向键(上/下/左/右)在按钮(选择)或文本框等内容之间导航。 如果您愿意,也可以使用 TabShift+Tab - 它会做同样的事情。

对于按钮,当前选择的按钮将以绿色突出显示。 黑色的按钮未被选择。 在上面的屏幕截图中,Next 当前被选中,Quit 未被选中。

EnterSpace 选择按钮,类似于用鼠标单击它。

Escape 返回上一个对话框,如果您改变了主意。 这在您浏览各个向导页面时会派上用场。

随时按住 Ctrl 并按 C 退出向导而不保存任何内容

例如,在上面的屏幕上,您可以按 方向键在 NextQuit 按钮之间移动。

在选择 Next 时按 Enter 将进入下一个屏幕。 在选择 Quit 时按 Enter 将退出向导而不保存。

准备好开始时,按 Next

选择网络

在下一个屏幕中,您将被要求选择要使用的网络:

您可以使用 方向键(或 TabShift+Tab)突出显示不同的选择。 当您更改选择时,右侧的 Description 框将显示每个选项的简要说明。 这对于向导中所有基于选择的页面都适用,而不仅仅是网络选择,因此您会经常看到这种样式的页面。

如果您想练习在 Hoodi 测试网络上运行 Rocket Pool 节点,使用可以免费获得的假 ETH 和 RPL,请选择 Hoodi Testnet

如果您准备在主网上创建真正的 Rocket Pool 节点以获得真正的奖励,请选择 Mainnet

客户端模式

您将看到两个客户端模式选项:

Locally Managed(也称为 "Docker 模式")是默认选择。 如果您还没有客户端对,并且希望 Smartnode 为您管理一个,请使用它。 通过选择此选项,Smartnode 将创建、配置和管理执行和共识客户端对作为 Docker 容器。 别担心,您将在下一步选择要运行哪个客户端。

Externally Managed(也称为 "混合模式")对于已经在其他地方运行手动管理的执行和共识客户端对的用户来说是一个方便的选择。 通过选择此选项,Smartnode 将简单地连接到您现有的客户端,而不会运行自己的客户端。 例如,用户可以使用它来插入他们当前用于单独质押的客户端;这样,他们就不需要有两个单独的客户端副本。

注意

自执行-共识层合并以来,您不能混合和匹配这些模式(例如,您不能拥有本地执行客户端但外部管理的共识客户端)。 您必须选择全部本地管理或全部外部管理。

执行客户端设置

选择您想用于管理执行客户端的模式,然后按照下面相应选项卡中的步骤操作:

Locally Managed
External

如果您希望 Smartnode 为您管理执行客户端,下一个屏幕将要求您选择一个客户端:

请参阅选择您的 ETH 客户端部分以获取每个选项的说明。 一旦您做出选择,请单击下面的相应选项卡以了解如何配置它:

如果您选择 GethBesuNethermind,向导将为您处理所有配置。 您可以在此过程结束时手动调整其某些参数,但它使用的默认值完全适合节点操作。 您可以继续下一节。

注意

在路由器的端口转发设置中打开 P2P 端口。将其配置为将 端口 30303(TCP 和 UDP)转发到您机器的本地 IP 地址。 这样,其他共识客户端可以发现它并从外部与之通信。这将有助于您的共识客户端快速同步并提高性能(从而提高奖励)。

每个路由器都有不同的操作方式,因此您需要查看路由器的手册以了解如何设置端口转发

注意

由于 Smartnode 将在其自己的 Docker 容器中运行,它将使用 Docker 的内部网络。 您将无法在此处使用 localhost127.0.0.1 等主机名;如果您的执行客户端在与 Smartnode 相同的机器上运行,则需要提供机器的局域网 IP 地址。

这样,您的执行客户端就设置好了!

共识客户端设置

现在您已经准备好执行客户端,下一个任务是设置共识客户端。 "模式"(本地或外部)将从您之前用于执行客户端的选择中继承。

从下面的选项卡中选择您之前选择的模式:

Locally Managed
Externally Managed

如果您希望 Smartnode 为您管理共识客户端,下一个屏幕将要求您选择一个客户端:

对于网络整体健康和多样性的首选选择Random (Recommended) 选择,它将为您在四个受支持的共识客户端中随机选择一个。

如果您更喜欢选择明确的客户端,请参阅选择您的 ETH 客户端部分以获取每个选项的说明,以便您可以做出明智的决定。

注意

根据客户端选择,有两种情况会提示您收到警告:

  • 所选客户端当前是超级多数客户端,这意味着信标链上的验证者中有不健康的大多数使用它,这威胁到网络的稳定性

  • 所选客户端对于您当前使用的硬件来说资源过于繁重

如果这两种情况中的任何一种对您选择的客户端为真,您将收到警告并被要求选择不同的客户端。 您可以选择继续使用所选的客户端,但您必须了解这样做的风险。

一旦您做出选择或被分配了一个随机客户端,请单击下面的相应选项卡以了解如何配置它:

Lighthouse
Nimbus
Prysm
Teku
Lodestar

Lighthouse 配置中的第一个选项将询问您的验证者的 graffiti 消息:

这是您可以附加到在信标链上提出的任何区块的可选自定义消息。 该消息将永久保存,因此请将其视为留下您的印记的有趣小方式!

请注意,graffiti 的最大长度为 16 个字符。

如果您想查看一些验证者今天使用的 Graffiti 示例,请看这里

接下来是启用或禁用 Checkpoint Sync 的选项:

Lighthouse 能够通过连接到您信任的现有信标节点立即同步到信标链网络上的最新区块。 这比传统同步更可取,因为它不需要任何时间(而传统同步可能需要几天时间)并带来一些安全优势。 如果您感到好奇,请查看他们关于检查点同步的文档以获取更多信息。

您可以在此处输入提供对其 REST API 访问权限的任何信标节点的 URL。

如果您想使用它,请参阅下面关于检查点同步的部分

最后一个问题将询问您是否要启用 Doppelgänger Protection:

Lighthouse 支持一个名为 Doppelgänger Detection 的功能。 简而言之,此功能将在 Lighthouse 的验证者客户端重启后故意错过一些证明;在执行此操作时,它将侦听是否仍在使用您的验证者密钥向网络发送证明。

理想情况下,不会有任何证明(这意味着没有其他机器使用您的验证者密钥运行)。 在短暂的等待期后,Lighthouse 将正常开始验证。

但是,如果_有_另一台机器使用您的验证者密钥运行,那么 Lighthouse 将立即关闭并在其日志文件中发出错误消息。 这样做的原因是,如果它也开始证明,那么您将开始双重证明,这是一种可被罚没的行为。 被罚没时,您的验证者将被强制退出信标链,您将被罚没大量 ETH。

大多数时候,doppelgänger 检测只会导致客户端重启后错过一些证明。 然而,在您将验证者移动到新机器或更改为新信标客户端的情况下,doppelgänger 检测可以防止您因意外双重证明而被罚没

将其视为您的 minipool 的廉价保险;每次重启时,您都会错过微不足道的利润,但您可以相当确信您不会意外地在两个地方运行您的密钥并因此被罚没。

从版本 4.5.0 开始,Lighthouse 有一个选项可以使用 QUIC 协议以更高效的方式建立 P2P 连接。如果您愿意使用此功能,您需要在 ETH2 设置上定义一个额外的端口"P2P QUIC port"字段,并在路由器的端口转发设置中将其转发到您的节点。默认 P2P QUIC 端口是 8001 (UDP)。确保避免与节点已经使用的端口(或备用/测试网节点)发生冲突。如果您在节点上使用防火墙,还要确保打开相同的端口(检查 ufw status)。 要检查 QUIC 配置是否正常工作,运行 docker run --network rocketpool_net curlimages/curl http://eth2:9100/metrics | grep libp2p_peers_multi 时,您应该在 libp2p_quic_peers 后看到一个 2 位数字。

注意

在路由器的端口转发设置中打开 P2P 端口。将其配置为将 端口 9001(TCP 和 UDP)转发到您机器的本地 IP 地址。 这样,其他共识客户端可以发现它并从外部与之通信。这将有助于您的共识客户端快速同步并提高性能(从而提高奖励)。

每个路由器都有不同的操作方式,因此您需要查看路由器的手册以了解如何设置端口转发

信标链检查点同步

检查点同步是一种非常有用的技术,一些信标链客户端支持它。 它允许您的信标客户端立即同步整个信标链,而无需从头开始并赶上每个区块。 这意味着您的信标客户端可以在几分钟内准备就绪,而不是需要几天。 它所需要的只是访问您信任的现有信标客户端。

您可以使用任何提供对其 HTTP API 访问权限的信标节点。 目前,许多节点运营商正在使用检查点同步端点 - 这是一项允许 Rocket Pool 节点运营商轻松进行检查点同步的服务。 支持 Hoodi 测试网和主网。 可以通过以下链接找到检查点同步 URL 列表:

选择相关的检查点同步 URL,并在 rocketpool service config 期间提示您输入检查点同步提供者时粘贴到终端中。

之后,您的信标节点将在首次启动时自动连接到检查点同步节点并立即拉下链的最新状态!

注意

只有在您还没有任何信标链数据时,检查点同步才会发生。 换句话说,如果您开始正常同步并决定稍后进行检查点同步,则必须先删除链数据,检查点同步才能工作。 使用以下命令可以轻松完成此操作:

rocketpool service resync-eth2

备用节点

从 Smartnode 堆栈的 1.5.0 版本开始,您可以提供一个"备用"执行客户端和共识客户端对,如果您的主要客户端离线(例如因为您使用 Geth 并需要修剪它),它可以接管。 在这种情况下,您的主节点机器仍将负责使用 minipool 的验证者密钥进行证明和提出区块,但它将连接到外部机器以与执行层和信标链交互。

要了解有关备用节点的更多信息,请参阅本节,完成后返回此处。

指标配置

Rocket Pool 能够显示一个详细的仪表板,显示有关节点硬件健康状况、系统更新、验证者性能、奖励、整体 Rocket Pool 网络信息等的指标:

向导中的下一个问题将询问您是否要启用此功能:

如果您选择启用它,您将在稍后的过程中在设置 Grafana 仪表板部分了解有关设置和如何使用它的更多信息。

注意

此系统收集的所有数据都保留在您的机器上。 Rocket Pool 不会收集任何遥测数据或将其发送到单独的服务。 它纯粹供您使用,以便您可以监控自己的节点!

MEV 配置

自 2022 年 9 月执行层和共识层合并以来,Ethereum 验证者现在能够获得优先费用并参与最大可提取价值(简称 MEV)。

从 Smartnode v1.7.0 开始,MEV 现在是选择退出,因此其配置作为初始设置的一部分呈现,如您在下一个屏幕中看到的:

请阅读我们的 MEV 指南以了解有关 MEV、其配置以及在向导的此部分中要做什么的更多信息。 完成后返回此处。

完成

在回答这个问题后,您已经完成了 Smartnode 的设置! 您将看到以下对话框:

如果您对设置满意并准备启动 Smartnode,请在此处单击 Save and Exit,然后转到保护您的节点部分。

如果您想查看所有设置并自定义向导中未包含的许多其他设置,请单击 Review All Settings 并转到下一节

通过设置管理器配置

如果您已经运行了 rocketpool service config,而不是向导的欢迎,您将看到设置管理器屏幕:

此屏幕有三个主要功能:

  1. 类别列表,可让您深入了解 Smartnode 堆栈每个类别的设置
  2. Review Changes and Save 按钮,当您准备查看已更改的设置并保存更新的配置时可以使用
  3. Open the Config Wizard 按钮,如果您更喜欢该界面,它将带您进入设置向导
提示

要使用设置管理器,方向键(上/下/左/右)在主页中的选项之间导航

Tab 在屏幕底部的类别列表 (1) 和按钮 (2 和 3) 之间切换。 当前选择的按钮将以绿色突出显示

EnterSpace 选择按钮,类似于用鼠标单击它。

随时按住 Ctrl 并按 C 退出设置管理器而不保存任何内容

当您滚动浏览类别列表时,每个选项都会在屏幕右侧的描述框中显示有用的说明。 随意探索它们;在您通过Review Changes and Save按钮完成审查对话框之前,不会保存任何内容,您可以随时按 Ctrl+C 退出而不保存,因此您不会因为在此处使用设置而意外弄乱某些内容。

配置设置

从主屏幕,使用 Enter 键选择任何类别以查看该类别的设置。 例如,这是 Smartnode and TX Fees 类别的屏幕:

使用 方向键 在设置之间上下移动。 当前选择的设置在其末尾将有一个白色方框(如果是文本框或复选框),或将以白色突出显示(如果是下拉列表)。

完成后,按 Escape 返回设置管理器的主屏幕。

当您滚动浏览设置时,每个设置都会在右侧的描述框中显示其功能的简要说明。 它还将在那里显示默认值,以防您想将其恢复为库存设置。

在此示例中,当前选择了 RPL Claim Gas Threshold 设置(在屏幕左侧用绿色框突出显示)。 它已更改为 40,但您可以在右上角(描述框的顶部)看到它的默认值为 150

提示

提醒一下,在您通过 Review Changes and Save 按钮完成审查对话框之前,不会将任何内容保存到磁盘。 我们鼓励您探索所有设置以了解它们并查看您的 Smartnode 可以做什么!

设置类型及其使用方法

设置管理器使用以下设置类型和 UI 元素:

文本框

文本框用于输入任意文本字符串或数字。 它们看起来像这样:

输入您想要的值,然后Enter 或使用 方向键 导航到不同的设置以保留您的更改。 如果您不这样做,设置管理器将假定您仍在更新该设置,并且不会将其标记为已更改。

下拉列表

下拉列表用于从选择列表中选择一个选项。 它们看起来像这样(当它们打开时):

绿色项目是当前选择的项目。 使用 方向键 更改选项 - 当您这样做时,右侧的描述框将更新以告诉您有关当前选择选项的更多信息。 当您对选择满意时,按 Enter 选择所选选项,下拉列表将关闭,显示当前选择的选项:

复选框

复选框用于简单的是/否问题。 它们看起来像这样:

当它们被选中时,中间会有一个 X,如上所示。 当它们未选中时,它们将简单地为空,如下所示:

要更改设置,只需选择它并按 Enter

保存更改

当您对更改感到满意并想在保存之前查看它们时,请按主屏幕上的 Review Changes and Save 按钮。 提醒一下,要访问它,请按 Tab 键。

您将看到如下所示的视图:

此处的审查框将显示您已更改的所有设置,显示旧值和新值。 例如,这里的第一行显示 RPL Claim Gas Threshold 过去是 150,现在已更改为 40

它还将向您显示哪些容器受到您修改的设置的影响,并在您保存更改后提供为您重新启动它们。

注意

此时,您的更改仍未保存。 如果您想返回并修改某些内容,请按 Escape 返回主屏幕。

当您对更改感到满意时,按 Enter 将新配置保存到磁盘。 然后,您将退出终端 UI,并看到类似以下消息:

Your changes have been saved!
The following containers must be restarted for the changes to take effect:
	rocketpool_watchtower
	rocketpool_validator
	rocketpool_eth2
	rocketpool_node
Would you like to restart them automatically now? [y/n]

如果您想自动应用新配置更改并重新启动受影响的容器,请按 yEnter

如果您还有其他事情要在重新启动之前执行,并且稍后手动执行,请按 nEnter

无论哪种情况,您的配置都已完成!

注意

您可能会看到如下所示的错误消息:

2022/08/13 13:49:41 Error piping stdout: read |0: file already closed

这实际上不是错误,只是一个外观故障。 您可以安全地忽略它。

注意

如果您运行的是 Mac OS,您可能会看到有关 node_exporter 的问题抱怨。 您需要运行这些命令来修复。

rocketpool service stop
nano ~/.rocketpool/override/exporter.yml

用以下内容替换文件的全部内容:

# Enter your own customizations for the node exporter container here. These changes will persist after upgrades, so you only need to do them once.
#
# See https://docs.docker.com/compose/extends/#adding-and-overriding-configuration
# for more information on overriding specific parameters of docker-compose files.

version: "3.7"
services:
  node-exporter:
    x-rp-comment: Add your customizations below this line
    volumes:   ["/proc:/host/proc:ro","/sys:/host/sys:ro"]

然后最后 rocketpool service start

通过命令行配置

如果您在无法与终端 UI 交互的无头环境中使用 Smartnode,则可以通过命令行配置节点。

rocketpool service config 命令接受通常可以通过终端 UI 配置的每个设置作为参数。 运行以下命令以查看它们的列表(请注意它相当长):

rocketpool service config --help

输出将如下所示:

NAME:
   rocketpool service config - Configure the Rocket Pool service

USAGE:
   rocketpool service config

OPTIONS:
   --executionClientMode value  Choose which mode to use for your Execution client - locally managed (Docker Mode), or externally managed (Hybrid Mode).
                                Type: choice
                                Options: local, external
 (default: "local")
   --executionClient value  Select which Execution client you would like to run.
                            Type: choice
                            Options: geth, infura, pocket
 (default: "geth")
   --useFallbackExecutionClient         Enable this if you would like to specify a fallback Execution client, which will temporarily be used by the Smartnode and your Consensus client if your primary Execution client ever goes offline.
                                        Type: bool

...

每个选项都将有其名称、类型、默认值,以及(如果它是选择参数)其选项。 使用此文本,您可以找到要设置的选项,并通过适当的参数指定它们。

注意

此命令基于您现有的配置构建,因此如果您已经保存了一些设置并且只想修改其他设置,则不需要重复它们。 它只会更新您作为此命令参数包含的设置。

下一步

配置好节点后,您就可以保护操作系统以保护节点了。 接下来转到保护您的节点部分。