存档节点 - 你需要知道的一切

  • Alchemy
  • 发布于 2022-06-23 11:37
  • 阅读 16

本文详细介绍了以太坊的归档节点,解释了其工作原理、同步过程以及为何在开发去中心化应用(dApp)时使用归档节点的重要性。文章还列出了所需的硬件规范以及如何利用Alchemy连接归档节点。

像以太坊(Ethereum)或多边形(Polygon)这样的公共区块链是一种全球对等网络的计算机。每个对等设备称为节点,它们存储和处理区块链信息,验证网络状态等。

虽然节点可以与区块链上的其他对等设备互动,但它们的能力和用例各不相同。例如,本文讨论的归档节点可以存储区块链的完整历史数据并根据请求提供这些数据。这些与仅存储最近区块链状态的全节点、以及主要请求全节点数据的轻节点不同。

本概述详细介绍归档节点,并解释它们在以太坊中的工作原理。你将了解运行归档节点的重要性、使用哪些客户端,以及如何构建你的归档节点以查询历史区块链数据。

A diagram showing how peer-to-peer nodes connect and interact on a blockchain network.A diagram showing how peer-to-peer nodes connect and interact on a blockchain network.

什么是以太坊归档节点?

以太坊归档节点是一个全节点,能够存储 整个 区块链历史,甚至包括创世区块,或第一个创建的区块。 我们在区块链节点指南中对所有节点进行了深入的介绍,因此在这里我们只是快速概述一下每种类型:

全节点

全节点存储当前和最近的区块链状态(最多128个块)并参与验证新添加的区块。它们可以处理交易、执行智能合约,并查询/提供区块链数据。它们还可以访问一些历史数据(通过追踪),但在这项任务上效率较低。

轻节点(又称“轻客户端”)

轻客户端只存储区块头,因此可以访问最少的区块链数据(例如,区块时间戳、哈希、挖矿难度等)。但是,它们也可以与全节点接口,以获取必要的数据并验证信息(例如,检查交易状态或查询余额)。运行轻节点对硬件、运行成本和技术专业知识的要求最低。

A diagram comparing light nodes and full nodes in a blockchain network. A diagram comparing light nodes and full nodes in a blockchain network.

归档节点

归档节点存储与全节点相同的信息 区块链的所有先前状态。运行归档节点需要在硬件、运行成本、技术专业知识和经验上的最大投资。归档节点能快速、有效地构建归档区块链数据,非常适合查询任意的历史数据,例如某个区块上用户的余额。

归档节点比其他节点需要更多的空间(因为它们存储更多数据),但在特定情况下投资是值得的。在下一节中,我们探讨归档节点如何工作以及它们的架构与其他节点类型如何不同。

归档节点如何工作?

归档节点存储区块链在区块之间的所有历史状态。 归档节点本质上包含网络在不同时间点的快照。

归档节点同步哪些数据?

归档节点执行“完全同步”,下载从创世区块开始的完整区块数据,包括区块头、交易和回执。

与所有节点一样,归档节点必须与区块链的当前状态“同步”,以存储和验证网络上的数据。同步需要从对等节点恢复状态数据、验证交易并构建区块链的本地实例。

归档节点验证所有下载的区块,重新执行所有交易,并将所有中间状态写入你的磁盘。最后一部分解释了归档节点为何在不同时间点提供区块链状态的“归档”。

同步一个归档节点需要多长时间?

同步归档节点的平均估计时间各不相同,但预计需要一个月到三个月(如果过程中出现问题,可能会更长)。

归档节点的同步时间比常规全节点或轻客户端长。这是因为归档节点会从建立以来恢复区块链的完整数据集。

全节点和轻节点的同步时间要少得多,因为它们会修剪历史和不必要的区块链数据。例如,全节点只同步到最新区块,可能还会同步到该区块之前的几百个块(轻客户端仅同步最新的区块头)。

这种缓慢的同步速度可能会延缓开发项目,因此建议使用区块链节点提供商。节点提供商允许你按需部署完全同步的归档节点,减轻你运行归档节点的压力。

归档节点的大小是多少?

截至撰写时,运行两个主要客户端(Geth 和 OpenEthereum)的归档节点存储 超过10 TB的数据

作为背景,运行 Geth 的全节点仅存储略多于700GB的区块链数据。我们之前已经解释了这一差异的原因,即归档节点需要从创世区块恢复区块链数据,而不是全节点定期修剪旧数据。

A chart showing historical increases in the size of an average Ethereum archive node size.A chart showing historical increases in the size of an average Ethereum archive node size. [Source]

为什么使用归档节点?

归档节点提供访问区块链历史信息的通道。如果你需要比最近的128个区块中包含的数据更早的数据,这可能是有用的。

以下是以太坊归档节点的两个用例:

1. 审计区块链的历史信息

如果你正在构建一个服务来审计区块链或收集特定的历史数据,归档节点是理想的。一个好的用例是你正在构建一个区块链浏览器(如 Etherscan)、链上分析工具(如 Dune Analytics)或加密货币钱包。

这些服务依赖于归档节点来查询和提供用户的旧状态数据。例如,你可以使用 Etherscan 获取有关以太坊上第一个挖掘的区块的信息。同样,Dune Analytics 可以向你展示从建立至今的 Uniswap 用户总数

2. dApp 开发

运行自己的节点通常是构建 dApp 的最低要求。如果你只需要提交交易、分析交易内存池、监听智能合约事件和调用最新的区块链信息,运行全节点是有用的。

但是,使用全节点调用前128个区块以外的任何信息都会抛出错误。全节点修剪区块链数据,只保留验证网络状态所需的最小数据。

你的 dApp 项目需要运行一个归档节点以 快速 查询旧的区块链数据。最后一点很重要,因为虽然你可以通过全节点构建归档数据,但耗时会更长。使用归档节点,获取某个特定区块号的账户余额等操作,都是快速而流畅的。

可能需要访问归档节点的 dApp 示例包括:

  • 链上声誉服务(例如 DegenScore),跟踪用户长时间的活动。

  • 治理平台(例如 Tally、Snapshot),允许用户讨论和投票治理提案。

这些 dApp 示例及其他类似的共同点在于 有需要查看历史链上数据

如何运行一个归档节点?

运行一个归档节点需要一个节点客户端和比全节点或轻客户端更强大的硬件。

归档节点 对于 检索历史状态数据非常有用,而无需依赖第三方提供商。它们可以让你控制自己的信息,尤其是在你需要特定目的(如税收合规)时。但由于它们需要存储和互动的庞大信息量,满足适当的硬件要求是必要的。

什么是归档节点客户端?

归档节点客户端是区块链的一个实现,你可以在本地运行。 客户端允许节点(包括归档节点)与其他对等设备互动并访问区块链数据。要顺利运行以太坊归档节点,你需要一个可靠且性能良好的节点客户端。

一些流行的归档节点客户端有哪些?

最流行和可信赖的归档节点客户端包括 Go Ethereum(Geth)、Erigon、Nethermind 和 Besu。 如果我们更深入地看一下每个客户端,可以更好地理解它们:

Geth 归档节点

Geth 是最早为以太坊区块链开发的客户端实现之一。它也是以太坊节点使用的主要客户端。Geth 拥有丰富的工具和功能供用户使用。它是用 Go 语言编写的,并根据 GNU Lesser Public License 公开发布。了解更多关于使用 Geth 运行归档节点

Erigon 归档节点

Erigon 是另一个基于 Go 的以太坊客户端,面向节点用户。Erigon 提供高效的状态存储、更快的同步时间、Grafana 仪表板分析和有用的 JSON-RPC 守护进程。了解更多关于使用 Erigon 运行归档节点

Nethermind 归档节点

Nethermind 是使用 C# .NET 框架构建的以太坊协议实现。Nethermind 声称是最快的以太坊客户端,提供稳定性、安全性、可靠性和数据完整性。了解更多关于使用 Nethermind 运行归档节点

Besu 归档节点

Hyperledger Besu 是为企业用户设计的以太坊客户端,尽管它也适合个人使用。Besu 用 Java 编写,提供许多有用的功能,包括追踪、GraphQL API 和全面的监控。了解更多关于使用 Besu 运行归档节点

运行归档节点需要什么硬件?

由于归档节点执行更多读写操作并使用比其他类型节点更多的 RAM 和 CPU,因此可能需要投资专用硬件来补偿其计算重负。

以下是运行以太坊归档节点的要求列表:

操作系统: Windows、Linux 或 macOS

处理器: Intel i7 或同等处理器

存储: 至少 8-10 TB 空间的固态硬盘(SSD)

内存: 至少 16-32GB 的 RAM 磁盘

CPU: 至少 4 核心的 CPU

带宽: 25 MB/s 以上的速度

一旦你设置好节点硬件并配置客户端,就可以使用前端库(ethers.js/web3.js)和JSON-RPC 调用开始使用以太坊区块链。例如,你可以尝试通过调用 `eth_getBalance` 函数获取某个旧地址的余额。

在 Alchemy 上免费访问归档节点

正如我们所解释的,运行以太坊归档节点需要巨大的投资。这还不包括你需要管理归档节点本身所需的时间和精力,特别是在它失去同步时。但你可以通过连接到由节点提供商(如 Alchemy)管理的归档节点端点来跳过所有这些。

Alchemy 的超级节点支持无限请求归档数据,并提供访问你所需的所有历史区块链信息的权限。好的一点是?你可以 免费 连接到一个归档节点。

Alchemy提供无限制的归档节点访问权限,即使对于超级节点的免费用户。这意味着你可以获取过去的链上数据,甚至从创世块分叉整个链,而无需支付额外费用。Alchemy 包括对 Polygon、以太坊及许多其他流行链的归档节点的访问。

A diagram showing how running a node is different from using a node provider like Alchemy.A diagram showing how running a node is different from using a node provider like Alchemy.

如何在 Alchemy 上连接完全部署的归档节点?

以下是通过 Alchemy 连接归档节点的逐步流程:

1. 注册一个账户(免费!)并创建你的第一个项目。

2. 创建你的 Alchemy 密钥。这是连接到你的归档节点的 URL 端点。

3. 从命令行界面开始向以太坊区块链发送请求以获取归档数据。

结论

归档节点可以存储最近128个区块以外的区块链状态。如果你的 dApp 或 Web3 服务需要访问历史区块链数据,运行归档节点是显而易见的选择。但请注意,运行一个完全功能的归档节点的要求可能会使开发者望而却步并延迟开发计划。

Alchemy 的超级节点通过将用户连接到使用免费的 URL 端点的归档节点解决了这个问题。有了 Alchemy,运行以太坊归档节点从未如此简单!

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

0 条评论

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