---
title: "Ethereum 节点类型：full 与 archive 与 light"
description: "了解 Ethereum 节点的类型、工作原理及其区别"
---

# Ethereum 节点类型：full 与 archive 与 light

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

本文探讨 Ethereum 区块链上使用的不同类型节点（全节点、归档节点和轻节点），以及它们之间的区别。

## **什么是全节点？**

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

当执行一笔智能合约交易时，Ethereum 全节点会执行该智能合约中的所有指令。全节点共同判断智能合约的执行是否产生了预期结果。然而，[运行 Ethereum 全节点](https://www.alchemy.com/overviews/running-your-own-node)成本高昂，且消耗大量算力。

### **全节点客户端**

客户端是一种 Ethereum 软件实现，用于验证每个区块中的所有交易，确保网络安全，并保证交易数据的有效性。[Ethereum 全节点客户端](https://ethereum.org/en/developers/docs/nodes-and-clients)会验证每个区块中的所有交易，为网络提供安全性和数据准确性保障。

每个 Ethereum 客户端都拥有各自的功能集和优势。由于实现方式各异，这些客户端可以针对不同的用户群体进行定制。在选择 Ethereum 节点客户端时，需要考虑功能特性、支持情况、[web3 编程语言](https://www.alchemy.com/overviews/web3-programming-languages)以及许可协议。

#### **全节点客户端软件实现（执行层客户端）**

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

1. **[Geth](https://www.alchemy.com/overviews/what-is-a-geth-node-and-how-to-run-one)（Go Ethereum）** - 使用 Go 编写
1. **[Nethermind](https://www.alchemy.com/dapps/nethermind)** - 使用 C\# 和 .NET 编写
1. **Erigon** - 使用 Go 编写
1. **Hyperledger Besu** - 使用 Java 编写

在 The Merge 之后，当 Ethereum 从工作量证明（Proof-of-Work）转向权益证明（Proof-of-Stake）时，每个全节点都需要在运行上述某个执行层客户端的同时，配合运行一个[共识层客户端](http://www.alchemy.com/overviews/execution-layer-and-consensus-layer-node-clients)。

#### **全节点客户端软件实现（共识层客户端）**

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

1. **Prsym** - 由 Prysmatic Labs 使用 Go 构建
1. **Teku** - 由 Besu 团队使用 Java 构建
1. **Lighthouse** - 由 Sigma Prime 使用 Rust 构建
1. **Nimbus** - 由 Nimbus 团队使用 Rust 构建
1. **Lodestar** - 由 ChainSafe Systems 使用 Typescript 构建

## **什么是轻节点？**

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

对于个人电脑等低算力设备而言，轻节点可能更为适用，因为它们无需执行昂贵的数据存储和写入任务。

**轻节点的应用场景示例包括：**

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

除个人电脑外，[轻节点](https://www.parity.io/blog/what-is-a-light-client/)还可以高效运行在手机或 Raspberry Pi 等低算力设备上。

## **什么是归档节点？**

[**归档节点**](https://www.alchemy.com/overviews/archive-nodes)保存的数据与全节点相同，此外还保存了区块链自创世区块（即第一个区块）以来的全部历史状态数据。

尽管全节点也能重建旧的区块链状态数据，但这一同步过程既耗时又低效。而根据具体应用场景，这类数据可能需要被快速调用。由于归档节点拥有可追溯到第一个区块的历史数据，因此它们可以[追踪交易](https://www.alchemy.com/docs/node/trace-api/trace-api-endpoints/trace-block)。

归档节点可存储数以 GB 计的历史数据，这使其对普通用户而言不太实用，但对区块浏览器、钱包和链上分析公司等服务提供商却很有价值。

### **Erigon 与 Geth 对比**

Go Ethereum（即 Geth）是 Ethereum 协议的官方 Golang 实现。Geth 是最流行的 Ethereum 客户端，拥有最多的用户，并为开发者提供了大量基于 Go 的工具，这些工具均为开源，并采用 GNU LGPL v3 许可协议。

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

[与 Geth 相比](https://medium.com/@giulio.rebuffo/silkworm-and-akula-the-future-of-erigon-fda4d6813505)，凭借并行化开发、扁平化存储、预处理以及分阶段同步，Erigon 实现了更小的存储占用、更快的同步速度，为需要使用 trace API 的开发者带来了整体更好的体验。

### **全节点与归档节点有何区别？**

全节点与归档节点的主要区别在于：归档节点保存了链上所有历史状态（即 [Ethereum 生态系统](https://www.alchemy.com/dapps/ecosystem/ethereum)的完整图景），而全节点只需存储当前状态数据的一个快照。

简单来说，归档节点包含自第一个区块以来的所有历史数据，而全节点仅保留验证新交易所必需的最重要的当前数据，不必要的区块链数据则会被"修剪"。

## **如何选择合适的节点类型**

选择部署哪种 Ethereum 节点取决于你的应用场景和资源情况，因为不同节点的搭建方式和功能存在显著差异。

通过运行自己的节点，你可以以私密、自主、无需信任的方式使用 Ethereum。由于数据可以通过你自己的节点客户端进行验证，你无需信任网络本身。

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

然而，无限的数据使用量、存储空间和直接的智能合约能力并非没有代价，全节点可能会给你机器的硬件和带宽资源带来较大负担。

**归档节点**存储全节点所拥有的全部信息，并建立起区块链状态的完整历史记录。即使在客户端完成同步之后，归档节点仍会保存之前的数据。

如果你的应用需要历史区块链信息，你需要自行运行归档节点，或者[选择一家提供归档节点访问服务的区块链节点服务商](https://www.alchemy.com/overviews/how-to-choose-a-blockchain-node-provider)。

**轻节点**与全节点类似，但只处理少量数据。轻节点保存区块头链数据，仅在需要时才接收额外数据。它们可以验证数据的有效性，但并不完全参与区块验证。

## **Alchemy 节点基础设施**

Alchemy 是一家 [web3 节点基础设施提供商](https://www.alchemy.com/overviews/blockchain-node-providers)和区块链开发者平台，通过 Supernode 以及 Alchemy 的一整套工具，为 web3 开发者提供强大的可扩展性、稳定性和数据准确性。Supernode 利用专用的分布式系统和自研的协调服务，全面提升节点功能的各个方面，确保实时数据的准确性。

由于节点本身是通用型设计，并非为高可用性而构建，因此[自行运营节点](https://www.alchemy.com/overviews/running-your-own-node)的应用相比使用节点服务商，可能会面临更高的延迟和更多的宕机时间。

### **可扩展、可靠且准确**

Alchemy 的 [Supernode](https://www.alchemy.com/supernode) 提供可扩展的节点架构，并承诺 99.99% 的正常运行时间，让 dApp 开发者能够持续扩展业务，而不必担心产品或用户受到影响。

Alchemy 具备无限可扩展的节点基础设施，以及无可匹敌的可靠性、速度和[数据准确性](https://www.alchemy.com/blog/data-accuracy)，这些能力被用于支撑 **Polygon**，事实证明这已成为推动其被采用的催化剂，使得基于 Polygon 构建的[应用](https://www.alchemy.com/dapps/top/defi-dapps)数量大幅增长。

**0x** 是去中心化交易所的全球基础设施，支撑着数千亿美元级别的交易在各大主流区块链上流转，而它选择信赖 Alchemy 提供的可靠节点基础设施。

### **免费归档节点访问**

Alchemy 提供强大的免费套餐，为主网和测试网均提供免费的归档节点访问。要了解更多关于 Alchemy 的信息，并获取免费的归档节点访问权限，请[立即注册免费账户](https://www.alchemy.com/?a=260a7bfa7d)。
