Vitalik:解析Rollups的擴展方案——數據分片

編輯:南風
編輯:南風
編輯:南風
對於以太坊而言,Rollups是短中期,也可能是長期的唯一無須信任的可擴展性解決方案。以太坊L1 上的交易費在幾個月以來一直很高,現在更迫切的是採取一切必要的行動,幫助推動整個生態系統轉移到Rollups。 Rollups 已經大大降低了許多以太坊用戶的費用:l2fees.info 網站時常顯示Optimism 和Arbitrum 網絡的費用要比以太坊基礎層本身低了約3-8 倍,而zk-Rollups 有著更好的數據壓縮,並且可以避免包含簽名,因此其費用要比以太坊基礎層低約40-100 倍。
然而,對於許多用戶來說,即便是這些(Rollups中的) 費用也還是太過昂貴了。很長一段時間以來,數據分片(data sharding) 被認為是解決當前形式的Rollups 的長期不足的解決方案,數據分片有望在以太坊鏈上為Rollups 增加大約1-2MB/s 的專用數據空間。本文描述了實現該解決方案的一條實用的路徑,能夠盡可能快地為Rollups 解鎖數據空間,並隨著時間的推移增加更多額外的空間和安全性。
目前現有的Rollups 使用了交易calldata。因此,如果我們想要在無需讓各個Rollups 團隊做出任何額外工作的情況下,在短期內提升Rollups 的容量並降低成本,我們應該降低交易calldata 的Gas 成本。當前的平均區塊大小還遠沒有達到威脅以太坊網絡穩定性的大小,因此這樣做是有可能安全的,儘管可能需要一些額外的邏輯來預防非常不安全的邊緣情況。EIP-4488 提案EIP-4488 提案EIP-4490 提案。
EIP-4488:
https://github.com/ethereum/EIPs/pull/4488
EIP-4490:
https://github.com/ethereum/EIPs/pull/4490
,或者另一個(更簡單但效果更溫和的)EIP-4490 提案。EIP 4488 應該能將1 MB每個slot成本降低約5 倍一級標題
一級標題
一級標題Step 2: 幾條分片與此同時,我們可以開始做一些工作來推出“適當的”分片。想要以完整(功能) 的形式實現分片還需要很長的時間,但我們能做的是可以一步步地實現它,並從每一步中獲益。首先自然是要實現分片規範的“業務邏輯”,但需要使最先上線的分片數量非常低(比如4 條分片),以此來避免圍繞分片網絡的大多數難點。每條分片將在其自己的
子網絡
中廣播。默認情況下,驗證者將信任委員會,但如果他們願意,他們可以選擇在每個子網絡中,但只有當他們看到了信標區塊確認的任何分片區塊的全部數據時,他們才會接收該信標區塊。
分片規範本身並不是特別困難;它與最近發布的Altair 硬分叉有著類似規模的樣板代碼更改(Altair 的信標變更規範文件是728 行,分片的信標變更規範文件是888 行),因此可以合理地預計它可以在與Altair 的實現和部署類似的時間框架內實現。
增加面向未來的狀態和歷史訪問預編譯,這樣當承諾方案(commitment scheme) 在未來發生改變時,Rollups 就不需要更改它們的代碼。
一級標題
一級標題
將活躍分片的數量從4 條增加到64 條。此時分片數據將進入子網絡,因此屆時的P2P 層必須已經足夠牢固,使得將其分割成更多數量的子網絡變得可行。數據可用性的安全性將基於大多數(驗證者) 誠實假設,依賴於委員會的安全性。
一級標題
一級標題
添加數據可用性抽樣(DAS) 以確保更高級別的安全性,使得即便是在大多數(驗證者) 不誠實的攻擊情況下,用戶也能夠得到保護。數據可用性抽樣可以分階段來進行:首先,以非約束性的方式來允許網絡對其進行測試,然後將其作為接收信標區塊的必要條件,甚至可能先在某些客戶端上進行。
一級標題
一級標題
一級標題
基於分片的Optimistic Rollups 和ZK Rollups

當前的以太坊與實施分片之後的以太坊的一個主要區別就是,在分片的世界裡,Rollup 數據實際上不可能成為向智能合約提交Rollup 區塊的交易的一部分。相反,Rollup 數據的發布與Rollup 區塊的提交將必須是分開的:首先,數據發布將把數據放到鏈上(也就是放到分片鏈中),然後區塊提交將會提交區塊頭以及一個指向底層數據的證明。ZK-SNARKOptimism 和Arbitrum 已經為Rollup 區塊的提交使用了一種兩步式設計,因此這對二者來說都將是一個很小的代碼更改。
對於ZK Rollups,事情有點棘手,因為提交交易需要提供一個直接對數據進行操作的證明。它們可以通過來證明分片中的數據與信標鏈上的承諾相匹配,但這一操作是非常昂貴的。幸運的是,還有更便宜的替代方案。,那麼它們可以簡單地直接將分片數據承諾作為輸入來進行打包。 BLS12-381 分片數據承諾是一個KZG 承諾,與PLONK中的承諾類型相同,因此可以作為公共輸入直接傳遞到證明中。
一級標題
一級標題
一級標題分片世界中,誰將存儲歷史數據?增加數據空間的一個必要條件是
移除以太坊核心協議負責永久性維護達成共識的所有數據的屬性
。因為這些數據量太大了。例如:
EIP-4488 理論上帶來的最大鍊大小是每12 秒的slot 為大約1,262,861 字節,也即每年大約3.0 TB,但實際上每年更有可能是約250-1000 GB,尤其是在開始階段。
4 條分片(每個slot 為1 MB) 每年會增加額外的約2.5 TB。

64 條分片(每個slot 為16 MB) 每年將帶來總計為約40 TB 的存儲。大多數用戶的硬盤驅動器的大小在256 GB 和2 TB 之間,1 TB 似乎是中間值。下圖是一項針對計算機硬盤空間有多大而在一組區塊鏈研究員中開展的內部調查的結果:這意味著用戶當前可以運行一個節點,但如果此路線圖的任何一部分如果不進行修改就實施,那麼用戶將無法運行節點。當然還有更大的驅動器可用,但用戶將必須竭力去購買它們,這大大增加了運行節點的複雜性。當前主要的解決方案是EIP-4444,
此提案消除了節點運營者存儲超過1 年的區塊或收據的這一責任。在分片的情況下,這個1 年的時長將很可能進一步縮短,而且節點將只需要負責他們積極參與的子網絡上的分片。
這就提出了一個問題:如果以太坊核心協議不存儲這些數據,誰來存儲?
首先,重要的是要記住,即使有了分片,數據量也不會那麼大。是的,每年40 TB 確實超出了運行“默認”消費硬件的個人的能力(事實上,即便每年1 TB 也還是如此)。然而,對於一個願意投入一些資源並想辦法來存儲這些數據的人來說,這是在其可接受的範圍內的。當前一台48 TB 的HDD (硬盤驅動器) 的售價是1729 美元,一台14 TB 的是約420 美元。出於可以獲得質押獎勵,某個運行了1 個32 ETH 驗證者插槽的人可能會願意支付並存儲分片實施之後的整條鏈。因此,實際上,「沒有人會存儲某個分片的一些歷史數據以至於這些數據完全丟失」的
這種情況似乎是不可能出現的。
那麼誰將存儲這些數據?我的一些想法:
個人和機構志願者;
區塊瀏覽器(etherchain.org、etherscan.io、amberdata.io 等等) 將肯定會存儲所有數據,因為向用戶提供數據是它們的業務模式。
Rollup DAOs 指定並付費給參與者來存儲並提供與他們的Rollup 相關的歷史數據。
歷史數據可以通過種子(torrents) 進行上傳和共享。
客戶端可以自願選擇隨機存儲區塊鏈的0.05% 的歷史數據(使用糾刪碼,這樣只有當許多客戶端在同一時間離線時才會丟失一小塊數據)。
Portal Network中的客戶端可以隨機存儲一部分區塊鏈歷史數據,且Portal Network 會自動將數據請求導向存儲了該數據的節點。
可以在協議中激勵歷史數據的存儲。


