· 自EIP-4844之后,以太坊網(wǎng)絡的數(shù)據(jù)吞吐量與存儲壓力日益增長,不斷增長的存儲需求為以太坊節(jié)點帶來了巨大挑戰(zhàn)。為了降低存儲壓力,部分以太坊客戶端對本地存放的以太坊歷史數(shù)據(jù)進行刪剪,不同的全節(jié)點在存儲行為上的一致性被逐漸瓦解。
· 為了確保所有以太坊客戶端能在行為上達成一致,EIP-4444 和 EIP-4844 將歷史數(shù)據(jù)刪減行為進行了標準化,將在未來成為以太坊節(jié)點的標配。
· 因此,如果要重放歷史數(shù)據(jù)來還原最新的 Layer1 或 Layer2 狀態(tài),要依賴于中心化的、以太坊協(xié)議外的服務設施,這促使人們探索更去中心化的、與以太坊相一致的存儲解決方案
· 以太坊 Portal 網(wǎng)絡是一個輕量級、去中心化的P2P網(wǎng)絡,適用于包括歷史數(shù)據(jù)在內(nèi)的所有類型的以太坊數(shù)據(jù)。它專為資源受限的設備而設計,并提供以太坊JSON-RPC服務。歷史網(wǎng)絡和信標鏈網(wǎng)絡幾乎已經(jīng)準備就緒。
· EthStorage 是一個針對 EIP-4844 BLOBs數(shù)據(jù)的激勵模塊化存儲網(wǎng)絡。為了存儲BLOB,用戶可以調用 L1上的 存儲合約,以ETH作為存儲手續(xù)費,在鏈上記錄下BLOB的哈希值 。隨著時間的推移,存儲費用將逐漸分配給提供鏈下 BLOB 存儲證明的存儲服務商。
·? 目前EthStorage 測試網(wǎng)正在以太坊 Sepolia 測試網(wǎng)上運行,多名社區(qū)參與者已成功證明了他們的本地存儲狀況。未來的計劃包括開發(fā)一個去中心化的以太坊狀態(tài)網(wǎng)絡、實現(xiàn)動態(tài)大小數(shù)據(jù)的存儲證明,并可以直接從瀏覽器以去中心化的方式訪問EthStorage網(wǎng)絡。
致謝:感謝來自以太坊基金會的 Piper Merriam、Polychain 的 Karthik Raju、EthStorage 的 Qiang Zhu 對本文提供的反饋。
2023年10月22日,著名的 Go-Ethereum(Geth)開發(fā)負責人 Péter Szilágyi 在 Twitter 上表達了他對以太坊數(shù)據(jù)存儲方案的擔憂。他指出,雖然 Geth 客戶端保留了所有歷史數(shù)據(jù),但 Nethermind 和 Besu 等其他類型的以太坊客戶端,可以配置刪除某些以太坊歷史數(shù)據(jù)(例如歷史區(qū)塊)。這會讓部分客戶端節(jié)點的行為與其他客戶端不一致,對Geth客戶端運行者來說很不公平。上述話題隨即引發(fā)了關于以太坊路線圖中存儲方案的激烈討論。
為什么 Nethermind 和 Besu 允許客戶端運行者刪減本地的歷史數(shù)據(jù)?這一決定反映出的問題是什么?
從我們的角度來看,有兩個主要原因:
以太坊客戶端的存儲要求變得越來越高。
存儲以太坊歷史數(shù)據(jù)沒有任何協(xié)議內(nèi)的激勵或懲罰。
第一個原因源于以太坊客戶端不斷上升的存儲需求。下面的餅圖展示了截至2023 年 12 月 13 日時,區(qū)塊高度為18,779,761下,一個新 Geth 節(jié)點的存儲分布情況。
如圖所示:
總存儲大?。?25.39 GB
歷史數(shù)據(jù)(區(qū)塊/交易收據(jù)):約 628.69 GB
Merkle Patricia Trie (MPT) 中的狀態(tài)數(shù)據(jù):約 269.74 GB
第二個原因是,以太坊節(jié)點缺乏存儲歷史區(qū)塊的協(xié)議內(nèi)激勵或懲罰。雖然該協(xié)議提倡節(jié)點存儲所有歷史數(shù)據(jù),但卻未能提供任何機制來鼓勵存儲或懲罰違規(guī)的行為。節(jié)點愿意存儲并對外提供歷史數(shù)據(jù)的提取權限,更多出于利他主義,而不是因為有激勵措施。
當然,客戶端運行者可以自由地刪除或修改所有歷史數(shù)據(jù),而不會受到任何懲罰。相比之下,Validator節(jié)點必須在本地維護并更新完整的狀態(tài),以防止因提議/投票支持無效區(qū)塊而被Slash。
因此,當存儲成本成為節(jié)點的重大負擔時,一些節(jié)點運營商選擇刪除歷史數(shù)據(jù)就不足為奇。在沒有歷史數(shù)據(jù)的情況下,節(jié)點客戶端可以顯著降低存儲成本,將占用的存儲空間從大約 1TB 減少到 300GB 左右。
圖示:Nethermined 配置運行沒有歷史區(qū)塊的節(jié)點 - 目前可節(jié)省約 460GB 的存儲成本
隨著即將到來的以太坊數(shù)據(jù)可用性(DA)升級,存儲挑戰(zhàn)將會加劇。全面擴容以太坊 DA 的道路始于 DenCun 升級中的 EIP-4844,它引入了一個固定大小的二進制大對象 (BLOB) ,和一個被稱為 blobGasPrice 的獨立費用模型。每個 BLOB 設置為 128KB,EIP-4844 實行后,每個區(qū)塊最多包含6個BLOB。為了對數(shù)據(jù)吞吐量進行擴容,以太坊計劃采用 1D Reed-Solomon 糾刪碼,最初允許每個區(qū)塊有 32 個 BLOB,并在完全擴容時達到每個區(qū)塊 256 個 BLOB 的量級。
如果以太坊 DA 以全容量運行(每個塊 256 個 BLOB),以太坊 DA 網(wǎng)絡預計一年將接收大約 80 TB 的DA數(shù)據(jù),該數(shù)字遠遠超出大多數(shù)節(jié)點的存儲能力。
Vitalik 發(fā)布的以太坊路線圖推文,提到了 Purge 主要涉及存儲方面的內(nèi)容。
不斷上升的存儲成本引起了以太坊生態(tài)研究人員的關注。為了解決這個問題并確保所有客戶端的一致性,研究人員正在制定一些提案來明確刪除以太坊客戶端的歷史數(shù)據(jù)。兩個主要提案是:
· EIP-4444:限制執(zhí)行客戶端中的歷史數(shù)據(jù):該提案允許客戶端刪除超過一年的過往區(qū)塊。假設平均區(qū)塊大小為 100K,歷史塊數(shù)據(jù)上限約為 250 GB(100K * (3600 * 24 * 365) / 12,假設區(qū)塊時間 = 12 秒)。
· EIP-4844:分片 BLOB 交易:丟棄超過 18 天的 BLOB數(shù)據(jù)。與 EIP-4444 相比,這是一種更激進的方法,將歷史 BLOB 大小限制在 100 GB 左右((18 * 3600 * 24) * 128K * 6 / 12,假設區(qū)塊時間 = 12 秒)。
刪除所有客戶端的歷史數(shù)據(jù)會產(chǎn)生什么后果?主要的一個問題是,新節(jié)點無法通過“full sync”模式來同步到最新狀態(tài), “full sync”是一種將歷史數(shù)據(jù)重放,從創(chuàng)世區(qū)塊同步到最新區(qū)塊的數(shù)據(jù)同步方案。相應地,我們必須采取“snap sync”或“state sync”來直接同步以太坊節(jié)點的最新狀態(tài)。這種方法已在 Geth 中實現(xiàn),并作為默認的同步運行方式。
節(jié)點刪除掉以太坊主網(wǎng)歷史數(shù)據(jù),也會導致以太坊 L2出現(xiàn)問題,即新加入的Layer2節(jié)點,無法通過重放 Layer2全部歷史數(shù)據(jù)的方法,同步至當前的最新狀態(tài)。此外,由于 L1 節(jié)點不維護 L2 狀態(tài),L2 的“snap sync”方法無法根據(jù)Layer1區(qū)塊直接派生出最新的 Layer2 狀態(tài),這違反了Layer2繼承以太坊安全所需的重要假設。
預計的解決方案將依賴 Infura / Etherscan / L2 項目本身的第三方服務來存儲Layer2歷史數(shù)據(jù)或狀態(tài)副本,這是通過協(xié)議外、間接激勵實現(xiàn)的中心化解決方案。
我們要探討的核心問題是:
我們能否在存儲和訪問方面找到更好的去中心化解決方案?
是否有可能找到給予節(jié)點直接激勵、得到以太坊網(wǎng)絡本身保障(例如,靠L1合約實現(xiàn))的解決方案?
在這一切的基礎上,我們是否可以為以太坊存儲路線提供一種完全去中心化的、協(xié)議內(nèi)直接激勵的解決方案?
以太坊 Portal 網(wǎng)絡是一個輕量級、去中心化的網(wǎng)絡,用于連接到以太坊協(xié)議。它提供eth_call,eth_getBlockByNumber等以太坊 JSON-RPC 接口,它將 JSON-RPC 請求轉換為對分布式哈希表(DHT)的 P2P 請求,類似于 IPFS 網(wǎng)絡。與允許存儲任何數(shù)據(jù)類型且容易受到垃圾數(shù)據(jù)影響的 IPFS 不同,Portal P2P 網(wǎng)絡專門托管以太坊數(shù)據(jù),如歷史區(qū)塊頭和交易數(shù)據(jù),這是通過 Portal 網(wǎng)絡內(nèi)置的輕客戶端驗證技術來實現(xiàn)的。
Portal 網(wǎng)絡的一個重要特性是。其輕量級的運行設計以及與資源受限設備的兼容性。它可以運行在具有幾MB存儲空間和低內(nèi)存的節(jié)點之上,從而促進去中心化。即使是手機或 Raspberry Pi 設備也有可能加入該網(wǎng)絡,為解決以太坊DA問題做出貢獻。
Portal 網(wǎng)絡的開發(fā)與以太坊客戶端多樣性的理念相一致,客戶端采用 Rust、JavaScript 和 Nim 編寫。信標網(wǎng)絡和歷史網(wǎng)絡已可供使用,而狀態(tài)網(wǎng)絡正在積極開發(fā)中。值得注意的是,Portal 網(wǎng)絡并不為數(shù)據(jù)存儲提供直接激勵。
圖示:具有 100MB 存儲限制的 Portal 網(wǎng)絡Rust客戶端(Trin)在運行中
EthStorage 網(wǎng)絡是一個去中心化的激勵存儲網(wǎng)絡,專門用于存儲 EIP-4844 BLOB,并獲得 ESP 項目的資助。
· 最小信任:與需要中心化數(shù)據(jù)橋的現(xiàn)有解決方案不同,EthStorage 依賴于以太坊的共識和無需許可的 EthStorage 存儲節(jié)點的 1/m 信任模型。存儲 BLOB 的過程是這樣的:用戶簽署一個攜帶 BLOB 的交易,調用存儲合約的put(key, blob_idx) 方法。然后,存儲合約將記錄 BLOB 哈希在鏈上。之后存儲提供商將直接從以太坊 DA 網(wǎng)絡下載并存儲 BLOB,從而繞過數(shù)據(jù)橋問題。
·?存儲成本與激勵相一致:當調用 put() 方法時,交易必須發(fā)送存儲費(通過 msg.value)并存入合約中。在成功鏈下存儲節(jié)點提交并驗證存儲證明后,這個存儲費用將隨著時間的推移逐漸分配給存儲節(jié)點。與現(xiàn)有的向出塊者(proposer)支付一次性存儲費的以太坊存儲費模型相比,隨著時間的推移,支付的存儲費遵循貼現(xiàn)現(xiàn)金流模型——假設隨著時間的推移,存儲成本將相對于 ETH價格而降低。EthStorage 引入的這一重大創(chuàng)新使得費用和存儲節(jié)點的存儲貢獻保持一致。
·?存儲證明:存儲證明是受到數(shù)據(jù)可用性抽樣的啟發(fā),而 EthStorage 中的采樣是針對一段時間內(nèi)的保存的BLOB。為了有效地驗證鏈上采樣,EthStorage 充分利用了智能合約和最新的 SNARK 技術發(fā)展。
·?無許可操作:EthStorage 中的任何存儲節(jié)點只要存儲數(shù)據(jù)并定期在鏈上提交存儲證明,都可以獲得報酬。
從模塊化區(qū)塊鏈的角度來看,EthStorage 充當以太坊存儲L2,但它收取的是存儲費而不是交易費。通過在鏈上索引 BLOB 哈希,EthStorage 是一個以太坊模塊化存儲層,提升存儲可擴展性及降低成本(目標約為 1000 倍)。
在開發(fā)方面,EthStorage 已經(jīng)與以太坊 Sepolia 測試網(wǎng)上的 EIP-4844 集成。我們已對 EthStorage 和以太坊 Sepolia 測試網(wǎng)進行壓力測試,包括將大約數(shù)百 GB 的 BLOB 寫入 EthStorage。超過 100 名社區(qū)參與者加入網(wǎng)絡并成功證明了他們的本地存儲。
EthStorage 網(wǎng)絡的主要優(yōu)勢在于在以太坊之上提供去中心化的直接激勵——就我們目前的知識而言,這是一項開創(chuàng)性的功能。然而,該網(wǎng)絡的局限性在于它是專門為固定大小的 BLOB 而設計的。
EthStorage 上以太坊 Sepolia 測試網(wǎng)的看板
盡管以太坊存儲還未受到主要關注,但其在以太坊生態(tài)系統(tǒng)中具有重要意義。隨著以太坊網(wǎng)絡的快速增長,以太坊數(shù)據(jù)的存儲和可訪問性成為關鍵挑戰(zhàn)。Portal 網(wǎng)絡和 EthStorage 網(wǎng)絡還處于早期階段,還有很多重要的長期的發(fā)展方向需要關注:
去中心化低延遲訪問的以太坊狀態(tài)數(shù)據(jù)網(wǎng)絡:以去中心化且可驗證的方式訪問以太坊狀態(tài)是一項關鍵但具有挑戰(zhàn)性的任務。使用傳統(tǒng)的 DHT 網(wǎng)絡模型,查詢帳戶信息通常需要對存儲在不同 P2P 節(jié)點中的內(nèi)部 trie 節(jié)點進行多次查詢。這往往會導致相當長時間的延遲。如何利用狀態(tài)樹的結構來加速訪問是關鍵所在。以太坊 Portal 網(wǎng)絡即將推出的狀態(tài)網(wǎng)絡,正是旨在解決這個問題。
Portal 網(wǎng)絡與 EthStorage 網(wǎng)絡的集成:Portal 網(wǎng)絡可以無縫擴展以支持BLOB數(shù)據(jù)。EthStorage 團隊已部分實現(xiàn)了這個功能。下一步進展,是將這些網(wǎng)絡統(tǒng)一起來,提供一個去中心化JSON-RPC 網(wǎng)絡,能夠通過合約來對 BLOBs可編程訪問 。通過將合約中的應用邏輯與 EthStorage 提供的規(guī)?;?BLOB 存儲相結合,我們可以在以太坊上啟用新的 dApps,例如動態(tài)的去中心化網(wǎng)站(例如去中心化的 Twitter/YouTube/Wikipedia 等)。
瀏覽器的去中心化訪問:與訪問 IPFS 網(wǎng)絡中的數(shù)據(jù)的 ipfs:// 協(xié)議類似,web3行業(yè)需要一個以太坊原生訪問協(xié)議的來支持瀏覽器直接訪問,以釋放以太坊豐富數(shù)據(jù)的巨大潛力。這些數(shù)據(jù)涵蓋了廣泛的領域,從代幣所有權和賬戶余額到 NFT 圖像和動態(tài)去中心化網(wǎng)站,所有這些都得益于智能合約和未來以太坊存儲的功能所實現(xiàn)。在這個領域,ERC-4804/6860 定義的 web3://協(xié)議目前正在積極開發(fā)和推廣,以實現(xiàn)這一目標。
動態(tài)大小數(shù)據(jù)的高級存儲證明:除了固定 BLOB 之外,探索高級存儲證明對于解決動態(tài)大小數(shù)據(jù)(例如歷史區(qū)塊甚至狀態(tài)對象等)也勢在必行。開發(fā)復雜的算法可以增強存儲解決方案的適應性。
在我們的追求中,我們希望通過這些努力,共同為以太坊路線圖做出貢獻,為未來以太坊生態(tài)系統(tǒng)的去中心化存儲解決方案奠定基礎。
?
登載此文出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其描述。文章內(nèi)容僅供參考,不構成投資建議。投資者據(jù)此操作,風險自擔。