Vitalik:用calldata擴充套件和分片降低以太坊rollup成本

注:原文作者是以太坊聯合創始人vitalik buterin。

Rollup 是以太坊唯一的去信任擴容解決方案,它是短期和中期的解決方案,也可能會是長期的解決方案。幾個月來,以太坊L1上的交易費用一直居高不下,而且我們迫切需要做任何必要的事情來幫助促進整個生態系統向rollup的遷移。Rollup 已經幫助很多以太坊使用者顯著降低了費用:根據l2fees。info顯示,Optimism 和 Arbitrum 提供的費用比以太坊基礎層本身低約 3-8 倍,而ZK rollup方案具有更好的資料壓縮,並且可以避免包含簽名,因此這些L2的費用比基礎層低約40-100倍。

然而,這樣的費用對很多使用者來說還是太貴了。長期以來,人們一直認為改善目前形式rollup的解決方案是資料分片,這將為鏈中的rollup增加約1-2 MB/s的專用資料空間。本文描述了實現該解決方案的實用途徑,以儘快為rollup開啟資料空間,並隨著時間的推移增加額外的空間及安全性。

1

步驟1: tx calldata擴充套件

今天現有的rollup使用了tx calldata,因此,如果我們想在不要求rollup 團隊做任何額外工作的情況下,短期提升 rollup 容量並降低成本,我們只需降低tx calldata的成本。今天的平均區塊大小遠不會威脅到網路穩定性,因此可以安全地做到這一點,儘管它可能需要一些額外的邏輯來防止非常不安全的邊緣情況。

請參閱:EIP 4488,或替代方案EIP 4490‌(更簡單但效果更溫和)。

EIP 4488 應將可用於rollup的的資料空間增加到每個slot 約 1 MB 的理論最大值,並將rollup成本降低至原來的1/5,它可以比後面的步驟更快地實施。

2

步驟2: 一些分片

同時,我們可開展工作以推出“適當的”分片。以完整形式實現適當的分片需要很長時間,但我們可以做的是一點一點地實現它,並從每個部分中受益。要實現的第一個自然部分是分片規範的“業務邏輯”,透過將分片的初始數量保持在非常低的水平(例如 4),以避免大部分與網路相關的困難。每個分片都將在其自己的子網上廣播。預設情況下,驗證者會信任委員會,但如果他們願意,他們可以選擇在每個子網上,並且只有在他們看到信標區塊確認的任何分片區塊的完整body主體後才接受一個信標區塊。

分片規範本身並不是特別困難,這是一個與最近釋出的Altair 硬分叉類似的樣板程式碼更改(Altair 信標更改規範檔案長 728 行,分片信標更改規範檔案長 888 行),因此可以合理地期望它可實現與 Altair 的實施和部署相似的時間範圍內。

為了使分片資料真正可用於rollup,rollup需要能將證明放入分片資料中,這有兩種選擇:

新增 BEACONBLOCKROOT 操作碼,rollup 將新增程式碼來驗證植根於歷史信標鏈區塊根的 Merkle 證明。新增面向未來的狀態和歷史訪問預編譯,以便在未來承諾方案發生變化時,rollup不需要更改其程式碼。

這會將rollup資料空間增加到每個slot約 2 MB(每個分片 250 kB * 4 個分片,加上步驟 1 中擴充套件的 calldata)。

3

第 3 步:N 個分片,受委員會保護

這一步將活動分片的數量從 4 個增加到 64 個,分片資料現在將進入子網,因此此時 P2P 層必須已經足夠穩固,可以拆分成更多的子網。資料可用性的安全性將基於誠實多數,依賴於委員會的安全性。

這會將rollup資料空間增加到每個slot約 16 MB(每個分片 250 kB * 64 個分片),我們假設此時 rollup 已經從執行鏈中遷移出來。

4

第4步:資料可用性抽樣 (DAS)

到了這一步,我們會新增資料可用性取樣(DAS)以確保更高級別的安全性,即使在發生不誠實的多數攻擊時也能保護使用者。資料可用性取樣可以分階段推出:首先,以非繫結方式允許網路對其進行測試,然後作為接受信標區塊的要求,甚至可能在其他客戶端之前在某些客戶端上進行。

一旦完全引入資料可用性取樣,分片部署就完成了。

5

分片環境下的Optimistic和ZK rollup

分片世界和現狀之間的一個主要區別是,在分片世界中,rollup資料實際上不可能成為將rollup區塊提交到智慧合約的交易的一部分。相反,資料釋出步驟和rollup區塊提交步驟必須分開:

首先,資料釋出步驟將資料放在鏈上(放入分片中),然後提交步驟提交其header,以及指向基礎資料。

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

而對於ZK rollup而言,事情有點棘手,因為提交交易需要提供直接對資料進行操作的證明。他們可以做一個 ZK-SNARK 的證明,證明分片中的資料與信標鏈上的承諾相匹配,但這非常昂貴。幸運的是,還有更便宜的選擇。

如果ZK-SNARK是基於BLS12-381的PLONK證明,那麼他們可以直接將分片資料提交作為輸入。BLS12-381 分片資料承諾是 KZG 承諾,與 PLONK 中的承諾型別相同,因此它可以作為公共輸入直接傳遞到證明中。

如果 ZK-SNARK 使用一些不同的方案(甚至只是 BLS12-381 PLONK,但具有更大的可信設定),則它可以包括自己對資料的承諾,並使用等價性證明來驗證證明中的承諾和信標鏈中的承諾是否承諾了相同的資料。

6

誰將在分片環境下儲存歷史資料?

增加資料空間的一個必要條件,是刪除以太坊核心協議負責永久維護所有達成共識的資料的屬性。資料量太大,不需要這樣做。例如:

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 似乎是中位數。根據一組區塊鏈研究人員的內部民意調查顯示:

Vitalik:用calldata擴充套件和分片降低以太坊rollup成本

這意味著使用者可以負擔得起目前執行節點的費用,但如果該路線圖的任何部分在沒有進一步修改的情況下實施,則使用者將無法負擔。可以使用更大的硬碟,但使用者必須竭盡全力購買它們,這顯著增加了執行節點的複雜性。關於這個問題,領先的解決方案是EIP-4444,它消除了節點運營商儲存超過 1 年的區塊或收據的責任。在分片的環境下,這個時間段可能會進一步縮短,節點將只負責他們積極參與的子網上的分片。

這留下了一個問題:如果以太坊核心協議不儲存這些資料,那誰來儲存?

首先,重要的是要記住,即使使用分片,資料量也不會那麼大。是的,對於執行“預設”消費硬體的個人來說,每年 40 TB 是不可接受的(事實上,即使是每年 1 TB 也是如此)。然而,它完全在願意投入一些資源和工作來儲存資料的專職個人的範圍內。舉例來說,一個48 TB 硬碟的售價是1729美元,14 TB硬碟的售價約 420 美元。

那麼誰來儲存這些資料呢?一些想法:

個人和機構志願者;區塊鏈瀏覽器(etherchain。org、etherscan。io、amberdata。io。。。)肯定會儲存所有的資料,因為向用戶提供資料是他們的商業模式。Rollup DAO提名和支付參與者,以儲存和提供與其rollup相關的歷史記錄;歷史資料可以透過torrents上傳和共享;客戶端可自願選擇儲存隨機的0。05%的鏈歷史記錄(使用擦除編碼)。Portal Network中的客戶端可以儲存鏈歷史的隨機部分,Portal Network將自動將資料請求定向到擁有資料的節點。可以在協議內激勵歷史資料儲存。像 The Graph 這樣的協議可以建立激勵市場,客戶端可透過其正確性的Merkle 證明來向伺服器支付歷史資料。這促使人們和機構執行儲存歷史資料並按需提供的伺服器。

其中一些解決方案(個人和機構志願者、區塊瀏覽器)已經存在,特別是 p2p Torrent 場景是一個很好的例子,它是一個主要由志願者驅動(儲存大量資料內容)的生態系統。剩下的基於協議的解決方案更強大,因為它們提供了激勵,但需要更長的時間來開發。從長遠來看,透過這些第二層協議訪問歷史記錄很可能比今天透過以太坊協議更有效。