跳至內容
0%

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

Alchemy team headshot

作者 Alchemy

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

Ethereum 區塊鏈是一個分布於全球的電腦網路,其中的節點會共同分擔運算能力、資源,以及區塊驗證的責任,讓網路能夠達成共識(也就是就共享狀態達成一致)。

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

什麼是 full node?

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

當一筆智能合約交易被執行時,Ethereum full node 會執行智能合約中的所有指令。這些 full node 會共同判斷智能合約的執行結果是否正確。不過,運行 full Ethereum node 成本高昂,且會消耗大量電力。

Full node client

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

每個 Ethereum client 都有各自的一套能力與優勢。由於這些實作各不相同,可以針對不同使用族群量身打造。選擇 Ethereum node client 時,應考量功能、支援程度、web3 程式語言,以及授權條款。

Full node client 軟體實作(execution layer client)

execution layer full node client 的實作主要有四種:

  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 client,同時運行一個 consensus layer client。

Full node client 軟體實作(consensus layer client)

主要的 consensus layer client 有五種:

  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 發送隨選請求,僅驗證使用者所需的部分狀態。

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

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

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

除了個人電腦之外,light node 也能在手機或 Raspberry Pi 等 low-capacity 裝置上有效率地運行。

什麼是 archive node?

archive node 保有與 full node 相同的所有資料,並額外保存自 Genesis Block(也就是第一個區塊)以來,區塊鏈所有歷史狀態資料。

雖然 full node 也能重建舊的區塊鏈狀態資料,但這個同步過程既耗時又缺乏效率。依使用情境不同,這類資料有時需要能夠快速提供。而由於 archive node 保有自第一個區塊以來的歷史資料,因此可用來追蹤交易。

archive node 可能儲存數 GB 的歷史資料,對一般使用者而言不見得實用,但對區塊瀏覽器、錢包、鏈上分析公司等服務供應商而言則相當有價值。

Erigon 與 Geth 的比較

Ethereum 協定的官方 Golang 實作是 Go Ethereum(或稱 Geth)。Geth 是最受歡迎的 Ethereum client,擁有最多使用者,並為開發者提供大量以 Go 撰寫的工具,且全部採開源方式,以 GNU LGPL v3 授權。

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

與 Geth 相比,Erigon 憑藉平行化開發、扁平化儲存、預先處理與分階段同步等設計,實現了更小的儲存空間佔用、更快的同步速度,整體而言,對於需要使用 trace API 的開發者來說,體驗也更好。

full node 與 archive node 有何差異?

full node 與 archive node 的主要差異在於,archive node 會保留該鏈所有先前狀態的完整紀錄(也就是Ethereum 生態系的完整樣貌),而 full node 則只需儲存目前狀態資料的快照。

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

如何選擇合適的節點類型

由於節點的設置方式與功能有明顯差異,要部署哪一種 Ethereum node,取決於你的使用情境與資源條件。

你可以透過運行自己的節點,以私密、自給自足、無需信任的方式使用 Ethereum。因為資料可以用你自己的 node client 來驗證,所以不必信任整個網路。

full node 的優勢在於能夠直接與公開區塊鏈上的任何智能合約溝通。full node 目前也能將智能合約部署到公開區塊鏈上。

不過,無限制的資料使用量、儲存空間,以及直接操作智能合約的能力,都不是沒有代價的,full node 可能會大量消耗機器的硬體與頻寬資源。

archive node 儲存 full node 所擁有的一切資訊,並建立區塊鏈狀態的歷史紀錄。即使 client 已完成同步,archive node 仍會保留先前的資料。

如果你的應用程式需要歷史區塊鏈資訊,你就需要自行運行 archive node,或是選擇一家提供 archive node 存取的區塊鏈節點供應商。

light node 與 full node 類似,但只處理少量資料。light node 會儲存標頭鏈資料,僅在有需要時才接收額外資料。它們能夠驗證資料的有效性,但不會完整參與區塊驗證。

Alchemy 的節點基礎設施

Alchemy 是一家web3 節點基礎設施供應商,同時也是一個區塊鏈開發者平台,透過 Alchemy 的 Node API 與一整套工具,為 web3 開發者提供強化的可擴展性、穩定性與資料準確性。Alchemy 的 Cortex 引擎運用專屬的分散式系統與獨家的 coordinator 服務,強化節點功能的每一個環節,確保即時的資料準確性。

由於節點本身是通用型設計,並非為高可用性而設計,因此自行運行節點的應用程式,其延遲與停機時間可能會高於使用節點供應商的情況。

可擴展、可靠且準確

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

Alchemy 這套可無限擴展的節點基礎設施,以其無可比擬的可靠性、速度,以及資料正確性,為 Polygon 提供動力。事實證明,這對 Polygon 的採用具有催化作用,使得建構在 Polygon 上的應用程式數量顯著增加。

0x 是去中心化交易所的全球骨幹,讓數千億美元的交易得以流通於所有主要區塊鏈之間,該公司也信賴 Alchemy 提供可靠的節點基礎設施。

免費的 archive node 存取

Alchemy 提供強大的免費方案,讓使用者能免費存取 mainnet 與 testnet 的 archive node。若想進一步了解 Alchemy,並取得免費的 archive node 存取權限,請立即註冊免費帳號。

Background gradient

打造區塊鏈魔法

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