使用 Enshrined Native L2 和無狀態區塊構建來擴展以太坊
介紹
以太坊的可擴展性之旅長期以來一直在探索第 2 層 (L2) 解決方案,以提高吞吐量並保持去中心化。一個有前途的方向 - 基於 rollups 等先前工作 - 是嵌入原生 L2的概念。在這篇文章中,我認為我們可以通過創建深度集成到以太坊協議中的 L2 系統來擴展以太坊,共享其驗證器集以並行處理交易。這不是一個新發明,而是對現有想法的改進,通過 Orbit 等概念利用在第 1 層 (L1) 職責中不活躍的驗證器來水平擴展吞吐量。通過在 L1 和多個 L2 之間循環驗證器,我們可以解鎖額外的真正原生的區塊空間,增加交易容量,並引入本地費用市場 - 所有這些都不需要越來越重的節點硬件。每個 L2 都將具有與 L1 相同的 gas 限制和其他配置設置。我不認為這些嵌入的原生 L2 可能會與非嵌入的 L2 具有很強的競爭力。它們顯然更有能力垂直擴展吞吐量,並創建能夠容忍不同程度審查的社區,而這是原生彙總所無法做到的。
我認為,如果沒有可行的既定後備方案,我們就無法安全地外包區塊構建,因為這將導致吞吐量大幅降低。將區塊構建外包給經驗豐富的參與者將不可避免地產生對他們的依賴。隨著 MEV 隨著時間的推移而減少(應用程序被激勵自己捕獲它),區塊構建者的收入越來越少。隨著吞吐量的增加,構建區塊的成本變得越來越昂貴。因此,盈利能力取決於複雜的專有知識,這大大增加了新進入區塊構建競爭的難度。當拍賣是贏家通吃時,所有非競爭性建造者都無法生存,最終導致高度集中化(雙頭壟斷或壟斷對我來說並不奇怪)。您可以在這裡瀏覽一些關於我的觀點的帖子:為本地區塊構建辯護。
這篇文章將涉及可用的設計空間,重點討論權衡以及無狀態區塊構建對水平擴展的關鍵作用,這使我們能夠保持本地區塊構建並保持以太坊可分叉性的實用性。
核心概念:通過共享驗證器實現原生 L2 共識
固定的原生 L2 將以太坊的驗證者集擴展到 L1 職責之外。目前 31/32 個驗證者對以太坊來說並沒有真正積極用處。理想情況下,我們希望有一個可以確保儘可能多地利用網絡的系統。我們可以將不在 L1 上提議或證明的驗證者(例如,由於 Orbit 等系統中的輪換)轉移到 L2,組成委員會來處理交易排序和區塊生產。例如,我們可以在每個 L2 中設立 96 個驗證者的委員會,其中 16 個驗證者被分配到 FOCIL/提議職責,其餘的驗證者則負責證明。就像 L1 一樣,我們希望絕大多數 L2 權益能夠證明新區塊,以便它被接受和最終確定。每個 slot 我們都可以輪換 4 個驗證者(我說的好像所有驗證者都是 32 ETH的權益,但我知道事實並非如此,這裡在驗證者選擇ETC有一些複雜性,但我認為這是我們可以解決的問題並且希望暫時保持簡單)從他們當前所在的 L2 轉換回 L1 或另一個 L2,確保持續的生產力。
共享安全性:這些 L2 通過零知識(zk)證明繼承了以太坊的安全性,並通過相同的共識機制和幾乎等同的抗審查保證進行驗證(目前基本上沒有 L2 具備這種保證)。
水平擴展:與傳統的節點升級相比,添加更多 L2 可以提高吞吐量,而無需垂直擴展硬件。
這利用了這樣一個事實:在像 Orbit 這樣的系統中,約 80% 的驗證者權益可能在 L1 上活躍,剩下約 20% 可用於 L2,從而擴大了本機區塊空間。
無狀態區塊構建的必要性
為了實現這一點,無狀態區塊構建是理想的。驗證者無法存儲完整狀態,因為存儲需求即使在 L1 上也不斷增長,更不用說包括所有 L2 了。相反:
工作原理:用戶或狀態提供者為交易提供見證(狀態數據 + 證明)。驗證者使用 Verkle 樹根據狀態根(無本地狀態的構建塊)驗證這些緊湊證明(約 150 字節)。您可能能夠進行某些優化,以允許 zkEVM 執行證明不與任何其他狀態更改衝突,並且可以以較低的 gas 成本提交為有效交易。
重要性:無狀態性使硬件要求保持在較低水平,從而實現 L1 和 L2 任務之間的快速轉換。它是水平擴展的支柱,確保驗證者無需同步大量數據集即可處理任何 L2。
如果沒有無狀態性,那麼固定的 L2 的優勢(靈活性、可擴展性和廣泛參與度)就會因不切實際的存儲和同步時間需求而崩潰。
設計空間中的權衡
這就是關鍵所在:平衡驗證者角色、狀態管理和帶寬,以使其可行。
1. 驗證者委員會規模與吞吐量
權衡:規模較小的委員會(例如,數十名驗證者)可簡化協調和過渡,但存在安全風險。規模較大的委員會(例如,數百名驗證者)可增強去中心化,但會增加管理費用。
示例轉變:由於約 20% 的驗證者不受 L1 影響,因此 100 人的委員會可能會支持許多 L2,而每個 L2 200 人的委員會會使該數字減半,但會增強彈性。
影響:更多的 L2 意味著更高的吞吐量,但委員會規模決定了可以安全並行運行的 L2 數量。不僅如此,在某個時候,L1 Gas 限制也限制了實際可以支持的 L2 數量。
2. 驗證者存儲的 Verkle 樹(或同等樹)層級
我們可以設置一個要求,即驗證者存儲根節點和 Verkle 樹的所有中間節點,直到某個級別,而不僅僅是根節點。這樣,他們就可以更有效地驗證見證,而無需存儲整個狀態,同時也讓我們能夠減少為每筆交易傳輸大量見證的帶寬開銷。存儲根節點和前一個時隙樹的 diff 可以幫助避免使引用前一個時隙狀態但進入時隙太晚而無法包含且會被修改其證明路徑的其他交易無效的原本有效的交易無效。
權衡:存儲上層 Verkle 樹(例如,從根到中間)會減少見證大小,但會增加內存。不存儲任何內容可保持驗證器精簡,但會使交易數據膨脹。
Shift 示例:對於分支因子為 256 的情況,我認為存儲 0-3 級大約需要 1.7 GB,大約有 40 億個葉節點。對於 512 分支,大約需要 13 GB,但可以提供大約 690 億個葉節點(L1 和每個 L2 的葉節點具有良好的互操作性,我認為這在一段時間內應該足夠好了)。
影響:更多的存儲級別抵消了帶寬的增加,使吞吐量可以擴大而不會阻塞網絡。
3. 帶寬與吞吐量增益
權衡:無狀態性會增加每筆交易(見證)的帶寬,但固定的 L2 會使本機區塊空間倍增,從而可能使這一成本相形見絀。
主要優勢:如果切換到無狀態區塊構建會使帶寬需求增加 5 倍,但使我們能夠支持 500 個固定的本地 L2,那麼這種權衡可能是值得的。這還會在每個 L2 中創建本地費用市場,因此如果我們允許應用程序遷移,我們可能會看到交互的應用程序經常在 L2 中彼此相鄰,以避免互操作開銷,而大型應用程序會遷移到使用率較低的 L2,以避免受到其他應用程序需求的影響,從而推高用戶費用。所有這些都表明,從長遠來看,我們可能會看到接近最佳吞吐量。
4. 驗證者轉換速度
權衡:驗證者在內存中存儲的最小狀態(僅根)可實現近乎即時的轉換,但需要更大的見證。存儲中間級別會減慢轉換速度以節省 tx 帶寬。我們可以包括其他內容,例如所有智能合約代碼都應由驗證者存儲,並且需要同步後才能參與除證明之外的 L2 職責。即合約存儲槽或 eoa 賬戶ETC應由用戶提供見證(狀態提供者當然也可以向用戶提供該數據,理想情況下我們有 eLTS——請參閱我的ETH研究帖子瞭解更多詳細信息——作為備份)。這意味著用戶只需要為存儲槽或賬戶餘額提供一些見證,所有驗證者都可以隨時執行所有交易。還有其他替代方案,我們只在內存中保留一組活躍的合約,其餘合約需要為其提供見證。這篇最近的文章更詳細地討論了這一點(無狀態協議設計視圖)。
示例轉變:僅根轉換大約需要 1 秒,而~1.7 GB 同步可能需要大約 5 分鐘,具體取決於驗證器的網絡速度要求。
影響:更快的轉換可以最大化驗證器的效用,但較慢的轉換可以優化交易效率。
為什麼這很重要:吞吐量及其他
原生區塊空間:嵌入的 L2大幅增加了原生區塊空間,使以太坊能夠水平擴展。這是與其他依賴外部驗證器的 L2 的關鍵區別。
帶寬偏移:是的,無狀態見證會增加帶寬,但理想情況下,通過 L2 增加的本機塊空間可以遠遠超過這一點。
本地費用市場:藉助已固定的 L2,我們可以創建本地費用市場,防止某個應用程序的需求影響其他地方的簡單支付。已固定的 L2 可以獲得免費的 blobspace 分配,或者擁有各種其他費用機制和/或發行機制,以找到合理的平衡。
結論
顯然,要實現這一願景,還有大量工作要做,而且還有很多懸而未決的問題需要解決,即如何在某些權衡之間取得平衡。我相信,由無狀態區塊構建驅動的固定原生 L2 是橫向擴展以太坊並保持其長期抗審查能力的最佳途徑。控制分叉選擇會產生嚴重後果。當我們從實際角度限制誰有能力構建鏈條時,我們就會放棄分叉選擇,讓自己容易受到強大參與者的影響,從而傷害到其他所有人。像 orbit 這樣的 SSF 方法允許任何人參與分叉投票,這是我們前進的最佳道路。它還使我們能夠利用未在 L1 職責中活躍的驗證者來獲得潛在的巨大吞吐量增益。我們可以在保持節點可訪問的同時增強容量,而不會失去以太坊去中心化的靈魂。



