主页 > imtoken支持bcc > 黄金观察 | 实操:从硬件到软件如何在家跑以太坊节点

黄金观察 | 实操:从硬件到软件如何在家跑以太坊节点

imtoken支持bcc 2023-01-30 05:56:47

文/Alex R. Mead,CoinMetrics

在消费级硬件上轻松设置和运行以太坊节点的能力是以太坊网络去中心化特性的一个关键卖点。 但是对于普通人来说,在家架设和运行一个节点的实用性如何呢? 随着合并的完成,这个问题在加密社区中被频繁提出。 在 Coin Metrics,我们一直直接探索节点并获得第一手经验。

在本周的“网络现状”系列中,我们将介绍在家中设置和运行以太坊节点所需的步骤。 我们将从基本的硬件和网络要求开始,然后进行软件下载/编译/安装,最后是节点运行步骤和维护。 在整个过程中,我们将提供从运行 Geth/Lighthouse 节点获得的经验见解,Coin Metrics 团队自 2022 年 6 月以来一直在持续运行该节点。

请注意,本文不构成 Coin Metrics 对任何特定硬件、互联网服务提供商或以太坊客户的认可,也不构成任何工程或财务建议。 有问题的节点独立于 Coin Metrics 基础设施运行,不隶属于 Coin Metrics,纯粹用于实验和研究目的,并且与 Coin Metrics 服务没有任何交互。 本文提供的信息,纯粹是为了让我们说清楚,让您看懂。 那么,让我们开始吧!

硬件和网络要求

电脑

要开始设置和运行您自己的以太坊节点,您需要一台计算机和互联网连接。 计算机需要满足两个一般要求,足够的内存和足够的硬盘空间。

每个节点客户端都有特定的 RAM 要求(见下文),但基本上任何具有 16GB RAM 的现代计算机都足够了。 节点也可以在 8GB RAM 上运行; 然而,如果你想将该节点用于其他用途,而不仅仅是说“我要运行一个以太坊节点”,那么你可能希望你有一台 16GB RAM 的计算机。 建议在专用计算机上运行以太坊节点,这意味着计算机的唯一目的是运行以太坊节点。 没有流媒体 Netflix,没有视频编辑,也没有其他前端/后端处理,只是为了运行你的节点。

然后,你需要确保你的电脑有足够的硬盘空间来存储当前的以太坊区块链(记住,合并之后,以太坊区块链现在有两部分:执行层和共识层如何运行以太坊节点,信标链),还有必须有合理的空间来维持链条的增长。 目前,一个好的经验法则是使用 2TB 固态驱动器 (SSD)。 SSD 是必不可少的,因为它支持足够快的读写行为,因此节点可以在本地同步当前链并在链继续增长时维护链。

对于我们的节点,我们运行的是具有 16GB RAM 和 Intel Core i7 处理器的 Dell OptiPlex 5080。 该设备是直接从戴尔网站“现成”购买的。 此外,为了扩展内部硬盘空间,我们还使用 USB-C Type 3 连接器(此 USB 连接器为蓝色)连接了一个 2TB 三星 T7 便携式固态硬盘。

以太坊和以太币有什么区别_如何运行以太坊节点_以太坊节点一天分红多少

以太坊和以太币有什么区别_以太坊节点一天分红多少_如何运行以太坊节点

以太坊节点:Dell OptiPlex 5080,有线以太网连接,2TB SSD

网络连接

要与以太坊网络同步,你需要至少每秒 25MB 的下载速度,这是大多数家庭互联网都能满足的规格。 对于我们的节点,我们使用美国中西部可用的标准 Comcast 计划,报告的下载速度为 250MB/s,总数据下载上限为每月 1.2TB(之后需要额外收费)。 该服务包或类似服务通常面向发达经济体大都市地区的用户。

软件:有什么代码? 从哪里得到它?

合并后,所有以太坊节点必须同时运行两个软件,一个共识层节点和一个执行层节点。 Ethereum.org 列出了以下执行层节点:Geth、Nethermind、Besu、Erigon 和 Akula。 对于共识层节点,它列出了:Lighthouse、Lodestar、Nimbus、Prysm 和 Teku。

对这些不同软件的分析本文不再赘述。 不用说,我们决定分别为我们的执行层和共识层运行可靠的 Geth 和备受推崇的 Lighthouse。

操作系统 (OS)

以太坊节点一天分红多少_如何运行以太坊节点_以太坊和以太币有什么区别

在深入研究运行以太坊协议的软件之前,先简单介绍一下操作系统的选择。 我们决定运行 Ubuntu 22.04 LTS,裸机。 裸机意味着操作系统直接在处理器的硅片上运行。 没有虚拟机,没有 Docker 容器,只有你电脑上的一个“老式”操作系统。 在裸机上运行可以优化硬件资源的使用,而不会产生虚拟化的“开销”。 Ubuntu 22.04 LTS 是一个免费下载,选择它的部分原因是加密和 Linux 社区的独立性,其中 Ubuntu 是系统的几个“Linux 风格”之一。

要在戴尔计算机上安装 Ubuntu 操作系统,我们必须对开箱即用的运行 Windows 10 的现有硬盘进行分区。 此过程的详细说明可在 Ubuntu 的网页上找到,并且需要 USB 驱动器才能在新分区上加载新操作系统。 安装操作系统可能很棘手,对于非技术节点运营商来说,这可能是第一个真正需要克服的“瓶颈”。 需要注意的是,同一个系统可以在 Windows 10 上运行,所以这并不是一个必要的步骤。 此外,Internet 上有大量资源可以解决此问题,因此我们认为具有良好计算机技能的积极用户完成此任务仍然是合理的。

执行层:Geth

根据 clientdiversity.org 的数据,Geth 是目前使用最多的以太坊节点,约占所有以太坊客户端的 80%。 虽然这对网络来说并不理想,但这是我们的节点正在运行的客户端。 至于我们的客户端可执行文件(例如,当您启动节点时我们的操作系统实际运行的是什么)——以一种真正的“不信任它,验证它”的方式——我们想确定软件是由什么组成的。 所以我们使用 Git 从官方的 Go Ethereum 存储库下载了源代码。 在完全本地化代码库的情况下,我们使用 GNU Make 构建 Geth 客户端,还使用 ​​Go Ethereum 的其他几个支持软件,包括使用 clef 为节点创建和管理密钥对。 Go Ethereum 网页上有每个步骤的详细说明。

下载源代码、编译它并将其安装到您的设备上是真正的软件工程师所做的。 对于普通计算机用户来说,这可能是一个无法实现的提升。 因此,如果从源代码编译太困难,Geth 还提供了预构建的二进制文件,您可以从他们的网页上下载。 但是,请注意,虽然这些二进制文件非常值得信赖,但您真正信任的是它们的组成。 使用源代码方法,每一行代码都被单独分析,因此不需要信任。

共识层:Lighthouse

本着与 Geth 相同的精神,对于节点,我们从官方 Lighthouse 存储库下载了 Lighthouse,从源代码编译。 与 Geth 类似,如果您没有软件经验,编译 Lighthouse 可能会很棘手。 因此,预构建的二进制文件也可用于 Lighthouse。

运行节点

如何运行以太坊节点_以太坊和以太币有什么区别_以太坊节点一天分红多少

当实际运行一个节点时,请记住操作员必须在同一台机器上运行两个程序(执行客户端、共识客户端)——在我们的例子中分别是 Geth 和 Lighthouse。 另外,每个客户端都需要向硬盘写入大量数据,这就引出了我们第一步,为文件系统安装一块固态硬盘。

安装固态硬盘

类似于编译源代码,找到物理 SSD 驱动器然后“安装”它对于普通计算机用户来说并不容易。 需要使用终端程序并能够浏览计算机的分层文件夹结构。 对于我们的节点,我们选择将 SSD 挂载到主目录文件夹 ~/ethereum。 在这个文件夹中(记住,它实际上在 SSD 上!)我们再创建两个文件夹,~/ethereum/execution_layer 和 ~/Ethereum/consensus_layer。 这些文件夹(或程序员称之为目录)将保存节点所需的所有文件,包括区块链本身。

运行节点软件

有了node运行的文件位置,我们现在就可以运行node软件了。 我们首先按照 Go Ethereum 网页上的步骤进行操作,其中包括使用 clef 设置用户帐户((EOA——外部拥有的帐户),然后使用一些参数启动 geth,最重要的是将 datadir 设置为我们在 SSD 上的 ~/ ethereum/execution_layer 文件夹(即目录)。请注意,chainid 为“1”(不带引号)表示主网(即我们知道和喜爱的真正的以太坊,而不是测试网)。另外,现在 geth 必须连接到共识层客户端(在我们的例子中是 Lighthouse)和一些额外的参数必须被配置,Go Ethereum 在他们的网页中指定相应的“连接到共识客户端”部分对这些参数进行了解释。

该命令将启动主网区块链的同步过程,到目前为止(2022 年 10 月)有超过 600GB 的资源。 当我们在 2022 年 6 月启动初始节点同步时,该过程大约需要 5 天。

共识层客户端 Lighthouse 的运行方式与上述 Geth 相同。 同样,确保正确指定 datadir 到 SSD,以确保有足够的硬盘空间来存储所有需要的数据。 此外,Lighthouse 需要与 Geth 通信,因为它们都支持合并后的以太坊。 关于连接到执行引擎,Lighthouse 文档对此连接过程提供了具体说明。 我们的节点花了大约两天时间来同步信标链。 请注意,我们首先同步主网链(即 Geth),然后启动信标链(即 Lighthouse)同步。

以太坊节点一天分红多少_如何运行以太坊节点_以太坊和以太币有什么区别

如何运行以太坊节点_以太坊节点一天分红多少_以太坊和以太币有什么区别

以太坊节点一天分红多少_以太坊和以太币有什么区别_如何运行以太坊节点

以太坊节点:左屏为Lighthouse STDOUT,右屏为Geth STDOUT。

使用你的节点

当节点同步时,会下载大量数据。 实际上,以太坊的整个区块链历史都被复制到您的本地计算机,包括信标链。 信息全部下载完成后,可以查询本地节点上的任何信息,不要相信任何人去验证以太坊系统。 通过这样的设置,当涉及到以太坊网络和与之相关的所有 DAapps 时,你可以真正地“不信任,验证”。

连接到您的节点很简单,为 Geth 或 Lighthouse 节点组件使用本地托管的 RPC。 这些 API 在执行层和共识层都有详细记录。 对于 Python 用户来说,使用开源的 Web3.py 模块是一个不错的选择,Stack Overflow 等论坛上有很多博文和问题解答,免费提供了很多示例。 如果您是 API 的新手,您将经历一个学习曲线; 然而,有了 Python 和这个生态系统中可用的大量资源,积极的用户当然可以在线找到资源来学习他们需要的一切。

节点性能

随着股权证明(PoS)成为共识机制,以太坊区块时间的可预测性大大提高。 块时间是高度一致的,每 12 秒生成一个块(对于泄漏的块是 24 秒、36 秒等)如何运行以太坊节点,块传播中的其他通信(例如证明)每 6 秒生成一次。 运行一个专用节点(即计算机只运行以太坊),这在下面显示的 CPU 和网络活动监视器中都非常清楚。 这正是我们所期望的,并且系统的“理论”与观察到的数据相匹配始终是一个令人放心的迹象。 回想一下我们自己的节点,它是从源代码编译并使用所有基本构建块设置的。

如何运行以太坊节点_以太坊和以太币有什么区别_以太坊节点一天分红多少

以太坊节点一天分红多少_如何运行以太坊节点_以太坊和以太币有什么区别

以太坊节点:标准操作的 CPU 负载百分比和网络数据速率。

为了进一步显示哪些节点正在运行,我们调用共识层的端点以返回一组所有验证器(例如,/eth/v1/beacon/states/{state_id}/validators),这在当时超过 400,000写入验证节点的结果。 查询运行了几分钟,如下所示,在请求处理期间 CPU 使用率显着增加,然后在请求得到响应后回落到“正常”。

以太坊节点一天分红多少_如何运行以太坊节点_以太坊和以太币有什么区别

以太坊节点:Beacon 节点响应 API 调用,然后恢复正常的节点运行负载。

连续节点运行

与所有软件系统一样,不断开发新版本。 Geth 和 Lighthouse 也是如此——同样,你必须时不时地更新节点软件。 对我们来说,这包括从 Github 存储库中提取最新版本、编译新的可执行文件以及使用最新的稳定版本重新启动 Geth 和 Lighthouse。 对于我们简单的节点,我们只需要重新编译并重启即可。 对于面向生产的节点,更适合部署开发、暂存和全面监控的生产环境。 如果你不自己编译,你可以下载最新的预编译二进制文件并用它们重新启动你的节点。 此外,操作系统具有必须下载和安装的更新。 这对于避免操作系统级别的安全问题尤为重要。

对于我们的节点,首先需要一个学习曲线来保持节点持续运行。 管理每个进程的 RAM 利用率是第一个障碍,因为计算机会在没有足够 RAM 的情况下“随机”关闭。 此外,最初节点使用 WiFi,无线路由器因数据过载而崩溃。 在解决了这些问题(即缓存限制和有线以太网)之后,节点已经连续运行了几个月而没有停机。

综上所述

使用消费级计算机硬件和家庭互联网连接,可以运行您自己的本地以太坊节点。 虽然运行从源代码本地编译的客户端(共识层和执行层)对大多数用户来说可能很困难,但预编译的可执行文件可用于最常用的客户端。 此外,安装 SSD 来存储区块链并运行操作系统 (OS) 对大多数用户来说是一个挑战; 但是一个有动力、有耐心并且愿意学习的用户完全有能力做到这一点。

节点运营者的下一步是决定是否成为验证者。 为此,节点必须在本地运行第三个客户端(Lighthouse 还附带一个验证器客户端),并且必须抵押 32 个 ETH。 这比节点设置稍微复杂一些。 此外,人们应该意识到离线惩罚和搞砸抵押以太币私钥的可能风险。 因此,用户在运行验证节点之前应该了解他们在做什么。 我们自己没有运行过验证人节点,但是考虑到运行我们自己的节点的复杂性,您最好在运行完自己的节点后至少等待一个月再决定是否运行自己的验证人节点。