以太坊存儲路線圖:挑戰與機遇



不斷增長的存儲需求為以太坊節點帶來了巨大挑戰。

撰文:EthStorage

摘要

  • 不斷增長的存儲需求為以太坊節點帶來了巨大挑戰。

  • 由於存儲限制,一些客戶端已經開始對歷史數據進行刪剪,導致網路中全節點之間的存儲行為不一致。

  • 為了確保所有客戶端的一致性,歷史數據刪剪正在EIP-4444EIP-4844中被標準化。

  • 因此,通過重播歷史數據來恢復最新的 L1 或 L2 狀態需要中心化的、協定外的服務,促使人們探索更加去中心化的、與以太坊一致的解決方案

  • 以太坊 Portal 網路是一個羽量級、去中心化的 P2P 網路,適用於包括歷史數據在內的所有類型的以太坊數據。它專為資源受限的設備而設計,並提供以太坊 JSON-RPC 服務。歷史網路和信標鏈網路幾乎已經準備就緒。

  • EthStorage 網路是一個針對 EIP-4844 BLOBs 數據的激勵模塊化存儲網路。為了存儲 BLOB,用戶調用 L1 存儲合約 put() 方法,提供 ETH 作為存儲費用,並在鏈上記錄 BLOB 哈希值 。隨著時間的推移,存儲費用將逐漸分配給提交鏈下 BLOB 存儲證明的存儲提供商。EthStorage 測試網正在以太坊 Sepolia 測試網上運行,多名社區參與者已成功證明瞭他們的本地存儲。

  • 未來的計劃包括開發一個去中心化的以太坊狀態網路、實現動態大小數據的存儲證明,以及直接從瀏覽器進行去中心化訪問。

致謝:感謝來自 EF 的 Piper Merriam、Polychain 的 Karthik Raju、EthStorage 的 Qiang 對本文提供的反饋。

背景

2023 年 10 月 22 日,著名的 Go-Ethereum(Geth)開發負責人 Péter Szilágyi 在 Twitter 上表達了他的深切擔憂。他指出,雖然 Geth 客戶端保留了所有歷史數據,但 Nethermind 和 Besu 等其他以太坊客戶端可以配置刪除某些歷史以太坊數據(例如歷史區塊和塊頭)。這使得所有客戶端的行為不一致,並對 Geth 不公平。這引發了圍繞以太坊路線圖中以太坊存儲問題的激烈討論和辯論。

以太坊存儲路線圖:挑戰與機遇插图1

存儲的挑戰

為什麼 Nethermind 和 Besu 選擇停止存儲歷史數據?這一決定背後的問題是什麼?從我們的角度來看,有兩個主要原因:

  • 以太坊客戶端的存儲要求變得越來越高

  • 存儲以太坊歷史數據沒有任何協定內的激勵或懲罰

第一個原因源於運行以太坊客戶端不斷上升的存儲需求。為了深入瞭解具體需求,下面的餅圖展示了截至 2023 年 12 月 13 日第 18,779,761 塊時一個新 Geth 節點的存儲分佈情況。

以太坊存儲路線圖:挑戰與機遇插图3

如圖所示:

  • 總存儲大小:925.39 GB

  • 歷史數據(區塊 / 交易收據):約 628.69 GB

  • Merkle Patricia Trie (MPT) 中的狀態數據:約 269.74 GB

第二個原因是缺乏存儲歷史區塊的協定內激勵或懲罰。雖然該協定要求節點存儲所有歷史數據,但卻未能提供任何機制來鼓勵存儲或懲罰違規的行為。節點存儲和共享歷史數據變得純粹出於利他主義,客戶端運行者可以自由地刪除或修改所有歷史數據,而不會受到任何懲罰。相比之下,Validator 節點必須在本地維護並更新完整的狀態,以防止因提議 / 投票支持無效區塊而導致的 Slash。

因此,當存儲成本成為節點的重大負擔時,一些節點運營商選擇刪除歷史數據就不足為奇。在沒有歷史數據的情況下,節點客戶端可以顯著降低存儲成本,將其從大約 1TB 減少到 300GB 左右。

以太坊存儲路線圖:挑戰與機遇插图5

圖示:Nethermined 配置運行沒有歷史區塊的節點 — 目前可節省約 460GB 的存儲成本

隨著即將到來的以太坊數據可用性(DA)升級,存儲挑戰將會加劇。全面擴容以太坊 DA 的道路始於 DenCun 升級中的 EIP-4844,它引入了一個固定大小的二進制大對象 (BLOB) ,和一個被稱為 blobGasPrice 的獨立費用模型。每個 BLOB 設置為 128KB,EIP-4844 允許每個區塊最多包含 6 個 BLOB。為了對數據吞吐量進行擴容,以太坊計劃採用 1D Reed-Solomon 代碼,最初允許每個區塊有 32 個 BLOB,並在完全擴容時達到每個區塊 256 個 BLOB。

如果以太坊 DA 以全容量運行(每個塊 256 個 BLOB),以太坊 DA 網路預計一年將接收大約 80 TB 的 DA 數據,該數位遠遠超出大多數節點的存儲能力。

以太坊存儲路線圖:挑戰與機遇插图7

以太坊存儲路線圖及其後果

以太坊存儲路線圖:挑戰與機遇插图9

Vitalik 發佈的以太坊路線圖推文,提到了 Purge 主要涉及存儲方面的內容

不斷上升的存儲成本引起了以太坊生態研究人員的關注。為了解決這個問題並確保所有客戶端的一致性,研究人員正在制定一些提案來明確刪除歷史的存儲。兩個主要提案是:

  1. EIP-4444:限制執行客戶端中的歷史數據:該提案允許客戶端刪除超過一年的歷史區塊。假設平均區塊大小為 100K,歷史塊數據上限約為 250 GB(100K * (3600 * 24 * 365) / 12,假設區塊時間 = 12 秒)。

  2. EIP-4844:分片 BLOB 交易:EIP-4844 丟棄超過 18 天的 BLOB。與 EIP-4444 相比,這是一種更激進的方法,將歷史 BLOB 大小限制在 100 GB 左右((18 * 3600 * 24) * 128K * 6 / 12,假設區塊時間 = 12 秒)。

刪除所有客戶端的歷史數據會產生什麼後果?主要的一個問題是新節點無法通過「full sync」模式來同步到最新狀態,「full sync」是一種將交易從創世區塊執行到最新區塊的同步。相應地,我們必須採取「snap sync」或「state sync」來直接同步來自以太坊節點的最新狀態。這種方法已在 Geth 中實現,並作為默認同步運行。

同樣地,這個後果也適用於所有 L2,即 L2 的新節點無法通過重放 L2 創世到最新的 L2 區塊,來完全同步以太坊 L2 創世的最新狀態。此外,由於 L1 節點不維護 L2 狀態,L2 的「snap sync」方法無法從 L1 中派生出最新的 L2 狀態,這違反了繼承以太坊安全保證的重要 L2 假設。預計的解決方案將依賴 Infura / Etherscan / L2 專案本身等第三方服務來存儲歷史 L2 數據或狀態副本。這是通過協定外、間接激勵實現的中心化的解決方案。

我們要探討的核心問題是:

  • 我們能否在存儲和訪問方面找到更好的去中心化解決方案?

  • 是否有可能通過直接激勵機制的、與以太坊一致的(例如,在 L1 合約之上)的解決方案?

  • 在這一切的基礎上,我們是否可以為以太坊存儲路線提供一種完全去中心化的、協定內直接激勵的解決方案?

解決方案

解決方案 1:以太坊 Portal 網路

以太坊 Portal 網路是一個羽量級、去中心化的訪問網路,用於連接到以太坊協定。它提供例如 eth_call,eth_getBlockByNumber 等以太坊 JSON-RPC 接口,它將 JSON-RPC 請求轉換為對分佈式哈希表(DHT) 的 P2P 請求,類似於 IPFS 網路。與允許存儲任何數據類型且容易受到垃圾數據影響的 IPFS 不同,Portal P2P 網路專門託管以太坊數據,如歷史區塊頭和區塊交易數據。這是通過 Portal 網路內置的輕客戶端驗證技術來實現的。

Portal 網路的一個重要特性是其羽量級運行設計以及與資源受限設備的相容性。它可以運行在具有幾兆存儲空間和低內存的節點之上,從而促進去中心化。即使是手機或 Raspberry Pi 設備也有可能加入網路並有為以太坊數據的可用性做出貢獻。

Portal 網路的開發與以太坊客戶端多樣性理念相一致,客戶端採用 Rust、JavaScript 和 Nim 編寫。信標網路和歷史網路已可供使用,而狀態網路正在積極開發中。值得注意的是,Portal 網路並不為數據存儲提供直接激勵 — — 網路中的所有節點都是利他的方式運行的。

以太坊存儲路線圖:挑戰與機遇插图11

圖示:具有 100MB 存儲限制的 Portal 網路 Rust 客戶端 (Trin) 在運行中

解決方案 2:EthStorage 網路

EthStorage 網路是一個去中心化的激勵存儲網路,專門用於存儲 EIP-4844 BLOB,並獲得 ESP 專案的資助。

  • 最小信任:與需要中心化數據橋的現有解決方案不同,EthStorage 依賴於以太坊的共識和無需許可的 EthStorage 存儲節點的 1/m 信任模型。存儲 BLOB 的過程是這樣的:用戶簽署一個攜帶 BLOB 的交易,調用存儲合約的put(key, blob_idx)方法。然後,存儲合約將記錄 BLOB 哈希在鏈上。之後存儲提供商將直接從以太坊 DA 網路下載並存儲 BLOB,從而繞過數據橋問題。

  • 存儲成本與激勵相一致:當調用put()方法時,交易必鬚髮送存儲費(通過msg.value)並存入合約中。在成功鏈下存儲節點提交並驗證存儲證明後,這個存儲費用將隨著時間的推移逐漸分配給存儲節點。與現有的向出快者 (proposer) 支付一次性存儲費的以太坊存儲費模型相比,隨著時間的推移支付的存儲費遵循貼現現金流模型 — — 假設隨著時間的推移,存儲成本將相對於 ETH 價格而降低。EthStorage 引入的這一重大創新使得費用和存儲節點的存儲貢獻保持一致

  • 存儲證明:存儲證明是受到數據可用性抽樣的啟發,而 EthStorage 中的採樣是針對一段時間內的保存的 BLOB。為了有效地驗證鏈上採樣,EthStorage 充分利用了智慧合約和最新的 SNARK 技術發展。

  • 無許可操作:EthStorage 中的任何存儲節點只要存儲數據並定期在鏈上提交存儲證明,都可以獲得報酬。

從模塊化區塊鏈的角度來看,EthStorage 充當以太坊存儲 L2,但它收取的是存儲費而不是交易費。通過在鏈上索引 BLOB 哈希,EthStorage 是一個以太坊模塊化存儲層,提升存儲可擴展性及降低成本(目標約為 1000 倍)。

在開發方面,EthStorage 已經與以太坊 Sepolia 測試網上的 EIP-4844 集成。我們已對 EthStorage 和以太坊 Sepolia 測試網進行壓力測試,包括將大約數百 GB 的 BLOB 寫入 EthStorage。超過 100 名社區參與者加入網路並成功證明瞭他們的本地存儲。

EthStorage 網路的主要優勢在於在以太坊之上提供去中心化的直接激勵 — — 就我們目前的知識而言,這是一項開創性的功能。然而,該網路的侷限性在於它是專門為固定大小的 BLOB 而設計的。

以太坊存儲路線圖:挑戰與機遇插图13

EthStorage 上以太坊 Sepolia 測試網的看板

展望未來

儘管以太坊存儲還未受到主要關注,但其在以太坊生態系統中具有重要意義。隨著以太坊網路的快速增長,以太坊數據的存儲和可訪問性成為關鍵挑戰。Portal 網路和 EthStorage 網路還處於早期階段,還有很多重要的長期的發展方向需要關注:

  • 去中心化低延遲訪問的以太坊狀態數據網絡。以去中心化且可驗證的方式訪問以太坊狀態是一項關鍵但具有挑戰性的任務。使用傳統的 DHT 網路模型,查詢帳戶資訊通常需要對存儲在不同 P2P 節點中的內部 trie 節點進行多次查詢。這往往會導致相當長時間的延遲。如何利用狀態樹的結構來加速訪問是關鍵所在。以太坊 Portal 網路即將推出的狀態網路,正是旨在解決這個問題。

  • Portal 網路與 EthStorage 網路的集成:Portal 網路可以無縫擴展以支持 BLOB 數據。EthStorage 團隊已部分實現了這個功能。下一步進展,是將這些網路統一起來,提供一個去中心化 JSON-RPC 網路,能夠通過合約來對 BLOBs 可編程訪問 。通過將合約中的應用邏輯與 EthStorage 提供的規模化 BLOB 存儲相結合,我們可以在以太坊上啟用新的 dApps,例如動態的去中心化網站(例如去中心化的 Twitter/YouTube/Wikipedia 等)。

  • 瀏覽器的去中心化訪問:與訪問 IPFS 網路中的數據的 ipfs:// 協定類似,web3 行業需要一個以太坊原生訪問協定的來支持瀏覽器直接訪問,以釋放以太坊豐富數據的巨大潛力。這些數據涵蓋了廣泛的領域,從代幣所有權和賬戶餘額到 NFT 圖像和動態去中心化網站,所有這些都得益於智慧合約和未來以太坊存儲的功能所實現。在這個領域,ERC-4804/6860 定義的 web3:// 協定目前正在積極開發和推廣,以實現這一目標。

  • 動態大小數據的高級存儲證明:除了固定 BLOB 之外,探索高級存儲證明對於解決動態大小數據(例如歷史區塊甚至狀態對象等)也勢在必行。開發複雜的算法可以增強存儲解決方案的適應性。

在我們的追求中,我們希望通過這些努力,共同為以太坊路線圖做出貢獻,為未來以太坊生態系統的去中心化存儲解決方案奠定基礎。

聯系郵箱:0xniumao@gmail.com