撰文:Vitalik Buterin,以太坊聯合創始人
對於以太坊而言,Rollups 是短中期,也可能是長期的唯一無須信任的可擴展性解決方案。以太坊 L1 上的交易費在幾個月以來一直很高,l2fees.info 網站時常顯示 Optimism 和 Arbitrum 網路的費用要比以太坊基礎層本身低了約 3-8 倍,而 zk-Rollups 有著更好的數據壓縮,並且可以避免包含簽名,因此其費用要比以太坊基礎層低約 40-100 倍。
然而,對於許多用戶來說,即便是這些 (Rollups中的) 費用也還是太過昂貴了。很長一段時間以來, 數據分片 (data sharding) 被認為是解決當前形式的 Rollups 的長期不足的解決方案,數據分片有望在以太坊鏈上為 Rollups 增加大約 1-2MB/s 的專用數據空間。本文描述了實現該解決方案的一條實用的路徑,能夠儘可能快地為 Rollups 解鎖數據空間,並隨著時間的推移增加更多額外的空間和安全性。
Step 1: 擴展交易 calldata
目前現有的 Rollups 使用了交易 calldata。因此,如果我們想要在無需讓各個 Rollups 團隊做出任何額外工作的情況下,在短期內提升 Rollups 的容量並降低成本,我們應該降低交易 calldata 的 Gas 成本。當前的平均區塊大小還遠沒有達到威脅以太坊網路穩定性的大小,
參見 EIP-4488 提案,或者另一個 (更簡單但效果更溫和的) EIP-4490 提案。
- EIP-4488:
- EIP-4490:
EIP 4488 應該能將每個 slot 可用於 Rollups 的數據空間增加至理論上最大約 1 MB,並將 Rollups 上的成本降低約 5 倍。這更快地實現
Step 2: 幾條分片
與此同時,我們可以開始做一些工作來推出「適當的」分片。想要以完整 (功能) 的形式實現分片還需要很長的時間,但我們能做的是可以一步步地實現它,並從每一步中獲益。首先自然是要實現分片規範的「業務邏輯」,但需要使最先上線的分片數量非常低 (比如 4 條分片),以此來避免圍繞分片網路的大多數難點。每條分片將在其自己的子網路中廣播。默認情況下,驗證者將信任委員會,但如果他們願意,他們可以選擇在每個子網路中,但只有當他們看到了信標區塊確認的任何分片區塊的全部數據時,他們才會接收該信標區塊。
分片規範本身並不是特別困難;它信標變更規範文件信標變更規範文件
為了使分片數據 (sharded data) 實際上可被 Rollups 使用,Rollups 將需要能夠使其證明 (proofs) 進入到分片數據中。有兩個選擇:
- 增加 BEACONBLOCKROOT 操作碼;Rollups 將增加代碼來驗證根植於歷史信標鏈區塊根的默克爾證明 (Merkle proofs);
- 增加面向未來的狀態和歷史訪問預編譯,這樣當承諾方案 () 在未來發生改變時,Rollups 就不需要更改它們的代碼。
這將使得每個 slot 的 Rollup 數據空間增加至約 2 MB (每個分片 250 kB * 4 個分片,再加上上文 Step 1 中擴大的 calldata)。
Step 3: N 條分片,由委員會保護
將活躍分片的數量從 4 條增加到 64 條。此時分片數據將進入子網路,因此屆時的 P2P 層必須已經足夠牢固,使得將其分割成更多數量的子網路變得可行。數據可用性的安全性將基於大多數 (驗證者) 誠實假設,依賴於委員會的安全性。
這將使得每個 slot 的 Rollup 數據空間增加至約 16 MB (每條分片 250 kB * 64 條分片);我們假設此時 Rollups 將已經從以太坊執行鏈中遷移出來。
Step 4: 數據可用性抽樣 (DAS)
數據可用性抽樣
一旦完全引入了數據可用性抽樣,分片的鋪展就完成了。
基於分片的 Optimistic Rollups 和 ZK Rollups
當前的以太坊與實施分片之後的以太坊的一個主要區別就是,在分片的世界裡,Rollup 數據實際上不可能成為向智能合約提交 Rollup 區塊的交易的一部分。相反,Rollup 數據的發布與 Rollup 區塊的提交將必須是分開的:首先,數據發布將把數據放到鏈上 (也就是放到分片鏈中),然後區塊提交將會提交區塊頭以及一個指向底層數據的證明。
Optimism 和 Arbitrum 已經為 Rollup 區塊的提交使用了一種兩步式設計,因此
對於 ZK Rollups,ZK-SNARK
如果該 ZK-SNARK 是一個基於 BLS12-381 的 PLONK 證明,那麼它們可以簡單地直接將分片數據承諾作為輸入來進行打包。BLS12-381 分片數據承諾是一個 KZG 承諾,與 PLONK 中的承諾類型相同,因此可以作為公共輸入直接傳遞到證明中。
如果 ZK-SNARK 使用了一些不同的機制 (或者即便是 BLS12-381 PLONK 但有著一個更大的可信設置),那麼它可以包含自己的數據承諾,並使用一個等效性證明 (proof of equivalence) 來驗證該證明中的承諾與信標鏈中的承諾
分片世界中,誰將存儲歷史數據?
增加數據空間的一個必要條件是移除以太坊核心協議負責永久性維護達成共識的所有數據的屬性。因為這些數據量太大了。例如:
- 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 年的時長將很可能進一步縮短,而且節點將只需要負責他們積极參与的子網路上的分片。
如果以太坊核心協議不存儲這些數據,誰來存儲?
那麼可以獲得質押獎勵的這種情況似乎是不可能出現的
那麼誰將存儲這些數據?我的一些想法:
- 個人和機構志願者;
- 區塊瀏覽器 (etherchain.org、etherscan.io、amberdata.io 等等) 將肯定會存儲所有數據,因為
- Rollup DAOs 指定並付費給參與者來存儲並提供與他們的 Rollup 相關的歷史數據。
- 歷史數據可以通過種子 (torrents) 進行上傳和共享。
- 客戶端可以自願選擇隨機存儲區塊鏈的 0.05% 的歷史數據 (使用糾刪碼,這樣只有當許多客戶端在同一時間離線時才會丟失一小塊數據)。
- Portal Network 中的客戶端可以隨機存儲一部分區塊鏈歷史數據,且 Portal Network 會自動將數據請求導向存儲了該數據的節點。
- 可以在協議中激勵歷史數據的存儲。
- 像 The Graph 這樣的協議可以創建激勵市場,其中的客戶端向伺服器支付費用,從而獲取歷史數據和證明其正確性的默克爾證明。這就激勵了人們和機構來運行存儲歷史數據的伺服器,並按需提供這些數據。
這些解決方案中的一些方案 (個人和機構志願者、區塊瀏覽器) 已經是可用的了。而當前的 P2P 種子場景更是一個主要由志願者驅動和存儲大量內容的生態系統的絕佳例子。其他基於協議的方案要更加強大,因為它們提供了激勵機制,但它們可能需要更長的時間來進行開發。從長期來看,通過這些 L2 協議來訪問歷史數據,可能要比通過當前的以太坊協議更加有效。
冷萃財經原創,作者:Awing,轉載請註明出處:https://www.lccjd.top/2021/11/27/vitalik%ef%bc%9a%e6%89%a9%e5%b1%95-rollups-%e7%9a%84%e5%88%86%e6%ad%a5%e8%b7%af%e7%ba%bf%e5%9b%be/?variant=zh-tw
文章評論