入口網路
最後編輯: @vtjl10(opens in a new tab), 2025年1月7日
以太坊是一個由執行以太坊用戶端軟體的電腦所構成的網路。 每一台這類的電腦就是一個所謂的「節點」。 用戶端軟體允許一個節點在以太坊網路上傳送和接收資料,和對照以太坊協定規則驗證資料。 節點保存了許多歷史資料在它們的磁碟存儲裝置裏,並在它們從網路上的其他節點接收到新的封包訊息(又稱區塊)時新增到其中。 有必要經常確認節點擁有的資訊與網路其餘節點的資訊是否一致。 這意味著經營一個節點需要大量的磁碟空間。 某些節點的運作也可能需要大量的隨機存取記憶體。
為規避磁碟儲存問題,可向全節點要求資訊而不是儲存所有資料在節點本身的「輕量級」節點已經被開發出來了。 然而,這意味著輕量級節點不會獨立驗證資訊,而是信任另一個節點。 這也意味著全節點需要承擔額外的工作來服務這些輕量級節點。
入口網路是為以太坊開發的新型網路設計。藉由以小塊方式在整個網路分享必要性的資料,輕量級節點不需要信任或增加全節點負擔的方式,解決資料可用性問題。
更多資訊請參閱節點和用戶端
為什麼我們需要入口網路
以太坊節點儲存以太坊區塊鏈的全部或部分複製資料。 這些區域性的複本被用來驗證交易和確保節點沿著正確的區塊鏈行進。 在區域儲存資料使節點能夠獨立驗證進來的資料有效和正確與否,不需要依賴任何其他實體。
區塊鏈以及相關狀態和收據資料的區域複本佔據節點硬碟相當大的空間。 例如:使用 Geth(opens in a new tab) 搭配共識用戶端來經營一個節點,建議要有 2TB 的硬碟。 使用只儲存比較近期的區塊組的鏈資料的快照同步,Geth 通常佔用約 650GB 的磁碟空間,但以約 14GB/周在成長(你可以定期向下修整節點至 650GB)。
這意味著經營節點的成本是很高的,因為以太坊需要大量的專用磁碟空間。 在以太坊開發藍圖上對這個問題有若干解決方法,包括歷史有效期限、狀態有效期限和無狀態。 然而,這可能要若干年後才有可能實行。 還有不必保存自己的鏈上資料複本的輕量級節點,它們需要向全節點請求資料。 然而,這意味著輕量級節點必須信任全節點會提供真實的資料,並且強調全節點必須提供輕量級節點需要的資料。
入口網路旨在提供一種替代方法,使輕量級節點能夠獲取它們的資料,而無需信任或顯著增加全節點必須完成的工作。 讓整個網路上的以太坊節點可以分享資料,需要引入新的方法。
入口網路如何運作?
以太坊節點有嚴格的協定來定義它們如何相互通訊。 執行用戶端使用一組稱為 DevP2P 的子協定通訊,而共識用戶端則使用一組不同的被稱為 libP2P 的子協定。 它們定義了可以在節點之間傳遞的資料類型。
節點可以經由 JSON-RPC 應用程式介面提供特定資料,這是應用程式和電子錢包與以太坊節點交換資訊的方式。 然而,這些都不是用來提供資料給輕量級用戶端的理想協定。
輕量級用戶端目前無法透過 DevP2P 或 libP2p 請求具體的鏈資料,因爲那些協定只被設計來實現鏈同步和廣播區塊與交易。 輕量級用戶端不想下載這些資訊,因為這樣它們將不再是「輕量」的。
JSON-RPC 應用程式介面也不是輕量級用戶端資料請求的理想選擇,因爲它依賴於與能夠提供資料的特定全節點或中心化遠端程序呼叫提供者的連線。 這意味著輕量級用戶端必須信任特定節點/提供者是誠實的,並且該全節點可能也必須處理來自許多輕量級用戶端的大量請求,這增加了其帶寬要求。
入口網路的重點在於重新思考整個設計,專門為輕便而建立,不受現有以太坊用戶端的設計限制。
入口網路的核心思想是使用分散式雜湊資料表(opens in a new tab)(類似於 Bittorrent),透過輕量 DevP2P 式的點對點去中心化網絡啓用輕量級用戶端所需的資訊,例如歷史資料和目前鏈頭的身份,從而充分利用目前網路堆棧的最佳部分。
這個概念是新增小部分的以太坊全體歷史資料和一些特定節點責任到每一個節點。 然後,尋找儲存所請求特定資料的節點,擷取這些資料,將資料提供給請求。
這倒轉了輕量級節點尋找單獨節點、要求過濾和提供大量資料的正規模式,取而代之的是迅速過濾分別負責小量資料的大量網路節點。
目標是讓輕量級入口用戶端的去中心化網路能夠:
- 追蹤鏈頭
- 同步近期和歷史鏈資料
- 擷取狀態資料
- 廣播交易
- 使用以太坊虛擬機執行交易
這個網路設計的優勢是:
- 降低對中心化提供者的依存
- 降低網際網路頻寬的使用
- 同步處理減到最少或零
- 可存取資源有限的裝置(<1 GB RAM,<100 MB 磁碟空間,1 個 CPU)
下圖顯示可由入口網路提供的現存用戶端功能,如此讓使用者能在低資源裝置上存取這些功能。
入口網路
信標輕量用戶端 | 狀態網路 | 交易廣播 | 歷史網路 |
---|---|---|---|
輕量信標鏈 | 帳戶與合約儲存 | 輕量記憶體池 | 區塊頭 |
協議資料 | 區塊體 | ||
收據 |
預設的用戶端多樣性
入口網路開發者最初也決定建立三種不同的入口網路用戶端設計。
入口網路用戶端如下:
- Trin(opens in a new tab):以 Rust 編寫
- Fluffy(opens in a new tab):以 Nim 編寫
- Ultralight(opens in a new tab):以 Typescript 編寫
- Shisui(opens in a new tab):以 Go 語言編寫
有多個獨立用戶端安裝啟用,增強了以太坊網路的回復力和去中心化。
假如一個用戶端遭受問題或漏洞,其他用戶端能繼續順暢運作,可以防止單點失靈。 此外,多樣化的用戶端安裝啟用能促進創新和競爭,驅使改善,和降低在這生態系統的單一文化風險。