跳至内容
0%

Ethereum 节点类型:full 节点、archive 节点与 light 节点

Alchemy team headshot

作者 Alchemy

发布于 2022年8月11日1 分钟阅读

Ethereum 区块链是一个分布在全球的计算机网络,网络中的节点共同分担处理能力、资源,并共同承担区块验证责任,从而使网络能够达成共识(即对共享状态达成一致)。

本文探讨了 Ethereum 区块链上使用的不同类型的节点(全节点、存档节点和轻节点),以及它们之间的区别。

什么是全节点?

全节点保存一份完整的区块链数据副本,并通过接收其他全节点发来的交易和区块,对其进行验证,再转发给其他全节点,从而为网络做出贡献。

当一个智能合约交易被执行时,Ethereum 全节点会执行该智能合约中的所有指令。全节点共同判断智能合约的执行是否产生了预期的结果。但是,运行 Ethereum 全节点成本高昂,且耗电量大。

全节点客户端

客户端是 Ethereum 软件的一种实现,它验证每个区块中的所有交易,确保网络安全,并保证交易数据有效。Ethereum 全节点客户端验证每个区块中的所有交易,为网络提供安全性和数据准确性。

每个 Ethereum 客户端都有各自的能力和优势。由于实现方式多样,客户端可以针对不同的用户群体进行定制。在选择 Ethereum 节点客户端时,需要考虑功能特性、支持情况、web3 编程语言以及许可证。

全节点客户端软件实现(执行层客户端)

执行层全节点客户端实现主要有四种:

  1. Geth(Go Ethereum) - 用 Go 编写
  2. Nethermind - 用 C# 和 .NET 编写
  3. Erigon - 用 Go 编写
  4. Hyperledger Besu - 用 Java 编写

Ethereum 完成从工作量证明(Proof-of-Work)向权益证明(Proof-of-Stake)的过渡(即 The Merge)之后,每个全节点都需要在运行上述执行层客户端之一的同时,运行一个共识层客户端。

全节点客户端软件实现(共识层客户端)

主要有五种共识层客户端:

  1. Prysm - 由 Prysmatic Labs 用 Go 构建
  2. Teku - 由 Besu 团队用 Java 构建
  3. Lighthouse - 由 Sigma Prime 构建,用 Rust 编写
  4. Nimbus - 由 Nimbus 团队构建,用 Rust 编写
  5. Lodestar - 由 ChainSafe Systems 用 Typescript 构建

什么是轻节点?

轻节点存储区块头数据,例如前一个区块的哈希值和时间戳,而不像全节点那样存储完整的区块数据。轻节点向全节点发送按需请求,只验证其用户所需的状态部分。

低性能设备,例如个人电脑,可能会因为轻节点而受益,因为它们不需要执行成本高昂的数据存储和写入任务。

轻节点的使用场景示例包括:

  1. 查询余额
  2. 验证某笔交易是否已被网络确认
  3. 检查事件日志

除个人电脑之外,轻节点也可以在低性能设备上高效运行,例如手机或 Raspberry Pi。

什么是存档节点?

存档节点保存与全节点相同的所有数据,此外还保存区块链自创世区块(即第一个区块)以来的所有历史状态数据。

虽然全节点可以重建旧的区块链状态数据,但这个同步过程耗时且低效。根据具体使用场景,这些数据可能需要被快速提供。而存档节点由于保存了自第一个区块起的历史数据,因此可以追溯交易。

存档节点可以存储数千兆字节的历史数据,这使得它们对普通用户来说吸引力不大,但对区块浏览器、钱包和链上分析公司等服务提供商来说很有价值。

Erigon 与 Geth 的对比

Go Ethereum(或称 Geth)是 Ethereum 协议的官方 Golang 实现。Geth 是最受欢迎的 Ethereum 客户端,用户数量最多,为开发者提供了大量基于 Go 的工具,所有这些工具均为开源,并采用 GNU LGPL v3 许可证。

Erigon 是 Geth 的一个分支,专注于速度和磁盘空间的节省。Erigon 是一个用 Go 完全重新构建的 Ethereum 节点客户端实现,未来计划移植到其他语言。Erigon 旨在提供一种更模块化、更快、更精简的 Ethereum 实现。

与 Geth 相比,得益于并行化开发、扁平化存储、预处理和分阶段同步,Erigon 实现了更小的存储占用、更快的同步速度,为需要使用 trace API 的开发者带来了整体上更好的体验。

全节点和存档节点有什么区别?

全节点和存档节点之间的主要区别在于,存档节点会记录链的所有历史状态(即完整呈现 Ethereum 生态系统),而全节点只需存储当前状态数据的快照。

简单来说,存档节点包含自第一个区块以来的所有历史数据,而全节点只包含验证新交易所需的最重要的当前数据,不必要的区块链数据会被“修剪”掉。

如何选择合适的节点类型

选择部署哪种类型的 Ethereum 节点取决于你的使用场景和资源情况,因为不同节点的设置方式和功能存在显著差异。

通过运行自己的节点,你可以以私密、自给自足且无需信任第三方的方式使用 Ethereum。因为数据可以通过你自己的节点客户端进行验证,所以你不必信任网络。

全节点的优势在于可以直接与公链上的任何智能合约通信。全节点现在也可以将智能合约部署到公链上。

然而,无限制的数据使用量、存储空间以及直接与智能合约交互的能力并非没有代价,全节点可能会占用你机器的硬件和带宽资源。

存档节点存储全节点所拥有的全部信息,并建立区块链状态的历史记录。即使客户端已完成同步,存档节点也会保留之前的数据。

如果你的应用需要历史区块链信息,你就需要运行自己的存档节点,或者选择一个提供存档节点访问服务的区块链节点提供商。

轻节点与全节点类似,但只处理少量数据。轻节点保存区块头链数据,只在被请求时接收额外数据。它们可以验证数据的有效性,但不参与完整的区块验证。

Alchemy 节点基础设施

Alchemy 是一家web3 节点基础设施提供商和区块链开发者平台,通过 Alchemy 的 Node API 和一系列工具,为 web3 开发者提供强大的可扩展性、稳定性和数据准确性。Alchemy 的 Cortex 引擎利用专门的分布式系统和自研的协调服务,全方位提升节点功能,确保实时数据准确性。

由于节点本身是通用型的,并非为高可用性而设计,因此相较于使用节点提供商,自行运营节点的应用可能会经历高于平均水平的延迟和宕机情况。

可扩展、可靠且准确

Alchemy 的 Node API 提供可扩展的节点架构,并承诺 99.99% 的正常运行时间,使 dApp 开发者能够持续扩展,而不会中断产品或影响用户。

Alchemy 具有无限可扩展的节点基础设施,以及无与匹敌的可靠性、速度和数据准确性,这些能力被用于支撑 Polygon,事实证明这是一个促进采用的关键因素,使得基于 Polygon 构建的应用数量显著增加。

0x 是去中心化交易所的全球基础设施,支撑着数千亿美元交易在各主要区块链间流转,它选择 Alchemy 作为可靠的节点基础设施。

免费的存档节点访问

Alchemy 提供强大的免费套餐,为主网和测试网提供免费的存档访问权限。要了解更多关于 Alchemy 的信息并获取免费的存档访问权限,请立即注册免费账户。

Background gradient

构建区块链应用

Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。