節點架構
最後編輯: @hmsc(opens in a new tab), 2024年6月26日
一個以太坊節點由兩個用戶端組成:一個執行用戶端以及一個共識用戶端。
當以太坊使用工作量證明時,一個執行用戶端已足夠運行以太坊全節點。 然而,自從實行權益證明,執行用戶端需要與另外一個軟體同時使用,該軟體稱為「共識用戶端」。
下圖顯示兩種以太坊用戶端的關係。 兩種用戶端與他們各自的點對點 (P2P) 網路相連。 執行用戶端透過其點對點網路廣播交易,來確保能夠管理自己的本機交易池,而共識用戶端透過其點對點網路廣播區塊,來確保共識和鏈增長,因此需要獨立的點對點網路。
此圖借用自 geth.ethereum.org,並使用 Geth 標誌代表執行用戶端;執行用戶端還有其他選項,如 Erigon、Nethermind 和 Besu。
要讓這兩種用戶端架構運作,驗證用戶端必須能夠將大量交易傳送至執行用戶端。 透過在本機執行交易,用戶端驗證交易沒有違反任何以太坊的規則且提議的以太坊狀態更新是否正確。 同樣地,當節點被選為區塊生產者,共識用戶端必須能夠從 Geth 請求各種交易,以添加到新的區塊裡並執行它們來更新全域狀態。 用戶端間的通訊由本機遠端程序呼叫連線使用引遠端程序呼叫(opens in a new tab)處理。
執行用戶端的作用為何?
執行用戶端負責處理交易、廣播交易、狀態管理,以及支援以太坊虛擬機 (EVM)。 然而,它並不負責產生區塊、廣播區塊,或是處理共識邏輯。 這些為共識用戶端的工作範圍。
執行用戶端建立執行有效負載:交易列表、更新的狀態樹,以及其他執行相關的資料。 共識用戶端將執行有效負載加入每一個區塊。 執行用戶端也負責重新執行每個新區塊的交易,確保交易為有效的。 執行交易在執行用戶端的嵌入式電腦上執行,該嵌入式電腦稱為以太坊虛擬機 (EVM)。
執行用戶端還透過遠端程序呼叫方法提供一個連接以太坊的使用者介面,讓使用者可以查詢以太坊區塊鏈、提交交易和部署智慧型合約。 遠端程序呼叫呼叫通常由 Web3js(opens in a new tab)、Web3py(opens in a new tab) 這樣的函式庫處理,或是像是瀏覽器錢包的使用者介面。
總而言之,執行用戶端為:
- 通往以太坊的使用者閘道
- 託管以太坊虛擬機、以太坊狀態,以及交易池的地方。
共識用戶端的作用為何?
共識用戶端處理所有能夠讓節點與以太坊網路保持同步的邏輯。 這包括從對等節點接收區塊並運行分叉選擇演算法,從而確保節點始終遵循累積證明最多的鏈(由驗證者有效餘額加權計算而得)。 與執行用戶端相似,共識用戶端擁有自己的點對點網路並透過該網路共享區塊和證明。
共識用戶端不參與區塊的證明或提議;此由共識用戶端的驗證者(可選附加組件)完成。 沒有驗證者的共識用戶端只會同步鏈頭,使節點能夠保持同步。 這讓使用者可以使用他們的執行用戶端與以太坊交易,並確信位於正確的鏈上。
驗證者
節點營運者可以在存款合約中存入 32 以太幣,以添加一個驗證者到他們的共識用戶端。 驗者者用戶端與共識用戶端捆綁在一起,可以隨時添加進節點。 驗證者處理證明及區塊提議。 它們讓節點可以累積獎勵,或因懲罰或罰沒而失去以太幣。 運行驗證者軟體也讓一個節點有資格被選中來提議新區塊。
節點組成比較
執行用戶端 | 共識用戶端 | 驗證者 |
---|---|---|
透過其點對點網路廣播交易 | 透過其點對點網路廣播區塊及證明 | 提議區塊 |
執行/重新執行交易 | 運行分叉選擇演算法 | 積累獎勵/懲罰 |
驗證傳入狀態的變更 | 追蹤鏈頭 | 做出證明 |
管理狀態及收據樹 | 管理信標狀態(包括共識和執行資訊) | 需要質押 32 以太幣 |
建立執行有效負載 | 追蹤在 RANDAO 中累積的隨機性 | 可被罰沒 |
公開 JSON-RPC 應用程式介面以便與以太坊互動 | 追蹤證明及最終確定 |