跳至內容
0%

Ethereum 節點類型:full 與 archive 與 light 比較

Alchemy team headshot

作者 Alchemy

發布於 2022年8月11日閱讀時間 2 分鐘

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

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

什麼是 full node?

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

當一筆智能合約交易被執行時,Ethereum full node 會執行智能合約中的所有指令。透過共同運作,full node 判斷智能合約執行是否產生預期的結果。然而,運行 full Ethereum node 的成本很高,且耗費大量電力。

Full node 客戶端

客戶端是一種 Ethereum 軟體實作,用於驗證每個區塊中的所有交易,確保網路安全,並確保交易資料有效。Ethereum full node 客戶端 驗證每個區塊中的所有交易,為網路提供安全性與資料準確性。

每個 Ethereum 客戶端都有各自的功能與優點。由於實作方式多樣,這些客戶端可以針對不同的使用族群做調整。在選擇 Ethereum node 客戶端時,需考量功能、支援程度、web3 程式語言 以及授權條款。

Full node 客戶端軟體實作(execution layer 客戶端)

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

  1. Geth(Go Ethereum) — 以 Go 撰寫
  2. Nethermind — 以 C# 和 .NET 撰寫
  3. Erigon — 以 Go 撰寫
  4. Hyperledger Besu — 以 Java 撰寫

在 The Merge 之後,當 Ethereum 從 Proof-of-Work 轉換為 Proof-of-Stake 時,每個 full node 都需要搭配上述其中一種 execution layer 客戶端,同時運行一個 consensus layer 客戶端

Full node 客戶端軟體實作(consensus layer 客戶端)

主要有五種 consensus layer 客戶端:

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

什麼是 light node?

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

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

light node 的使用情境範例包括:

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

除了個人電腦之外,light node 也能有效地運行在低運算能力的裝置上,例如手機或 Raspberry Pi。

什麼是 archive node?

archive node 保存與 full node 相同的所有資料,同時也保存回溯至創世區塊(也就是第一個區塊)的完整區塊鏈歷史狀態資料。

雖然 full node 可以重建舊的區塊鏈狀態資料,但這個同步過程既耗時又低效。根據使用情境的不同,這些資料可能需要被快速提供。然而,由於 archive node 擁有回溯至第一個區塊的歷史資料,它們可以追蹤交易

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 相比,Erigon 透過並行化開發、平面化儲存、預處理與分階段同步,達到更小的儲存空間佔用、更快的同步速度,並為需要使用 trace API 的開發者提供整體更好的體驗。

full node 與 archive node 有什麼差異?

full node 與 archive node 之間的主要差異在於:archive node 保存鏈上所有先前的狀態(也就是完整的 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 供應商

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

Alchemy node 基礎架構

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

由於 node 本質上是通用型的,並非為高可用性而設計,自行運行 node 的應用程式相較於使用 node 供應商,可能會經歷高於平均水準的延遲與停機時間。

可擴展、可靠且準確

Alchemy 的 Supernode 提供可擴展的 node 架構,並保證 99.99% 的運行時間,讓 dApp 開發者能夠持續擴展,而不會中斷產品或使用者的服務。

Alchemy 具備無限擴展能力的 node 基礎架構,以及無可比擬的可靠性、速度和資料正確性,用於支撐 Polygon,事實證明這是採用率的催化劑,使建構於 Polygon 上的應用程式數量顯著增加。

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

免費 archive node 存取

Alchemy 提供強大的免費方案,為主網與測試網都提供免費的 archive 存取權限。若想進一步瞭解 Alchemy 並取得免費 archive 存取權限,請立即註冊免費帳號

Background gradient

打造區塊鏈魔法

Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。