Vitalik:擴展Rollups的分步路線圖

Unitimes
2021-11-27 22:51:53
收藏
本文描述了實現該解決方案的一條實用的路徑,能夠儘可能快地為 Rollups 解鎖數據空間,並隨著時間的推移增加更多額外的空間和安全性。

原文標題:《 A step-by-step roadmap for scaling rollups with calldata expansion and sharding 》

原文作者: Vitalik Buterin,以太坊聯合創始人

原文編譯:南風,Unitimes

對於以太坊而言,Rollups 是短中期,也可能是長期的唯一無須信任的可擴展性解決方案。以太坊 L1 上的交易費在幾個月以來一直很高,現在更迫切的是採取一切必要的行動,幫助推動整個生態系統轉移到 Rollups。Rollups 已經大大降低了許多以太坊用戶的費用: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:

https://github.com/ethereum/EIPs/pull/4488

  • EIP-4490:

https://github.com/ethereum/EIPs/pull/4490

EIP 4488 應該能將每個 slot 可用於 Rollups 的數據空間增加至理論上最大約 1 MB,並將 Rollups 上的成本降低約 5 倍。這可以比後面的步驟更快地實現。

Step 2: 幾條分片

與此同時,我們可以開始做一些工作來推出「適當的」分片。想要以完整 (功能) 的形式實現分片還需要很長的時間,但我們能做的是可以一步步地實現它,並從每一步中獲益。首先自然是要實現分片規範的「業務邏輯」,但需要使最先上線的分片數量非常低 (比如 4 條分片),以此來避免圍繞分片網絡的大多數難點。每條分片將在其自己的子網絡中廣播。默認情況下,驗證者將信任委員會,但如果他們願意,他們可以選擇在每個子網絡中,但只有當他們看到了信標區塊確認的任何分片區塊的全部數據時,他們才會接收該信標區塊。

分片規範本身並不是特別困難;它與最近發布的 Altair 硬分叉有著類似規模的樣板代碼更改 (Altair 的信標變更規範文件是 728 行,分片的信標變更規範文件是 888 行),因此可以合理地預計它可以在與 Altair 的實現和部署類似的時間框架內實現。

為了使分片數據 (sharded data) 實際上可被 Rollups 使用,Rollups 將需要能夠使其證明 (proofs) 進入到分片數據中。有兩個選擇:

1,增加 BEACONBLOCKROOT 操作碼;Rollups 將增加代碼來驗證根植於歷史信標鏈區塊根的默克爾證明 (Merkle proofs);

2,增加面向未來的狀態和歷史訪問預編譯,這樣當承諾方案 (commitment scheme) 在未來發生改變時,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)

添加數據可用性抽樣 (DAS) 以確保更高級別的安全性,使得即便是在大多數 (驗證者) 不誠實的攻擊情況下,用戶也能夠得到保護。數據可用性抽樣可以分階段來進行:首先,以非約束性的方式來允許網絡對其進行測試,然後將其作為接收信標區塊的必要條件,甚至可能先在某些客戶端上進行。

一旦完全引入了數據可用性抽樣,分片的鋪展就完成了。

基於分片的 Optimistic Rollups 和 ZK Rollups

當前的以太坊與實施分片之後的以太坊的一個主要區別就是,在分片的世界裡,Rollup 數據實際上不可能成為向智能合約提交 Rollup 區塊的交易的一部分。相反,Rollup 數據的發布與 Rollup 區塊的提交將必須是分開的:首先,數據發布將把數據放到鏈上 (也就是放到分片鏈中),然後區塊提交將會提交區塊頭以及一個指向底層數據的證明。

Optimism 和 Arbitrum 已經為 Rollup 區塊的提交使用了一種兩步式設計,因此這對二者來說都將是個很小的代碼更改。

image

對於 ZK Rollups,事情有點棘手,因為提交交易需要提供一個直接對數據進行操作的證明。它們可以通過 ZK-SNARK 來證明分片中的數據與信標鏈上的承諾相匹配,但這一操作是非常昂貴的。幸運的是,還有更便宜的替代方案。

如果該 ZK-SNARK 是一個基於 BLS12-381 的 PLONK 證明,那麼它們可以簡單地直接將分片數據承諾作為輸入來進行打包。BLS12-381 分片數據承諾是一個 KZG 承諾,與 PLONK 中的承諾類型相同,因此可以作為公共輸入直接傳遞到證明中。

如果 ZK-SNARK 使用了一些不同的機制 (或者即便是 BLS12-381 PLONK 但有著一個更大的可信設置),那麼它可以包含自己的數據承諾,並使用一個等效性證明 (proof of equivalence) 來驗證該證明中的承諾與信標鏈中的承諾是對相同數據的承諾。

分片世界中,誰將存儲歷史數據?

增加數據空間的一個必要條件是移除以太坊核心協議負責永久性維護達成共識的所有數據的屬性。因為這些數據量太大了。例如:

1,EIP-4488 理論上帶來的最大鏈大小是每 12 秒的 slot 為大約 1,262,861 字節,也即每年大約 3.0 TB,但實際上每年更有可能是約 250-1000 GB,尤其是在開始階段。

2,4 條分片 (每個 slot 為 1 MB) 每年會增加額外的約 2.5 TB。

3,64 條分片 (每個 slot 為 16 MB) 每年將帶來總計為約 40 TB 的存儲。

大多數用戶的硬碟驅動器的大小在 256 GB 和 2 TB 之間,1 TB 似乎是中間值。下圖是一項針對計算機硬碟空間有多大而在一組區塊鏈研究員中開展的內部調查的結果:

image

這意味著用戶當前可以運行一個節點,但如果此路線圖的任何一部分如果不進行修改就實施,那麼用戶將無法運行節點。當然還有更大的驅動器可用,但用戶將必須竭力去購買它們,這大大增加了運行節點的複雜性。當前主要的解決方案是 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 會自動將數據請求導向存儲了該數據的節點。

可以在協議中激勵歷史數據的存儲。

像 The Graph 這樣的協議可以創建激勵市場,其中的客戶端向伺服器支付費用,從而獲取歷史數據和證明其正確性的默克爾證明。這就激勵了人們和機構來運行存儲歷史數據的伺服器,並按需提供這些數據。

這些解決方案中的一些方案 (個人和機構志願者、區塊瀏覽器) 已經是可用的了。而當前的 P2P 種子場景更是個主要由志願者驅動和存儲大量內容的生態系統的絕佳例子。其他基於協議的方案要更強大,因為它們提供了激勵機制,但它們可能需要更長的時間來進行開發。從長期來看,通過這些 L2 協議來訪問歷史數據,可能要比通過當前的以太坊協議更加有效。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
ChainCatcher 與創新者共建Web3世界