跳至主要內容
Change page

節點架構

一個以太坊節點由兩個客戶端組成:一個執行客戶端和一個共識客戶端。為了讓節點能夠提案新區塊,它還必須執行一個驗證者客戶端

當以太坊使用工作量證明 (PoW)時,一個執行客戶端就足以執行一個完整的以太坊節點。然而,自從實施權益證明 (PoS)以來,執行客戶端必須與另一個稱為共識客戶端的軟體一起使用。

下圖顯示了兩個以太坊客戶端之間的關係。這兩個客戶端連接到各自的點對點 (P2P) 網路。需要獨立的 P2P 網路,因為執行客戶端透過其 P2P 網路廣播交易,使它們能夠管理本地的交易池,而共識客戶端則透過其 P2P 網路廣播區塊,從而實現共識和鏈的增長。

Diagram of Ethereum node architecture showing execution and consensus layers

執行客戶端有多種選擇,包括 Erigon、Nethermind 和 Besu

為了讓這種雙客戶端架構運作,共識客戶端必須將打包的交易傳遞給執行客戶端。執行客戶端在本地執行這些交易,以驗證交易沒有違反任何以太坊規則,並且提議的以太坊狀態更新是正確的。當一個節點被選為區塊生產者時,其共識客戶端實例會向執行客戶端請求打包的交易,以將其包含在新區塊中並執行它們來更新全域狀態。共識客戶端透過使用 Engine API (opens in a new tab) 的本地 RPC 連線來驅動執行客戶端。

執行客戶端的作用是什麼?

執行客戶端負責交易驗證、處理和廣播,以及狀態管理和支援以太坊虛擬機 (EVM)。它負責區塊建構、區塊廣播或處理共識邏輯。這些屬於共識客戶端的職責範圍。

執行客戶端建立執行負載——交易列表、更新的狀態樹以及其他與執行相關的資料。共識客戶端將執行負載包含在每個區塊中。執行客戶端還負責重新執行新區塊中的交易,以確保它們是有效的。執行交易是在執行客戶端的嵌入式電腦上完成的,該電腦被稱為以太坊虛擬機 (EVM)

執行客戶端還透過 RPC 方法提供以太坊的使用者介面,讓使用者能夠查詢以太坊區塊鏈、提交交易和部署智能合約。RPC 呼叫通常由 Web3js (opens in a new tab)Web3py (opens in a new tab) 等函式庫或瀏覽器錢包等使用者介面來處理。

總結來說,執行客戶端是:

  • 使用者通往以太坊的閘道
  • 以太坊虛擬機、以太坊狀態和交易池的所在之處。

共識客戶端的作用是什麼?

共識客戶端處理所有使節點能夠與以太坊網路保持同步的邏輯。這包括從對等節點接收區塊並執行分叉選擇演算法,以確保節點始終跟隨累積最多證明(由驗證者有效餘額加權)的鏈。與執行客戶端類似,共識客戶端擁有自己的 P2P 網路,透過該網路分享區塊和證明。

共識客戶端不參與證明或提案區塊——這是由驗證者完成的,驗證者是共識客戶端的可選附加元件。沒有驗證者的共識客戶端只會跟上鏈的頂端,讓節點保持同步。這使得使用者能夠使用他們的執行客戶端與以太坊進行交易,並確信他們處於正確的鏈上。

驗證者

質押並執行驗證者軟體使節點有資格被選中提案新區塊。節點營運者可以透過在存款合約中存入 32 ETH,將驗證者新增到他們的共識客戶端中。驗證者客戶端與共識客戶端捆綁在一起,可以隨時新增到節點中。驗證者處理證明和區塊提案。它還使節點能夠累積獎勵,或透過懲罰或罰沒損失 ETH。

更多關於質押的資訊

節點元件比較

執行客戶端共識客戶端驗證者
透過其 P2P 網路廣播交易透過其 P2P 網路廣播區塊和證明提案區塊
執行/重新執行交易執行分叉選擇演算法累積獎勵/懲罰
驗證傳入的狀態變更追蹤鏈的頂端進行證明
管理狀態和收據樹管理信標狀態(包含共識和執行資訊)需要質押 32 ETH
建立執行負載追蹤 RANDAO 中累積的隨機性(一種為驗證者選擇和其他共識操作提供可驗證隨機性的演算法)可能被罰沒
暴露 JSON-RPC API 以與以太坊互動追蹤合理化與最終確定性

延伸閱讀