---
title: "Ethereum 節點類型：full 與 archive 與 light 比較"
description: "探索 Ethereum 節點的類型、運作方式及彼此差異"
---

# Ethereum 節點類型：full 與 archive 與 light 比較

Ethereum 區塊鏈是一個全球分散式電腦網路，節點在其中共享處理能力、資源，並分擔區塊驗證的責任，讓網路能夠達成共識（也就是就共享狀態達成一致）。

本文探討 Ethereum 區塊鏈上使用的不同節點類型（full nodes、archive nodes 和 light nodes），以及它們之間的差異。

## **什麼是 full node？**

**full node 保存完整的區塊鏈資料副本，並透過接收來自其他 full node 的交易和區塊、驗證這些資料，再將其轉發給其他 full node，來為網路做出貢獻。**

當一筆智能合約交易被執行時，Ethereum full node 會執行智能合約中的所有指令。透過共同運作，full node 判斷智能合約執行是否產生預期的結果。然而，[運行 full Ethereum node](https://www.alchemy.com/overviews/running-your-own-node) 的成本很高，且耗費大量電力。

### **Full node 客戶端**

客戶端是一種 Ethereum 軟體實作，用於驗證每個區塊中的所有交易，確保網路安全，並確保交易資料有效。[Ethereum full node 客戶端](https://ethereum.org/en/developers/docs/nodes-and-clients) 驗證每個區塊中的所有交易，為網路提供安全性與資料準確性。

每個 Ethereum 客戶端都有各自的功能與優點。由於實作方式多樣，這些客戶端可以針對不同的使用族群做調整。在選擇 Ethereum node 客戶端時，需考量功能、支援程度、[web3 程式語言](https://www.alchemy.com/overviews/web3-programming-languages) 以及授權條款。

#### **Full node 客戶端軟體實作（execution layer 客戶端）**

execution layer full node 客戶端實作主要有四種類型：

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 時，每個 full node 都需要搭配上述其中一種 execution layer 客戶端，同時運行一個 [consensus layer 客戶端](http://www.alchemy.com/overviews/execution-layer-and-consensus-layer-node-clients)。

#### **Full node 客戶端軟體實作（consensus layer 客戶端）**

主要有五種 consensus layer 客戶端：

1. **Prysm** — 由 Prysmatic Labs 以 Go 開發
1. **Teku** — 由 Besu 團隊以 Java 開發
1. **Lighthouse** — 由 Sigma Prime 以 Rust 撰寫
1. **Nimbus** — 由 Nimbus 團隊以 Rust 撰寫
1. **Lodestar** — 由 ChainSafe Systems 以 Typescript 開發

## **什麼是 light node？**

**light node** 儲存的是區塊標頭資料，例如前一個區塊的雜湊值與時間戳記，而不像 full node 那樣儲存完整的區塊資料。light node 會向 full node 發送按需請求，只驗證使用者所需的部分狀態資料。

低運算能力的裝置，例如個人電腦，可能會因使用 light node 而受益，因為它們不需要執行成本高昂的資料儲存與寫入作業。

**light node 的使用情境範例包括：**

1. 查詢餘額
1. 驗證某筆交易是否已被網路確認
1. 檢查事件記錄

除了個人電腦之外，[light node](https://www.parity.io/blog/what-is-a-light-client/) 也能有效地運行在低運算能力的裝置上，例如手機或 Raspberry Pi。

## **什麼是 archive node？**

[**archive node**](https://www.alchemy.com/overviews/archive-nodes) 保存與 full node 相同的所有資料，同時也保存回溯至創世區塊（也就是第一個區塊）的完整區塊鏈歷史狀態資料。

雖然 full node 可以重建舊的區塊鏈狀態資料，但這個同步過程既耗時又低效。根據使用情境的不同，這些資料可能需要被快速提供。然而，由於 archive node 擁有回溯至第一個區塊的歷史資料，它們可以[追蹤交易](https://www.alchemy.com/docs/node/trace-api/trace-api-endpoints/trace-block)。

archive node 可以儲存數 GB 的歷史資料，這使它們對一般使用者較不具吸引力，但對於區塊瀏覽器、錢包、鏈上分析公司等服務提供商來說相當有價值。

### **Erigon 與 Geth 比較**

Go Ethereum（或稱 Geth）是 Ethereum 協定的官方 Golang 實作。Geth 是最受歡迎的 Ethereum 客戶端，使用者最多，並為開發者提供了廣泛的 Go 語言工具，這些工具都是開源的，並採用 GNU LGPL v3 授權。

Erigon 是 Geth 的一個 fork，專注於速度與磁碟空間節省。Erigon 是一個完全重新架構的 Ethereum node 客戶端實作，以 Go 開發，未來計劃移植到其他語言。Erigon 的目標是提供更模組化、更快速、更精簡的 Ethereum 實作。

[與 Geth 相比](https://medium.com/@giulio.rebuffo/silkworm-and-akula-the-future-of-erigon-fda4d6813505)，Erigon 透過並行化開發、平面化儲存、預處理與分階段同步，達到更小的儲存空間佔用、更快的同步速度，並為需要使用 trace API 的開發者提供整體更好的體驗。

### **full node 與 archive node 有什麼差異？**

full node 與 archive node 之間的主要差異在於：archive node 保存鏈上所有先前的狀態（也就是完整的 [Ethereum 生態系統](https://www.alchemy.com/dapps/ecosystem/ethereum)紀錄），而 full node 只需要儲存當前狀態資料的快照。

簡單來說，archive node 包含自第一個區塊以來的所有歷史資料，而 full node 只包含驗證新交易所需的最重要、最新的資料，不必要的區塊鏈資料則會被「修剪」。

## **如何選擇合適的節點類型**

選擇適合部署的 Ethereum node 類型取決於你的使用情境與資源，因為不同節點的設定與功能有顯著差異。

透過運行自己的 node，你可以以私密、自給自足且無需信任的方式使用 Ethereum。你不必信任網路，因為資料可以透過自己的 node 客戶端來驗證。

**full node** 的優勢在於能夠直接與公開區塊鏈上的任何智能合約通訊。full node 現在也可以將智能合約部署到公開區塊鏈上。

然而，無限制的資料使用量、儲存空間，以及直接操作智能合約的能力並非免費，full node 可能會對你機器的硬體與頻寬資源造成負擔。

**archive node** 儲存 full node 所擁有的所有資訊，並建立區塊鏈狀態的歷史紀錄。即使客戶端已完成同步，archive node 仍會保存先前的資料。

如果你的應用程式需要歷史區塊鏈資訊，你需要運行自己的 archive node，或是[選擇一家提供 archive node 存取的區塊鏈 node 供應商](https://www.alchemy.com/overviews/how-to-choose-a-blockchain-node-provider)。

**light node** 與 full node 類似，但只處理少量資料。light node 保存區塊標頭鏈資料，只有在被請求時才會接收額外的資料。它們可以驗證資料的有效性，但不會完整參與區塊驗證。

## **Alchemy node 基礎架構**

Alchemy 是一家 [web3 node 基礎架構供應商](https://www.alchemy.com/overviews/blockchain-node-providers)，也是一個區塊鏈開發者平台，透過 Supernode 以及 Alchemy 的整套工具，為 web3 開發者提供強化的可擴展性、穩定性與資料準確性。Supernode 運用專門的分散式系統與專有的協調服務，提升 node 功能的各個面向，確保即時資料的準確性。

由於 node 本質上是通用型的，並非為高可用性而設計，[自行運行 node](https://www.alchemy.com/overviews/running-your-own-node) 的應用程式相較於使用 node 供應商，可能會經歷高於平均水準的延遲與停機時間。

### **可擴展、可靠且準確**

Alchemy 的 [Supernode](https://www.alchemy.com/supernode) 提供可擴展的 node 架構，並保證 99.99% 的運行時間，讓 dApp 開發者能夠持續擴展，而不會中斷產品或使用者的服務。

Alchemy 具備無限擴展能力的 node 基礎架構，以及無可比擬的可靠性、速度和[資料正確性](https://www.alchemy.com/blog/data-accuracy)，用於支撐 **Polygon**，事實證明這是採用率的催化劑，使建構於 Polygon 上的[應用程式](https://www.alchemy.com/dapps/top/defi-dapps)數量顯著增加。

**0x** 是去中心化交易所的全球骨幹，讓數千億筆交易得以在各大主要區塊鏈之間流動，該公司信賴 Alchemy 提供可靠的 node 基礎架構。

### **免費 archive node 存取**

Alchemy 提供強大的免費方案，為主網與測試網都提供免費的 archive 存取權限。若想進一步瞭解 Alchemy 並取得免費 archive 存取權限，請[立即註冊免費帳號](https://www.alchemy.com/?a=260a7bfa7d)。
