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: tx calldata擴展

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

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

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

步驟2: 一些分片

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

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

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

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

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

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

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

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

第4步:數據可用性抽樣 (DAS)

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

一旦完全引入數據可用性採樣,分片部署就完成了。

分片環境下的Optimistic和ZK rollup

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

首先,數據發布步驟將數據放在鏈上(放入分片中),然後提交步驟提交其header,以及指向基礎數據。

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

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

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

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

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

誰將在分片環境下存儲歷史數據?

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

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 美元。

那麼誰來存儲這些數據呢?一些想法:

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

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

本文鏈接:https://www.8btc.com/article/6712081

轉載請註明文章出處

(0)
上一篇 2021-11-28 19:28
下一篇 2021-11-28 20:16

相关推荐