跳至內容
0%

什麼是 Ethereum 節點?

Alchemy team headshot

作者 Alchemy

發布於 2022年4月18日閱讀時間 2 分鐘

定義與應用

Ethereum 節點指的就是任何執行連接 Ethereum 網路所需軟體的電腦。節點彼此連接,互相傳遞資訊以驗證交易並儲存區塊鏈狀態的資料。

雖然這些名詞常被交替使用,但這些彼此連接的電腦稱為節點,而它們執行的軟體則稱為客戶端。

‍

為什麼節點對 Web3 很重要?

區塊鏈節點跨 Ethereum 網路連接的動畫

節點構成了區塊鏈網路,也是存取它的唯一方式。

每個節點都維護自己的區塊鏈副本,並負責確認這份副本與其他所有節點的副本一致。每當你進行任何操作、需要在區塊鏈上新增一個區塊時,網路上的每一個節點都必須處理這個新區塊。

區塊鏈節點針對新區塊達成共識的動畫

每個節點會根據簽名和交易的有效性,決定接受或拒絕最新的區塊。如果區塊被接受,就會持續與其他節點分享,直到達成共識、所有節點都同步為止。節點能夠迅速拒絕無效區塊,並辨識出試圖違反規則的不良節點。正是這個不斷相互通訊的節點網路,讓系統不需要依賴單一的真實來源,也避免了隨之而來的種種問題。

不同節點之間的這種共識,使區塊鏈網路得以去中心化,也是 Web3 的基石。運行的節點越多,區塊鏈就越強健!

‍

節點有哪些不同的類型?

節點共有三種類型:

  • light node(輕節點)
  • full node(全節點)
  • archive node(歸檔節點)

light node 只下載區塊標頭(block headers),也就是在網路上進行交易所需的最少資料。light node 能夠驗證交易,是因為它能利用這些資料重新產生出它需要查核的特定區塊。

這使得 light node 能夠有效率地與網路互動,並節省大量頻寬與儲存空間。正因如此,light node 可以在記憶體資源有限的日常裝置上運行,例如智慧型手機和筆記型電腦。

不過 light node 也有其局限性。light node 有時需要向 full node 索取自己無法取得的資料,這可能比 full node 直接驗證交易花費更多時間。

雖然運行 light node 是最簡單的節點運行方式,但安裝客戶端、設定變數、下載區塊標頭,並確認一切運作正常,仍然需要花費時間與相關知識。

Light Node
Full Node

Block Headers

Block Headers

Full Block State

Full Block State

full node 擁有驗證網路上區塊正確性所需的一切資料。它可以與任何智能合約互動,也能部署自己的合約。

由於需要完整使用並儲存資料,full node 需要更多的運算與頻寬資源。full node 會下載、儲存並驗證完整的區塊鏈狀態——從第零個區塊到最新的區塊(目前已超過一千萬個且持續增加),這可能需要數週的時間才能同步完成!

archive node 比 full node 更進一步。full node 會修剪掉不再需要用來驗證的項目,也就是與鏈最近的互動紀錄,而 archive node 則會保留所有資料(額外多出數 TB 的資料)。這些詳細資料非常適合用來更有效率地查詢資訊,對某些應用場景很有用,但在大多數情況下都顯得過多。

‍

為什麼運行節點很困難?

讓節點順利運作起來,可能是一個漫長且充滿挑戰的過程。如果你剛接觸 Web3 世界、還不具備相關技術知識(至少目前還沒有),情況更是如此。

光是 full node 要同步到目前區塊鏈狀態、追上超過一千萬個節點所需的數週時間,就可能讓許多人打消在這個領域開發的念頭。

成本也是一項考量因素,而且很快就會累積起來。這包括購買硬體的高額初期投資,以及持續產生的電費和伺服器託管費用。在運行節點時,你還必須確保它持續正常運作。網路延遲、停電或硬體故障,都可能導致代價高昂的停機時間。

雖然客戶端更新有助於持續改善 Ethereum 的可擴展性、安全性與永續性,但這些變動也可能帶來意想不到的問題。而當你嘗試建構更大規模的東西時,問題才真正開始浮現!

‍

擴展 Ethereum 節點時會遇到哪些問題?

Ethereum 節點從一開始就不是為了應付這種規模的請求量而設計的,因此會帶來一些獨特的挑戰。

可靠性

有些請求會要求節點一路查詢回從第零筆日誌到目前區塊的所有資料,這可能導致逾時。這類「死亡查詢(queries of death)」隨時都可能讓節點當機。即使一個節點的可靠性達到標準節點的 72%,也意味著應用程式一年中可能有超過一百天處於離線狀態!

可擴展性

擴展節點基礎架構可能相當棘手。想像一下,你開發的應用程式在 Twitter 上一夕爆紅,但你現有運行的節點卻無法應付流量與交易量的突然暴增。

你無法快速新增節點,因為它們需要數週時間才能完成同步。除此之外,新增的需求可能會壓垮你現有的節點,導致它們當機。這可能導致停機,沒有人能使用你的應用程式,使用者也會因此對你所建構的東西失去信心!

資料一致性

在 Web2 中,網站可以透過負載平衡器(load balancer)來解決這類可擴展性問題,負載平衡器是位於頂層的網路層,能將流量分散到多個無差異的伺服器上。但這種做法對節點行不通,因為區塊鏈是非同步的。雖然兩個節點最終應該會擁有相同的最新區塊,但在任何特定時刻,其中一個節點可能落後於另一個。

負載平衡可能導致兩個截然不同的結果,因為流量被路由到對最新區塊有不同看法的不同節點上。想像一下,你買到了心心念念的NFT,但重新整理後卻發現它似乎消失了!

負載平衡區塊鏈節點回傳不一致資料的示意圖

為了避免這類資料不一致的問題,開發團隊往往被迫拼湊出複雜的變通方法,但這些方法終究會導致錯誤、讓應用程式當機。這些問題全都意味著,在處理節點時,開發者經常必須在可擴展性、可靠性維護或資料一致性之間做出取捨,最終導致每個人的使用體驗都不夠理想。

‍

什麼時候該使用 node-as-a-service?

如果這一切聽起來讓人有點不知所措,別擔心!無論你才剛起步,還是覺得自己在節點問題上花費了太多時間和金錢,node-as-a-service 都可能是適合你的解決方案。

像 Alchemy 這樣的節點供應商負責運行節點,讓你可以專注於開發自己的應用程式。整合大多數供應商的服務其實非常簡單——通常只需要一個 API,就能開始讀寫區塊鏈上的資料。

這代表你不必自己支付伺服器存取費用、滿足硬體需求並維護狀態,而是可以使用Alchemy's Node API……

Alchemy Node API 基礎設施架構圖,用於可擴展的 Ethereum 節點存取

……只需要一行程式碼。

使用 Alchemy API 金鑰連接 Ethereum 的程式碼片段

Alchemy 的 Cortex 引擎透過專屬的分散式系統,確保資料正確性與可靠性,並能隨著你的應用程式一起擴展。

"Using your own node or an error-prone service means wasting hundreds of valuable engineering hours on problems that have nothing to do with your company. Nothing else compares to Alchemy's amazing level of reliability, speed, support." - Alex Atallah, CTO OpenSea

頂尖的區塊鏈公司與專案,包括 OpenSea、Dapper Labs、0x、Royal、Axie Infinity 等數百家企業,都選擇了 Alchemy,正是因為我們極高的可靠性、卓越的客戶服務,以及讓在 Web3 中開發比以往更容易上手的優秀產品組合。

在 Alchemy 上建構的公司標誌,包括 OpenSea 與 Dapper Labs

註冊 Alchemy 帳號,馬上開始開發,不必再為節點問題煩惱!如果你想進一步了解 Alchemy 如何協助你在 Web3 領域的開發之旅,歡迎查看我們的Getting Started With Alchemy文件,或造訪Alchemy support center。

Background gradient

打造區塊鏈魔法

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