以太坊存儲方案路线圖:挑战與機遇共存

2024-04-15 15:53 極客 Web3


來源:極客 Web3

摘要:

· 自EIP-4844之後,以太坊網絡的數據吞吐量與存儲壓力日益增長,不斷增長的存儲需求爲以太坊節點帶來了巨大挑战。爲了降低存儲壓力,部分以太坊客戶端對本地存放的以太坊歷史數據進行刪剪,不同的全節點在存儲行爲上的一致性被逐漸瓦解。

· 爲了確保所有以太坊客戶端能在行爲上達成一致,EIP-4444 EIP-4844 將歷史數據刪減行爲進行了標准化,將在未來成爲以太坊節點的標配。

· 因此,如果要重放歷史數據來還原最新的 Layer1 或 Layer2 狀態,要依賴於中心化的、以太坊協議外的服務設施,這促使人們探索更去中心化的、與以太坊相一致的存儲解決方案

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

· EthStorage 是一個針對 EIP-4844 BLOBs數據的激勵模塊化存儲網絡。爲了存儲BLOB,用戶可以調用 L1上的 存儲合約,以ETH作爲存儲手續費,在鏈上記錄下BLOB的哈希值 。隨着時間的推移,存儲費用將逐漸分配給提供鏈下 BLOB 存儲證明的存儲服務商。

·  目前EthStorage 測試網正在以太坊 Sepolia 測試網上運行,多名社區參與者已成功證明了他們的本地存儲狀況。未來的計劃包括开發一個去中心化的以太坊狀態網絡、實現動態大小數據的存儲證明,並可以直接從瀏覽器以去中心化的方式訪問EthStorage網絡。

致謝:感謝來自以太坊基金會的 Piper Merriam、Polychain 的 Karthik Raju、EthStorage 的 Qiang Zhu 對本文提供的反饋。

背景:

2023年10月22日,著名的 Go-Ethereum(Geth)开發負責人 Péter Szilágyi 在 Twitter 上表達了他對以太坊數據存儲方案的擔憂。他指出,雖然 Geth 客戶端保留了所有歷史數據,但 Nethermind 和 Besu 等其他類型的以太坊客戶端,可以配置刪除某些以太坊歷史數據(例如歷史區塊)。這會讓部分客戶端節點的行爲與其他客戶端不一致,對Geth客戶端運行者來說很不公平。上述話題隨即引發了關於以太坊路线圖中存儲方案的激烈討論。

存儲的挑战

爲什么 Nethermind 和 Besu 允許客戶端運行者刪減本地的歷史數據?這一決定反映出的問題是什么?

從我們的角度來看,有兩個主要原因:

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

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

第一個原因源於以太坊客戶端不斷上升的存儲需求。下面的餅圖展示了截至2023 年 12 月 13 日時,區塊高度爲18,779,761下,一個新 Geth 節點的存儲分布情況。

如圖所示:

  • 總存儲大小:925.39 GB

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

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

第二個原因是,以太坊節點缺乏存儲歷史區塊的協議內激勵或懲罰。雖然該協議提倡節點存儲所有歷史數據,但卻未能提供任何機制來鼓勵存儲或懲罰違規的行爲。節點愿意存儲並對外提供歷史數據的提取權限,更多出於利他主義,而不是因爲有激勵措施。

當然,客戶端運行者可以自由地刪除或修改所有歷史數據,而不會受到任何懲罰。相比之下,Validator節點必須在本地維護並更新完整的狀態,以防止因提議/投票支持無效區塊而被Slash。

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

圖示: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數據,該數字遠遠超出大多數節點的存儲能力

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

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

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

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

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

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

節點刪除掉以太坊主網歷史數據,也會導致以太坊 L2出現問題,即新加入的Layer2節點,無法通過重放 Layer2全部歷史數據的方法,同步至當前的最新狀態。此外,由於 L1 節點不維護 L2 狀態,L2 的“snap sync”方法無法根據Layer1區塊直接派生出最新的 Layer2 狀態,這違反了Layer2繼承以太坊安全所需的重要假設。

預計的解決方案將依賴 Infura / Etherscan / L2 項目本身的第三方服務來存儲Layer2歷史數據或狀態副本,這是通過協議外、間接激勵實現的中心化解決方案。

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

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

  • 是否有可能找到給予節點直接激勵、得到以太坊網絡本身保障(例如,靠L1合約實現)的解決方案?

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

解決方案

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

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

Portal 網絡的一個重要特性是。其輕量級的運行設計以及與資源受限設備的兼容性。它可以運行在具有幾MB存儲空間和低內存的節點之上,從而促進去中心化。即使是手機或 Raspberry Pi 設備也有可能加入該網絡,爲解決以太坊DA問題做出貢獻。

Portal 網絡的开發與以太坊客戶端多樣性的理念相一致,客戶端採用 Rust、JavaScript 和 Nim 編寫。信標網絡和歷史網絡已可供使用,而狀態網絡正在積極开發中。值得注意的是,Portal 網絡並不爲數據存儲提供直接激勵。

圖示:具有 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 而設計的。

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 之外,探索高級存儲證明對於解決動態大小數據(例如歷史區塊甚至狀態對象等)也勢在必行。开發復雜的算法可以增強存儲解決方案的適應性。

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

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:以太坊存儲方案路线圖:挑战與機遇共存

地址:https://www.sgitmedia.com/article/28240.html

相關閱讀: