运行你自己的以太坊节点本页内容
运行你自己的节点能为你提供各种好处,开启新的可能性,并有助于支持生态系统。本页面将指导你启动自己的节点并参与验证以太坊交易。
请注意,在合并之后,运行一个以太坊节点需要两个客户端:一个执行层 (EL) 客户端和一个共识层 (CL) 客户端。本页面将展示如何安装、配置并连接这两个客户端以运行以太坊节点。
前提条件
你应该了解什么是以太坊节点以及为什么你可能想要运行一个客户端。这在节点和客户端中有所介绍。
如果你是运行节点的新手,或者正在寻找一条技术性较低的途径,我们建议你首先查看我们关于运行以太坊节点的用户友好型介绍。
选择一种方法
启动节点的第一步是选择你的方法。根据要求和各种可能性,你必须选择客户端实现(包括执行客户端和共识客户端)、环境(硬件、系统)以及客户端设置的参数。
本页面将指导你完成这些决策,并帮助你找到运行以太坊实例的最合适方式。
要从客户端实现中进行选择,请查看所有可用于主网的、,并了解客户端多样性。
考虑到客户端的,决定是在你自己的运行该软件。
准备好环境后,使用或使用带有高级选项的终端安装所选的客户端。
当节点正在运行并同步时,你就可以了,但请务必留意其。

环境与硬件本地或云端
以太坊客户端能够在消费级计算机上运行,不需要任何特殊硬件(例如挖矿机)。因此,你可以根据自己的需求选择各种部署节点的选项。简而言之,让我们考虑在本地物理机和云服务器上运行节点:
自有硬件
这两种选项都有上面总结的不同优势。如果你正在寻找云解决方案,除了许多传统的云计算提供商之外,还有专注于部署节点的服务。查看节点即服务以获取有关托管节点的更多选项。
硬件
然而,一个抗审查的、去中心化的网络不应依赖云提供商。相反,在你自己的本地硬件上运行节点对生态系统更健康。估计 (opens in a new tab)显示很大一部分节点在云端运行,这可能成为单点故障。
以太坊客户端可以在你的计算机、笔记本电脑、服务器甚至单板计算机上运行。虽然在个人计算机上运行客户端是可能的,但拥有一台专门用于节点的机器可以显著提高其性能和安全性,同时最大限度地减少对主计算机的影响。
使用你自己的硬件可能非常简单。有许多简单的选项,也有适合技术人员的高级设置。因此,让我们看看在你的机器上运行以太坊客户端的要求和方法。
要求
硬件要求因客户端而异,但通常不会太高,因为节点只需要保持同步。不要将其与挖矿混淆,后者需要更多的计算能力。不过,更强大的硬件确实能缩短同步时间并提高性能。
在安装任何客户端之前,请确保你的计算机有足够的资源来运行它。你可以在下面找到最低和推荐的要求。
硬件的瓶颈主要是磁盘空间。同步以太坊区块链是非常密集的输入/输出操作,需要大量空间。最好有一个固态硬盘 (SSD),即使在同步之后也有数百 GB 的可用空间。
数据库的大小和初始同步的速度取决于所选的客户端、其配置和。
还要确保你的互联网连接不受带宽上限 (opens in a new tab)的限制。建议使用不计量的连接,因为初始同步和广播到网络的数据可能会超出你的限制。
操作系统
所有客户端都支持主流操作系统——Linux、macOS、Windows。这意味着你可以在最适合你的操作系统 (OS) 的常规桌面或服务器机器上运行节点。确保你的操作系统是最新的,以避免潜在的问题和安全漏洞。
最低要求推荐规格
你选择的同步模式和客户端将影响空间要求,但我们在下面估算了每个客户端所需的磁盘空间。
客户端磁盘大小(快照同步)磁盘大小(完整归档)
贝苏
800GB+
12TB+
埃里贡
不适用
2.5TB+
Geth
500GB+
12TB+
奈瑟曼德
500GB+
12TB+
瑞斯
不适用
2.2TB+
对于共识客户端,空间要求还取决于客户端实现和启用的功能(例如,验证者罚没者),但通常需要额外的 200GB 用于信标数据。随着验证者数量的增加,带宽负载也会增加。你可以在此分析中找到有关共识客户端要求的详细信息 (opens in a new tab)。
即插即用解决方案
使用自有硬件运行节点的最简单选项是使用即插即用盒子。来自供应商的预配置机器提供了最直接的体验:订购、连接、运行。一切都已预先配置并自动运行,带有直观的指南和用于监控和控制软件的仪表板。
单板计算机上的以太坊
运行以太坊节点的一种简单且便宜的方法是使用单板计算机,即使是像 Raspberry Pi 这样具有 ARM 架构的计算机。ARM 上的以太坊 (opens in a new tab)为 Raspberry Pi 和其他 ARM 板提供了多个执行和共识客户端的易于运行的镜像。
像这样小巧、实惠且高效的设备非常适合在家里运行节点,但请记住它们的性能有限。
启动节点
实际的客户端设置可以通过自动启动器完成,也可以手动直接设置客户端软件。
对于不太高级的用户,推荐的方法是使用启动器,这是一种指导你完成安装并自动执行客户端设置过程的软件。但是,如果你有一些使用终端的经验,手动设置的步骤应该很容易遵循。
引导式设置
多个用户友好的项目旨在改善设置客户端的体验。这些启动器提供自动的客户端安装和配置,有些甚至提供图形界面用于引导式设置和监控客户端。
以下是一些只需点击几下即可帮助你安装和控制客户端的项目:
手动客户端设置
另一个选项是手动下载、验证和配置客户端软件。即使某些客户端提供图形界面,手动设置仍然需要基本的终端技能,但提供了更多的多功能性。
如前所述,设置你自己的以太坊节点将需要运行一对共识和执行客户端。某些客户端可能包含另一种类型的轻客户端,并且无需任何其他软件即可同步。然而,完全的无须信任验证需要这两种实现。
获取客户端软件
首先,你需要获取你首选的和软件。
你可以简单地下载适合你的操作系统和架构的可执行应用程序或安装包。始终验证下载包的签名和校验和。一些客户端还提供存储库或 Docker 镜像,以便更轻松地安装和更新。所有客户端都是开源的,因此你也可以从源代码构建它们。这是一种更高级的方法,但在某些情况下,可能是必需的。
上面客户端列表中链接的文档提供了安装每个客户端的说明。
以下是客户端的发布页面,你可以在其中找到它们预构建的二进制文件或安装说明:
执行客户端
值得注意的是,客户端多样性是。建议读者考虑运行少数派执行客户端。
共识客户端
客户端多样性对于运行验证者的共识节点至关重要。如果大多数验证者运行单一的客户端实现,网络安全就会面临风险。因此,建议考虑选择少数派客户端。
查看最新的网络客户端使用情况 (opens in a new tab)并了解有关客户端多样性的更多信息。
验证软件
从互联网下载软件时,建议验证其完整性。此步骤是可选的,但特别是对于像以太坊客户端这样的关键基础设施,了解潜在的攻击媒介并避免它们非常重要。如果你下载了预构建的二进制文件,你需要信任它,并承担攻击者可能将可执行文件替换为恶意文件的风险。
开发人员使用他们的 PGP 密钥对发布的二进制文件进行签名,因此你可以通过密码学验证你运行的正是他们创建的软件。你只需要获取开发人员使用的公钥,这些公钥可以在客户端发布页面或文档中找到。下载客户端版本及其签名后,你可以使用 PGP 实现(例如 GnuPG (opens in a new tab))轻松验证它们。查看关于在 Linux (opens in a new tab) 或 Windows/macOS (opens in a new tab) 上使用 gpg 验证开源软件的教程。
另一种验证形式是确保你下载的软件的哈希(一种独特的密码学指纹)与开发人员提供的哈希匹配。这比使用 PGP 更容易,并且某些客户端仅提供此选项。只需在下载的软件上运行哈希函数,并将其与发布页面上的哈希进行比较。例如:
sha256sum teku-22.6.1.tar.gz
9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
客户端设置
安装、下载或编译客户端软件后,你就可以运行它了。这仅仅意味着必须使用正确的配置来执行它。客户端提供丰富的配置选项,可以启用各种功能。
让我们从可能显著影响客户端性能和数据使用的选项开始。代表下载和验证区块链数据的不同方法。在启动节点之前,你应该决定使用什么网络和同步模式。最需要考虑的是客户端所需的磁盘空间和同步时间。请注意客户端的文档以确定哪种同步模式是默认的。如果这不适合你,请根据安全级别、可用数据和成本选择另一种。除了同步算法之外,你还可以设置对不同类型的旧数据进行修剪。修剪可以删除过时的数据,即删除从最近区块无法访问的状态树节点。
其他基本配置选项包括,例如,选择网络——主网或测试网,为 RPC 或 WebSockets 启用 HTTP 端点等。你可以在客户端的文档中找到所有功能和选项。可以通过在 CLI 或配置文件中直接使用相应的标志执行客户端来设置各种客户端配置。每个客户端都略有不同;请始终参考其官方文档或帮助页面以获取有关配置选项的详细信息。
出于测试目的,你可能更喜欢在其中一个测试网网络上运行客户端。。
在下一节中可以找到使用基本配置运行执行客户端的示例。
启动执行客户端
在启动以太坊客户端软件之前,执行最后一次检查以确保你的环境已准备就绪。例如,确保:
首先在测试网上运行你的客户端,以帮助确保一切正常工作。
你需要在启动时声明任何非默认的客户端设置。你可以使用标志或配置文件来声明你首选的配置。每个客户端的功能集和配置语法各不相同。查看你的客户端文档以了解具体信息。
执行和共识客户端通过引擎 API (opens in a new tab)中指定的经过身份验证的端点进行通信。为了连接到共识客户端,执行客户端必须在已知路径生成一个 jwtsecret (opens in a new tab)。出于安全和稳定性的原因,客户端应在同一台机器上运行,并且两个客户端都必须知道此路径,因为它用于验证它们之间的本地 RPC 连接。执行客户端还必须为经过身份验证的 API 定义一个监听端口。
此代币由客户端软件自动生成,但在某些情况下,你可能需要自己生成。你可以使用 OpenSSL (opens in a new tab) 生成它:
openssl rand -hex 32 > jwtsecret
运行执行客户端
本节将指导你启动执行客户端。它仅作为基本配置的示例,将使用以下设置启动客户端:
定义数据目录,所有数据(包括区块链)都将存储在此处启用与客户端通信的接口定义用于经过身份验证的 API 的 jwtsecret 路径
请记住,这只是一个基本示例,所有其他设置都将设置为默认值。请注意每个客户端的文档,以了解默认值、设置和功能。有关更多功能,例如运行验证者、监控等,请参阅特定客户端的文档。
请注意,示例中的反斜杠 \ 仅用于格式化目的;配置标志可以在单行中定义。
运行贝苏
此示例在主网上启动贝苏,将区块链数据以默认格式存储在 /data/ethereum,启用 JSON-RPC 和引擎 RPC 以连接共识客户端。引擎 API 使用代币 jwtsecret 进行身份验证,并且仅允许来自 localhost 的调用。
besu --network=mainnet \
--data-path=/data/ethereum \
--rpc-http-enabled=true \
--engine-rpc-enabled=true \
--engine-host-allowlist="*" \
--engine-jwt-enabled=true \
--engine-jwt-secret=/path/to/jwtsecret
贝苏还带有一个启动器选项,它会询问一系列问题并生成配置文件。使用以下命令运行交互式启动器:
besu --Xlauncher
贝苏的文档 (opens in a new tab)包含其他选项和配置详细信息。
运行埃里贡
此示例在主网上启动埃里贡,将区块链数据存储在 /data/ethereum,启用 JSON-RPC,定义允许哪些命名空间,并启用用于连接共识客户端的身份验证(由 jwtsecret 路径定义)。
erigon --chain mainnet \
--datadir /data/ethereum \
--http --http.api=engine,eth,web3,net \
--authrpc.jwtsecret=/path/to/jwtsecret
埃里贡默认使用 8GB HDD 执行完全同步,这将产生超过 2TB 的归档数据。确保 datadir 指向具有足够可用空间的磁盘,或者查看可以修剪不同类型数据的 --prune 标志。查看埃里贡的 --help 以了解更多信息。
运行 Geth
此示例在主网上启动 Geth,将区块链数据存储在 /data/ethereum,启用 JSON-RPC 并定义允许哪些命名空间。它还启用了用于连接共识客户端的身份验证,这需要 jwtsecret 的路径以及定义允许哪些连接的选项,在我们的示例中仅允许来自 localhost 的连接。
geth --mainnet \
--datadir "/data/ethereum" \
--http --authrpc.addr localhost \
--authrpc.vhosts="localhost" \
--authrpc.port 8551
--authrpc.jwtsecret=/path/to/jwtsecret
查看所有配置选项的文档 (opens in a new tab),并了解有关与共识客户端一起运行 Geth (opens in a new tab) 的更多信息。
运行奈瑟曼德
奈瑟曼德提供各种安装选项 (opens in a new tab)。该软件包带有各种二进制文件,包括一个带有引导式设置的启动器,它将帮助你交互式地创建配置。或者,你可以找到 Runner,它是可执行文件本身,你可以直接使用配置标志运行它。默认情况下启用 JSON-RPC。
Nethermind.Runner --config mainnet \
--datadir /data/ethereum \
--JsonRpc.JwtSecretFile=/path/to/jwtsecret
奈瑟曼德文档提供了有关与共识客户端一起运行奈瑟曼德的完整指南 (opens in a new tab)。
执行客户端将启动其核心功能、选定的端点,并开始寻找对等节点。成功发现对等节点后,客户端开始同步。执行客户端将等待来自共识客户端的连接。一旦客户端成功同步到当前状态,当前的区块链数据将可用。
运行瑞斯
此示例在主网上启动瑞斯,使用默认数据位置。启用 JSON-RPC 和引擎 RPC 身份验证以连接共识客户端(由 jwtsecret 路径定义),并且仅允许来自 localhost 的调用。
reth node \
--authrpc.jwtsecret /path/to/jwtsecret \
--authrpc.addr 127.0.0.1 \
--authrpc.port 8551
请参阅以了解有关默认数据目录的更多信息。瑞斯的文档 (opens in a new tab)包含其他选项和配置详细信息。
启动共识客户端
必须使用正确的端口配置启动共识客户端,以建立与执行客户端的本地 RPC 连接。共识客户端必须使用暴露的执行客户端端口作为配置参数来运行。
共识客户端还需要执行客户端的 jwt-secret 路径,以便验证它们之间的 RPC 连接。与上面的执行示例类似,每个共识客户端都有一个配置标志,该标志将 jwt 代币文件路径作为参数。这必须与提供给执行客户端的 jwtsecret 路径一致。
如果你计划运行验证者,请确保添加一个配置标志,指定费用接收者的以太坊地址。这是你的验证者的以太币奖励累积的地方。每个共识客户端都有一个选项,例如 --suggested-fee-recipient=0xabcd1,它将以太坊地址作为参数。
在测试网上启动信标节点时,你可以通过使用公共端点进行检查点同步 (opens in a new tab)来节省大量的同步时间。
运行共识客户端运行莱特豪斯
在运行莱特豪斯之前,请在莱特豪斯手册 (opens in a new tab)中了解有关如何安装和配置它的更多信息。
lighthouse beacon_node \
--network mainnet \
--datadir /data/ethereum \
--http \
--execution-endpoint http://127.0.0.1:8551 \
--execution-jwt /path/to/jwtsecret
运行洛德斯塔
通过编译或下载 Docker 镜像来安装洛德斯塔软件。在文档 (opens in a new tab)和更全面的设置指南 (opens in a new tab)中了解更多信息。
lodestar beacon \
--dataDir="/data/ethereum" \
--network=mainnet \
--eth1.enabled=true \
--execution.urls="http://127.0.0.1:8551" \
--jwt-secret="/path/to/jwtsecret"
运行尼姆巴斯
尼姆巴斯同时带有共识和执行客户端。它可以在各种设备上运行,即使计算能力非常有限。在安装依赖项和尼姆巴斯本身 (opens in a new tab)之后,你可以运行其共识客户端:
nimbus_beacon_node \
--network=mainnet \
--web3-url=http://127.0.0.1:8551 \
--rest \
--jwt-secret="/path/to/jwtsecret"
运行普莱斯姆
普莱斯姆带有允许轻松自动安装的脚本。详细信息可以在普莱斯姆文档 (opens in a new tab)中找到。
./prysm.sh beacon-chain \
--mainnet \
--datadir /data/ethereum \
--execution-endpoint=http://localhost:8551 \
--jwt-secret=/path/to/jwtsecret
运行泰库
teku --network mainnet \
--data-path "/data/ethereum" \
--ee-endpoint http://localhost:8551 \
--ee-jwt-secret-file "/path/to/jwtsecret"
当共识客户端连接到执行客户端以读取存款合约并识别验证者时,它还会连接到其他信标节点对等节点,并开始从创世区块同步共识时段。一旦信标节点达到当前时段,信标 API 就可以供你的验证者使用了。了解有关信标节点 API (opens in a new tab) 的更多信息。
添加验证者
共识客户端充当供验证者连接的信标节点。每个共识客户端都有自己的验证者软件,在其各自的文档中有详细描述。
运行你自己的验证者允许进行独立质押,这是支持以太坊网络最具影响力和无须信任的方法。然而,这需要存入 32 个 ETH。要以较小的金额在你自己的节点上运行验证者,具有无需许可的节点运营商的去中心化池(例如 Rocket Pool (opens in a new tab))可能会让你感兴趣。
开始质押和生成验证者密钥的最简单方法是使用 Hoodi 测试网质押启动板 (opens in a new tab),它允许你通过在 Hoodi 上运行节点 (opens in a new tab)来测试你的设置。当你为主网做好准备时,你可以使用主网质押启动板 (opens in a new tab)重复这些步骤。
查看质押页面以获取有关质押选项的概述。
使用节点
执行客户端提供 RPC API 端点,你可以使用它们以各种方式在以太坊网络上提交交易、交互或部署智能合约:
不同的客户端对 RPC 端点有不同的实现。但是有一个标准的 JSON-RPC,你可以与每个客户端一起使用。有关概述,请阅读 JSON-RPC 文档。需要来自以太坊网络信息的应用程序可以使用此 RPC。例如,流行的钱包梅塔马斯克允许你连接到你自己的 RPC 端点 (opens in a new tab),这具有很强的隐私和安全优势。
共识客户端都公开了一个信标 API (opens in a new tab),可用于检查共识客户端的状态,或通过使用 Curl (opens in a new tab) 等工具发送请求来下载区块和共识数据。有关此内容的更多信息,请参阅每个共识客户端的文档。
访问 RPC
执行客户端 JSON-RPC 的默认端口是 8545,但你可以在配置中修改本地端点的端口。默认情况下,RPC 接口只能在你的计算机的 localhost 上访问。要使其可远程访问,你可能希望通过将地址更改为 0.0.0.0 来将其公开。这将使其可以通过本地网络和公共 IP 地址访问。在大多数情况下,你还需要在路由器上设置端口转发。
谨慎对待向互联网暴露端口,因为这将让互联网上的任何人控制你的节点。如果你将客户端用作钱包,恶意行为者可能会访问你的节点以破坏你的系统或窃取你的资金。
解决此问题的一种方法是防止潜在有害的 RPC 方法被修改。例如,使用 Geth,你可以使用标志声明可修改的方法:--http.api web3,eth,txpool。
可以通过开发边缘层 API 或 Web 服务器应用程序(如 Nginx)并将它们连接到客户端的本地地址和端口来扩展对 RPC 接口的访问。利用中间层还可以让开发人员能够设置证书,以实现与 RPC 接口的安全 https 连接。
版权声明
本文仅代表作者观点,不代表xx立场。
本文系作者授权xx发表,未经许可,不得转载。
最新留言