Paradigm:提升Gas限值——如何解決以太坊擴容的歷史增長問題

新手5/15/2024, 2:58:42 AM
以太坊擴容問題中的歷史增長問題,指出歷史增長(即新區塊和交易的積累)是當前以太坊擴容的最大瓶頸。歷史增長受到網路IO和節點存儲空間的限制,而狀態增長問題則與之不同。文章提到,盡管Dencun硬分叉引入了Blob,減少了歷史增長的速度,但歷史增長仍然是一個挑戰。EIP-4444提案建議每個節點只保留一年的歷史記錄,這可以顯著減少存儲負擔並穩定存儲需求

什麼是歷史增長?

歷史是以太坊在其生命週期中執行的所有區塊和交易的集合。這是將鏈從創世塊同步到鏈的當前尖端所需的數據。歷史增長是隨着時間的推移新區塊和新交易的積累。

圖 1顯示了歷史增長與各種協議指標和以太坊節點硬件限制的關係。歷史增長受到與狀態增長不同的一組硬件約束的限制。歷史的增長給網路IO帶來了壓力,因爲新的區塊和交易必須在整個網路中傳輸。歷史記錄的增長也會給節點的存儲空間帶來壓力,因爲每個以太坊節點都存儲歷史記錄的完整副本。如果歷史增長得足夠快以超過這些硬件限制,節點將不再能夠與其對等方達成穩定的共識。請參閱本系列文章的第 1 部分,了解狀態增長和其他擴展瓶頸的概述。


圖 1:以太坊擴容瓶頸

直到最近,每個節點的大部分網路吞吐量都用於傳輸歷史記錄(例如新塊和交易)。隨着Dencun硬分叉中blob的引入,這種情況發生了變化。 Blob 現在佔據了節點網路活動的很大一部分。然而,blob 不被視爲歷史的一部分,因爲 1)它們在被丟棄之前僅由節點存儲 2 周,2)它們不需要重放 Genesis 中的鏈。由於 (1),blob 不會顯着增加每個以太坊節點的存儲負擔。我們將在本文的後面部分討論 blob。

在這篇文章中,我們將關注歷史的成長,也會觸及歷史與國家之間的關係。由於狀態增長和歷史增長共享一些重疊的硬件約束,因此它們是相關的問題,解決一個問題可以幫助解決另一個問題。

歷史發展的速度有多快?

圖 2顯示了自以太坊創世以來隨時間變化的歷史增長率。每個垂直條代表一個月的增長。 Y 軸代表該月歷史增長的 GB 數。交易按其“目標地址”進行分類,並使用其RLP字節表示來確定大小。無法輕易識別的合同被歸類爲“未知”。 “其他”類別包括基礎設施和遊戲等小類別的長尾。

從這張圖表中可以得出一些關鍵結論:

  1. 歷史增長速度比狀態快約 6 倍 - 8 倍:歷史增長最近達到峯值 36.0 GiB/月,目前爲 19.3 GiB/月。狀態增長峯值約爲 6.0 GiB/月,目前爲 2.5 GiB/月。歷史與狀態的比較,無論是增長還是累積規模,都可以在本文後面找到。
  2. 在 Decun 之前,歷史增長率正在迅速加快:雖然狀態多年來一直大致呈線性增長(請參閱第 1 部分),但歷史卻一直在超線性增長。考慮到線性增加的增長率會導致總體尺寸呈二次方,因此超線性增加的增長率會導致總體尺寸快於二次方。這股加速在登存之後戛然而止。這是以太坊歷史上首次出現增速大幅下滑。
  3. 最近的歷史增長大部分來自匯總:每個 L2 將其交易副本發布回主網。這產生了大量的歷史記錄,並導致匯總成爲去年歷史記錄的最重要貢獻者。然而,Dencun 使 L2 能夠使用 blob 而不是歷史記錄來發布其交易數據,因此匯總不再生成大部分以太坊歷史記錄。我們稍後將在本文中更詳細地研究匯總。

以太坊歷史的最大貢獻者是什麼?

每個合約類別生成的歷史記錄量揭示了以太坊使用模式如何隨着時間的推移而演變。圖 3顯示了各種合同類別的相對貢獻。這與圖 2 的數據相同,標準化爲 100%。

該數據揭示了以太坊使用模式的四個不同時代:

  1. 早期時代(紫色):在以太坊的最初幾年,鏈上活動很少。在這些早期合約中,大多數現在都很難識別,並且在圖表中被標記爲“未知”。
  2. ERC-20時代(綠色): ERC20標準於2015年底最終確定,但直到2017年和2018年才獲得重大關注。ERC-20合約在2019年成爲歷史上最大的類別。
  3. DEX / DeFi 時代(棕色): DEX 和 DeFi 合約早在 2016 年就出現在鏈上,並在 2017 年開始受到關注。但直到2020 年DeFi Summer才成爲歷史上最大的類別。 DeFi 和 DEX 合約在 2021 年和 2022 年部分時間達到歷史增長的 50% 以上的峯值。
  4. Rollup 時代(灰色): 2023 年初,L2 Rollup 開始持續執行比主網更多的交易。這與他們的合約生成大量歷史記錄相吻合,他們在 Dencun 之前的幾個月生成了約 2/3 的以太坊歷史記錄。

每個時代都代表着比之前更復雜的以太坊使用模式。隨着時間的推移,復雜化可以被視爲以太坊擴展的一種形式,它不能通過每秒交易量等簡單指標來捕獲。

在最近一個月的數據(即 2024 年 4 月)中,匯總不再生成大部分歷史記錄。目前還不清楚未來的歷史是否會起源於 DEX 和 DeFi,或者是否會出現一些新的使用模式。

那麼 blobs 呢?

Dencun 硬分叉中 Blob 的引入顯着改變了歷史增長動態,允許 Rollups 使用廉價的 Blob 而不是歷史來發布數據。圖 4放大了 Dencun 升級日期前後的歷史增長率。該圖表與圖 2 類似,不同之處在於每個豎條代表一天而不是一個月。

從該圖中可以得出幾個關鍵結論:

  1. 自 Dencun 以來,匯總的歷史增長量下降了約 2/3:大多數匯總已從調用數據轉變爲 Blob,這大大減少了它們生成的歷史記錄量。但是,截至 2024 年 4 月,仍有一些匯總尚未從呼叫數據切換爲 blob。
  2. 自Dencun以來,總歷史增長下降了約1/3: Dencun僅減少了rollups的歷史增長。其他合同類別的歷史增長略有增加。即使在 Dencun 之後,歷史增長仍然是州增長的 8 倍(詳情請參閱下一節)。

盡管 blob 減少了歷史增長,但它們仍然是以太坊的新成員。目前尚不清楚在存在斑點的情況下歷史增長將在何處穩定。

多少歷史增長是可以接受的?

提高gas限制將提高歷史增長率。因此,提高 Gas 限制的建議(例如Pump the Gas)必須考慮歷史增長與每個節點的硬件瓶頸之間的關係。

爲了找出可接受的歷史增長率,首先檢查現代節點網路和存儲節點硬件可以維持當前現狀多長時間是有幫助的。網路硬件可能會無限期地維持現狀,因爲在 Gas 限制增加之前,歷史增長率不太可能回到 Dencun 之前的峯值。然而,歷史記錄的存儲負擔隨着時間的推移不斷增加。根據當前的存儲策略,每個節點的存儲驅動器最終都不可避免地會被歷史填滿。

圖 5顯示了以太坊節點隨時間變化的存儲負擔,並且還預測了該存儲負擔在未來 3 年內可能會如何增長。使用 2024 年 4 月的增長率進行預測。隨着未來使用模式或 Gas 限制的變化,該費率可能會上升或下降。

從該圖中可以得出一些關鍵結論:

  1. 歷史佔用的存儲空間大約是狀態的 3 倍。這種差異也會隨着時間的推移而增加,因爲歷史的增長速度是狀態的大約 8 倍。
  2. 1.8 TiB 左右有一個臨界閾值,許多節點將被迫升級其存儲驅動器。 2TB 是常見的存儲驅動器大小,僅提供 1.8TiB 的可用空間。請注意,TB(1 萬億字節)與 TiB(= 1024 ^ 4 字節)是不同的單位。對於許多節點運營商來說,“真正的”關鍵閾值甚至更低,因爲合並後驗證器必須與執行客戶端一起運行共識客戶端。
  3. 2、3年內將達到臨界閾值。將 Gas 限制提高任何數量都會相應地加速這一時間。達到此閾值將爲節點運營商帶來不小的維護負擔,並且需要購買額外的硬件(例如價值300 美元的 NVME 驅動器)。

與狀態數據不同,歷史數據是僅附加的,並且訪問的積極性要低得多。因此,理論上可以將歷史數據與狀態數據分開存儲在更便宜的存儲介質上。這可以通過像geth這樣的一些客戶端來完成。

除了存儲容量之外,網路 IO 是歷史增長的另一個主要硬件限制。與存儲容量不同,網路 IO 限制在短期內不會給節點帶來問題,但這些限制對於未來 Gas 限制的增加將變得很重要。

要了解典型以太坊節點的網路容量可以支持多少歷史增長,有必要描述歷史增長與各種網路健康指標之間的關係,例如重組率、時隙缺失、最終性缺失、證明缺失、同步委員會缺失、並阻止提交延遲。對這些指標的分析超出了本文的範圍,但可以在之前對共識層健康狀況的調查中找到更多信息[1] [2] [3] [4]。此外,以太坊基金會的@ethpandaops/xatu-overview">Xatu項目一直在構建公共數據集,以加快此類分析的速度。

歷史增長如何解決?

歷史增長是一個比國家增長更容易的問題。候選提案EIP-4444幾乎完全解決了這個問題。這個 EIP 將每個節點從保留整個以太坊歷史更改爲僅保留一年的歷史。實施 EIP-4444 後,即使從長遠來看,氣體限制大幅增加,數據存儲也將不再是以太坊擴展的瓶頸。 EIP-4444 對於網路的長期可持續性是必要的,因爲否則歷史記錄將增長得足夠快,需要定期更新網路節點的硬件。

圖 6顯示了 EIP-4444 如何影響未來 3 年每個節點的存儲負擔。這與圖 4 相同,添加的較細線代表 EIP-4444 後的存儲負擔。

從該圖中可以得出一些關鍵結論:

  1. EIP-4444 將使當前的存儲負擔減半。存儲負擔將從 1.2 TiB 降至 633 GiB。
  2. EIP-4444 將穩定歷史存儲負擔。假設歷史增長速度恆定,歷史將以其生成的速度被丟棄。
  3. 在 EIP-4444 之後,4444 之後的存儲負擔需要很多年才能達到今天的存儲負擔。這是因爲狀態增長將是增加存儲負擔的唯一因素,並且狀態增長速度比歷史記錄慢。

實施 EIP-4444 後,歷史記錄增長仍會帶來一定的存儲負擔,因爲節點將存儲一年的歷史記錄。然而,即使以太坊達到全球規模,這一負擔也不難解決。一旦歷史保存方法被證明是可靠的,EIP-4444 長達一年的有效期可能會縮短到幾個月、幾周甚至更短。

如何保存以太坊的歷史?

EIP-4444 提出了一個問題:如果不是由以太坊節點本身保存歷史記錄,那麼應該如何保存歷史記錄。歷史在以太坊的驗證、核算和分析中發揮着核心作用,因此保存它至關重要。幸運的是,歷史保存是一個簡單的問題,只需要 1/n 誠實的數據提供者。這與需要 1/3 到 2/3 的數據參與者誠實的狀態共識問題形成鮮明對比。節點操作員可以通過以下方式驗證任何歷史數據集的真實性:1)重放 Genesis 中的所有交易;2)檢查這些交易是否重現與當前鏈尖端相同的狀態根。

保存歷史有多種方法。其中每一個可能都應該並行部署,以最大限度地提高保存的可能性。

  1. Torrents / P2P: Torrents是最簡單、最強大的方法。以太坊節點可以定期打包部分歷史記錄並作爲公共 torrent 文件共享。例如,節點可能每 100,000 個塊創建一個新的歷史 torrent 文件。像 erigon 這樣的節點客戶端已經在某種程度上以非標準化的方式執行此過程。爲了標準化這個過程,所有節點客戶端必須使用相同的數據格式、相同的參數和相同的P2P網路。節點將能夠根據其存儲和帶寬能力選擇是否參與該網路。種子的優點是使用高林迪開放標準,這些標準已經得到大型數據工具生態系統的支持。
  2. 門戶網路:門戶網路是專門爲托管以太坊數據而設計的新網路。這與種子下載的方法類似,同時還提供一些額外的功能以使數據驗證更容易。門戶網路的優點是這些額外的驗證層爲輕客戶端提供了有效驗證和查詢共享數據集的實用程序。
  3. 雲主機: AWS 的S3或 Cloudflare 的R2等雲存儲服務爲保存歷史記錄提供了廉價且高性能的選項。然而,這種方法帶來了更多的法律風險和業務運營風險,因爲不能保證這些雲服務始終願意並且能夠托管加密貨幣數據。

剩下的實施挑戰更多是社會性的而不是技術性的。以太坊社區需要圍繞具體的實現細節進行協調,以便它們可以直接集成到每個節點客戶端中。特別是,從 Genesis 執行完全同步(而不是快照同步)將需要從歷史記錄提供者而不是以太坊節點檢索歷史記錄。這些變化在技術上不需要硬分叉,因此它們可以比以太坊的下一個硬分叉 Pectra 更早實施。

L2 也可以使用所有這些歷史記錄保存方法來保存它們發布到主網的 blob 數據。與歷史保存相比,blob 保存 1) 更困難,因爲總數據量更大;2) 不太重要,因爲 blob 不是重播主網歷史所必需的。然而,對於每個 L2 重播自己的歷史,blob 保存仍然是必要的。因此,某種形式的 blob 保存對於整個以太坊生態系統來說非常重要。此外,如果 L2 開發強大的 blob 存儲基礎設施,他們還可以輕鬆存儲 L1 歷史數據。

直接比較 EIP-4444 前後各種節點配置存儲的數據集是有幫助的。圖 7顯示了以太坊節點類型的存儲負擔。狀態數據是帳戶和合約,歷史數據是區塊和交易,存檔數據是一組可選的數據索引。該表中的字節計數基於最近的 reth 快照,但其他節點客戶端的數字應該大致可比。


圖 7:以太坊節點類型的存儲負擔

用語言來說,

  1. 存檔節點存儲狀態數據和歷史數據以及存檔數據。當有人希望能夠輕鬆查詢歷史鏈狀態時,可以使用存檔節點。
  2. 完整節點僅存儲歷史數據和狀態數據。如今大多數節點都是完整節點。完整節點的存儲負擔大約是存檔節點的一半。
  3. EIP-4444之後的完整節點僅存儲狀態數據和最近一年的歷史數據。這將節點的存儲負擔從 1.2 TiB 減少到 633 GiB,並使歷史數據的存儲佔用達到穩定狀態值。
  4. 無狀態節點,又名“輕節點”,不存儲任何這些數據集,並且能夠在鏈的尖端立即進行驗證。一旦Verkle 嘗試或將其他狀態承諾方案添加到以太坊,這種節點類型就成爲可能。

最後,還有一些額外的生態產業園區將限制歷史增長率,而不僅僅是適應當前增長率。這對於短期保持網路 IO 限制和長期保持存儲限制都有幫助。盡管 EIP-4444 對於網路的長期可持續性仍然是必要的,但這些其他 EIP 將幫助以太坊在未來更有效地擴展:

  1. EIP-7623:對呼叫數據重新定價,以便某些具有過多呼叫數據的交易更加昂貴。使這些使用模式變得更加昂貴將促使其中一些從調用數據轉換爲 blob。這將降低歷史增長率。
  2. EIP-4488:對每個塊中可以包含的呼叫數據總量施加限制。這將對歷史增長的速度施加更嚴格的限制。

這些 EIP 比 EIP-4444 更容易實施,因此在 EIP-4444 準備投入生產之前,它們可能可以作爲短期權宜之計。

結束語

本文的目標是形成對 1) 歷史增長如何運作以及 2) 如何解決這一問題的數據驅動型理解。本文中的大部分數據傳統上很難訪問,因此我們希望提供這些數據將爲歷史增長問題提供一些新穎的見解。

歷史增長作爲以太坊擴容的瓶頸並沒有受到足夠的重視。即使沒有增加 Gas 限制,以太坊當前保存歷史的慣例也將迫使許多節點在幾年內升級其硬件。幸運的是,這並不是一個很難解決的問題。 EIP-4444 中已經有明確的解決方案。我們認爲應該加快該 EIP 的實施,以便爲未來 Gas 限制的增加騰出空間。

如果您對以太坊擴容研究感興趣,請聯系storm@paradigm.xyzgeorgios@paradigm.xyz。我們很想聽聽您如何看待這個問題以及如何進行潛在的合作。本文使用的數據和代碼可以在 Github 上找到

致謝

感謝Thomas ThieryTim BeikoToni WahrstaetterOliver NordbjergRoman Krasiuk的審閱和反饋。感謝Achal Srinivasan提供的圖 1和圖 7圖形。

聲明:

  1. 本文轉載自[Marsbit],著作權歸屬原作者[Storm Slivkoff,Georgios Konstantopoulos],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

Paradigm:提升Gas限值——如何解決以太坊擴容的歷史增長問題

新手5/15/2024, 2:58:42 AM
以太坊擴容問題中的歷史增長問題,指出歷史增長(即新區塊和交易的積累)是當前以太坊擴容的最大瓶頸。歷史增長受到網路IO和節點存儲空間的限制,而狀態增長問題則與之不同。文章提到,盡管Dencun硬分叉引入了Blob,減少了歷史增長的速度,但歷史增長仍然是一個挑戰。EIP-4444提案建議每個節點只保留一年的歷史記錄,這可以顯著減少存儲負擔並穩定存儲需求

什麼是歷史增長?

歷史是以太坊在其生命週期中執行的所有區塊和交易的集合。這是將鏈從創世塊同步到鏈的當前尖端所需的數據。歷史增長是隨着時間的推移新區塊和新交易的積累。

圖 1顯示了歷史增長與各種協議指標和以太坊節點硬件限制的關係。歷史增長受到與狀態增長不同的一組硬件約束的限制。歷史的增長給網路IO帶來了壓力,因爲新的區塊和交易必須在整個網路中傳輸。歷史記錄的增長也會給節點的存儲空間帶來壓力,因爲每個以太坊節點都存儲歷史記錄的完整副本。如果歷史增長得足夠快以超過這些硬件限制,節點將不再能夠與其對等方達成穩定的共識。請參閱本系列文章的第 1 部分,了解狀態增長和其他擴展瓶頸的概述。


圖 1:以太坊擴容瓶頸

直到最近,每個節點的大部分網路吞吐量都用於傳輸歷史記錄(例如新塊和交易)。隨着Dencun硬分叉中blob的引入,這種情況發生了變化。 Blob 現在佔據了節點網路活動的很大一部分。然而,blob 不被視爲歷史的一部分,因爲 1)它們在被丟棄之前僅由節點存儲 2 周,2)它們不需要重放 Genesis 中的鏈。由於 (1),blob 不會顯着增加每個以太坊節點的存儲負擔。我們將在本文的後面部分討論 blob。

在這篇文章中,我們將關注歷史的成長,也會觸及歷史與國家之間的關係。由於狀態增長和歷史增長共享一些重疊的硬件約束,因此它們是相關的問題,解決一個問題可以幫助解決另一個問題。

歷史發展的速度有多快?

圖 2顯示了自以太坊創世以來隨時間變化的歷史增長率。每個垂直條代表一個月的增長。 Y 軸代表該月歷史增長的 GB 數。交易按其“目標地址”進行分類,並使用其RLP字節表示來確定大小。無法輕易識別的合同被歸類爲“未知”。 “其他”類別包括基礎設施和遊戲等小類別的長尾。

從這張圖表中可以得出一些關鍵結論:

  1. 歷史增長速度比狀態快約 6 倍 - 8 倍:歷史增長最近達到峯值 36.0 GiB/月,目前爲 19.3 GiB/月。狀態增長峯值約爲 6.0 GiB/月,目前爲 2.5 GiB/月。歷史與狀態的比較,無論是增長還是累積規模,都可以在本文後面找到。
  2. 在 Decun 之前,歷史增長率正在迅速加快:雖然狀態多年來一直大致呈線性增長(請參閱第 1 部分),但歷史卻一直在超線性增長。考慮到線性增加的增長率會導致總體尺寸呈二次方,因此超線性增加的增長率會導致總體尺寸快於二次方。這股加速在登存之後戛然而止。這是以太坊歷史上首次出現增速大幅下滑。
  3. 最近的歷史增長大部分來自匯總:每個 L2 將其交易副本發布回主網。這產生了大量的歷史記錄,並導致匯總成爲去年歷史記錄的最重要貢獻者。然而,Dencun 使 L2 能夠使用 blob 而不是歷史記錄來發布其交易數據,因此匯總不再生成大部分以太坊歷史記錄。我們稍後將在本文中更詳細地研究匯總。

以太坊歷史的最大貢獻者是什麼?

每個合約類別生成的歷史記錄量揭示了以太坊使用模式如何隨着時間的推移而演變。圖 3顯示了各種合同類別的相對貢獻。這與圖 2 的數據相同,標準化爲 100%。

該數據揭示了以太坊使用模式的四個不同時代:

  1. 早期時代(紫色):在以太坊的最初幾年,鏈上活動很少。在這些早期合約中,大多數現在都很難識別,並且在圖表中被標記爲“未知”。
  2. ERC-20時代(綠色): ERC20標準於2015年底最終確定,但直到2017年和2018年才獲得重大關注。ERC-20合約在2019年成爲歷史上最大的類別。
  3. DEX / DeFi 時代(棕色): DEX 和 DeFi 合約早在 2016 年就出現在鏈上,並在 2017 年開始受到關注。但直到2020 年DeFi Summer才成爲歷史上最大的類別。 DeFi 和 DEX 合約在 2021 年和 2022 年部分時間達到歷史增長的 50% 以上的峯值。
  4. Rollup 時代(灰色): 2023 年初,L2 Rollup 開始持續執行比主網更多的交易。這與他們的合約生成大量歷史記錄相吻合,他們在 Dencun 之前的幾個月生成了約 2/3 的以太坊歷史記錄。

每個時代都代表着比之前更復雜的以太坊使用模式。隨着時間的推移,復雜化可以被視爲以太坊擴展的一種形式,它不能通過每秒交易量等簡單指標來捕獲。

在最近一個月的數據(即 2024 年 4 月)中,匯總不再生成大部分歷史記錄。目前還不清楚未來的歷史是否會起源於 DEX 和 DeFi,或者是否會出現一些新的使用模式。

那麼 blobs 呢?

Dencun 硬分叉中 Blob 的引入顯着改變了歷史增長動態,允許 Rollups 使用廉價的 Blob 而不是歷史來發布數據。圖 4放大了 Dencun 升級日期前後的歷史增長率。該圖表與圖 2 類似,不同之處在於每個豎條代表一天而不是一個月。

從該圖中可以得出幾個關鍵結論:

  1. 自 Dencun 以來,匯總的歷史增長量下降了約 2/3:大多數匯總已從調用數據轉變爲 Blob,這大大減少了它們生成的歷史記錄量。但是,截至 2024 年 4 月,仍有一些匯總尚未從呼叫數據切換爲 blob。
  2. 自Dencun以來,總歷史增長下降了約1/3: Dencun僅減少了rollups的歷史增長。其他合同類別的歷史增長略有增加。即使在 Dencun 之後,歷史增長仍然是州增長的 8 倍(詳情請參閱下一節)。

盡管 blob 減少了歷史增長,但它們仍然是以太坊的新成員。目前尚不清楚在存在斑點的情況下歷史增長將在何處穩定。

多少歷史增長是可以接受的?

提高gas限制將提高歷史增長率。因此,提高 Gas 限制的建議(例如Pump the Gas)必須考慮歷史增長與每個節點的硬件瓶頸之間的關係。

爲了找出可接受的歷史增長率,首先檢查現代節點網路和存儲節點硬件可以維持當前現狀多長時間是有幫助的。網路硬件可能會無限期地維持現狀,因爲在 Gas 限制增加之前,歷史增長率不太可能回到 Dencun 之前的峯值。然而,歷史記錄的存儲負擔隨着時間的推移不斷增加。根據當前的存儲策略,每個節點的存儲驅動器最終都不可避免地會被歷史填滿。

圖 5顯示了以太坊節點隨時間變化的存儲負擔,並且還預測了該存儲負擔在未來 3 年內可能會如何增長。使用 2024 年 4 月的增長率進行預測。隨着未來使用模式或 Gas 限制的變化,該費率可能會上升或下降。

從該圖中可以得出一些關鍵結論:

  1. 歷史佔用的存儲空間大約是狀態的 3 倍。這種差異也會隨着時間的推移而增加,因爲歷史的增長速度是狀態的大約 8 倍。
  2. 1.8 TiB 左右有一個臨界閾值,許多節點將被迫升級其存儲驅動器。 2TB 是常見的存儲驅動器大小,僅提供 1.8TiB 的可用空間。請注意,TB(1 萬億字節)與 TiB(= 1024 ^ 4 字節)是不同的單位。對於許多節點運營商來說,“真正的”關鍵閾值甚至更低,因爲合並後驗證器必須與執行客戶端一起運行共識客戶端。
  3. 2、3年內將達到臨界閾值。將 Gas 限制提高任何數量都會相應地加速這一時間。達到此閾值將爲節點運營商帶來不小的維護負擔,並且需要購買額外的硬件(例如價值300 美元的 NVME 驅動器)。

與狀態數據不同,歷史數據是僅附加的,並且訪問的積極性要低得多。因此,理論上可以將歷史數據與狀態數據分開存儲在更便宜的存儲介質上。這可以通過像geth這樣的一些客戶端來完成。

除了存儲容量之外,網路 IO 是歷史增長的另一個主要硬件限制。與存儲容量不同,網路 IO 限制在短期內不會給節點帶來問題,但這些限制對於未來 Gas 限制的增加將變得很重要。

要了解典型以太坊節點的網路容量可以支持多少歷史增長,有必要描述歷史增長與各種網路健康指標之間的關係,例如重組率、時隙缺失、最終性缺失、證明缺失、同步委員會缺失、並阻止提交延遲。對這些指標的分析超出了本文的範圍,但可以在之前對共識層健康狀況的調查中找到更多信息[1] [2] [3] [4]。此外,以太坊基金會的@ethpandaops/xatu-overview">Xatu項目一直在構建公共數據集,以加快此類分析的速度。

歷史增長如何解決?

歷史增長是一個比國家增長更容易的問題。候選提案EIP-4444幾乎完全解決了這個問題。這個 EIP 將每個節點從保留整個以太坊歷史更改爲僅保留一年的歷史。實施 EIP-4444 後,即使從長遠來看,氣體限制大幅增加,數據存儲也將不再是以太坊擴展的瓶頸。 EIP-4444 對於網路的長期可持續性是必要的,因爲否則歷史記錄將增長得足夠快,需要定期更新網路節點的硬件。

圖 6顯示了 EIP-4444 如何影響未來 3 年每個節點的存儲負擔。這與圖 4 相同,添加的較細線代表 EIP-4444 後的存儲負擔。

從該圖中可以得出一些關鍵結論:

  1. EIP-4444 將使當前的存儲負擔減半。存儲負擔將從 1.2 TiB 降至 633 GiB。
  2. EIP-4444 將穩定歷史存儲負擔。假設歷史增長速度恆定,歷史將以其生成的速度被丟棄。
  3. 在 EIP-4444 之後,4444 之後的存儲負擔需要很多年才能達到今天的存儲負擔。這是因爲狀態增長將是增加存儲負擔的唯一因素,並且狀態增長速度比歷史記錄慢。

實施 EIP-4444 後,歷史記錄增長仍會帶來一定的存儲負擔,因爲節點將存儲一年的歷史記錄。然而,即使以太坊達到全球規模,這一負擔也不難解決。一旦歷史保存方法被證明是可靠的,EIP-4444 長達一年的有效期可能會縮短到幾個月、幾周甚至更短。

如何保存以太坊的歷史?

EIP-4444 提出了一個問題:如果不是由以太坊節點本身保存歷史記錄,那麼應該如何保存歷史記錄。歷史在以太坊的驗證、核算和分析中發揮着核心作用,因此保存它至關重要。幸運的是,歷史保存是一個簡單的問題,只需要 1/n 誠實的數據提供者。這與需要 1/3 到 2/3 的數據參與者誠實的狀態共識問題形成鮮明對比。節點操作員可以通過以下方式驗證任何歷史數據集的真實性:1)重放 Genesis 中的所有交易;2)檢查這些交易是否重現與當前鏈尖端相同的狀態根。

保存歷史有多種方法。其中每一個可能都應該並行部署,以最大限度地提高保存的可能性。

  1. Torrents / P2P: Torrents是最簡單、最強大的方法。以太坊節點可以定期打包部分歷史記錄並作爲公共 torrent 文件共享。例如,節點可能每 100,000 個塊創建一個新的歷史 torrent 文件。像 erigon 這樣的節點客戶端已經在某種程度上以非標準化的方式執行此過程。爲了標準化這個過程,所有節點客戶端必須使用相同的數據格式、相同的參數和相同的P2P網路。節點將能夠根據其存儲和帶寬能力選擇是否參與該網路。種子的優點是使用高林迪開放標準,這些標準已經得到大型數據工具生態系統的支持。
  2. 門戶網路:門戶網路是專門爲托管以太坊數據而設計的新網路。這與種子下載的方法類似,同時還提供一些額外的功能以使數據驗證更容易。門戶網路的優點是這些額外的驗證層爲輕客戶端提供了有效驗證和查詢共享數據集的實用程序。
  3. 雲主機: AWS 的S3或 Cloudflare 的R2等雲存儲服務爲保存歷史記錄提供了廉價且高性能的選項。然而,這種方法帶來了更多的法律風險和業務運營風險,因爲不能保證這些雲服務始終願意並且能夠托管加密貨幣數據。

剩下的實施挑戰更多是社會性的而不是技術性的。以太坊社區需要圍繞具體的實現細節進行協調,以便它們可以直接集成到每個節點客戶端中。特別是,從 Genesis 執行完全同步(而不是快照同步)將需要從歷史記錄提供者而不是以太坊節點檢索歷史記錄。這些變化在技術上不需要硬分叉,因此它們可以比以太坊的下一個硬分叉 Pectra 更早實施。

L2 也可以使用所有這些歷史記錄保存方法來保存它們發布到主網的 blob 數據。與歷史保存相比,blob 保存 1) 更困難,因爲總數據量更大;2) 不太重要,因爲 blob 不是重播主網歷史所必需的。然而,對於每個 L2 重播自己的歷史,blob 保存仍然是必要的。因此,某種形式的 blob 保存對於整個以太坊生態系統來說非常重要。此外,如果 L2 開發強大的 blob 存儲基礎設施,他們還可以輕鬆存儲 L1 歷史數據。

直接比較 EIP-4444 前後各種節點配置存儲的數據集是有幫助的。圖 7顯示了以太坊節點類型的存儲負擔。狀態數據是帳戶和合約,歷史數據是區塊和交易,存檔數據是一組可選的數據索引。該表中的字節計數基於最近的 reth 快照,但其他節點客戶端的數字應該大致可比。


圖 7:以太坊節點類型的存儲負擔

用語言來說,

  1. 存檔節點存儲狀態數據和歷史數據以及存檔數據。當有人希望能夠輕鬆查詢歷史鏈狀態時,可以使用存檔節點。
  2. 完整節點僅存儲歷史數據和狀態數據。如今大多數節點都是完整節點。完整節點的存儲負擔大約是存檔節點的一半。
  3. EIP-4444之後的完整節點僅存儲狀態數據和最近一年的歷史數據。這將節點的存儲負擔從 1.2 TiB 減少到 633 GiB,並使歷史數據的存儲佔用達到穩定狀態值。
  4. 無狀態節點,又名“輕節點”,不存儲任何這些數據集,並且能夠在鏈的尖端立即進行驗證。一旦Verkle 嘗試或將其他狀態承諾方案添加到以太坊,這種節點類型就成爲可能。

最後,還有一些額外的生態產業園區將限制歷史增長率,而不僅僅是適應當前增長率。這對於短期保持網路 IO 限制和長期保持存儲限制都有幫助。盡管 EIP-4444 對於網路的長期可持續性仍然是必要的,但這些其他 EIP 將幫助以太坊在未來更有效地擴展:

  1. EIP-7623:對呼叫數據重新定價,以便某些具有過多呼叫數據的交易更加昂貴。使這些使用模式變得更加昂貴將促使其中一些從調用數據轉換爲 blob。這將降低歷史增長率。
  2. EIP-4488:對每個塊中可以包含的呼叫數據總量施加限制。這將對歷史增長的速度施加更嚴格的限制。

這些 EIP 比 EIP-4444 更容易實施,因此在 EIP-4444 準備投入生產之前,它們可能可以作爲短期權宜之計。

結束語

本文的目標是形成對 1) 歷史增長如何運作以及 2) 如何解決這一問題的數據驅動型理解。本文中的大部分數據傳統上很難訪問,因此我們希望提供這些數據將爲歷史增長問題提供一些新穎的見解。

歷史增長作爲以太坊擴容的瓶頸並沒有受到足夠的重視。即使沒有增加 Gas 限制,以太坊當前保存歷史的慣例也將迫使許多節點在幾年內升級其硬件。幸運的是,這並不是一個很難解決的問題。 EIP-4444 中已經有明確的解決方案。我們認爲應該加快該 EIP 的實施,以便爲未來 Gas 限制的增加騰出空間。

如果您對以太坊擴容研究感興趣,請聯系storm@paradigm.xyzgeorgios@paradigm.xyz。我們很想聽聽您如何看待這個問題以及如何進行潛在的合作。本文使用的數據和代碼可以在 Github 上找到

致謝

感謝Thomas ThieryTim BeikoToni WahrstaetterOliver NordbjergRoman Krasiuk的審閱和反饋。感謝Achal Srinivasan提供的圖 1和圖 7圖形。

聲明:

  1. 本文轉載自[Marsbit],著作權歸屬原作者[Storm Slivkoff,Georgios Konstantopoulos],如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!