由 Kev 和 Julian 撰寫。感謝 Toni 和 Francesco 提供的反饋。
延遲執行是以太坊的一項擬議升級,旨在提高 gas 限制。與需要在證明前執行區塊不同,延遲執行中,證明者對區塊進行簡單檢查並在執行交易前投票。用 zkVM 替換當前的 EVM是另一項擬議的以太坊升級,以提高 gas 限制。使用 zkVM 時,證明者只需驗證區塊已被有效執行的簡潔證明。本文探討了延遲執行和 zkVM 之間的互動。請注意,延遲執行的主要目標之一是促進以太坊 L1 上的 zkVM 證明。
我們建議將證明區塊 n 正確執行的責任分配給該區塊的構建者,但允許該構建者在下一個插槽 n+1 的區塊中強制包含證明。
這項提案改善了證明的激勵機制對齊,特別是針對所謂的"證明者殺手"。證明者殺手是專門構建的區塊,其證明成本高昂,但建立成本相對較低。它們利用以太坊協議在 gas 單位上收取的操作費用與證明者實際產生的成本之間的不對稱性。如果插槽 n+1 的構建者負責證明插槽 n 的區塊,那麼插槽 n 的構建者可能會建立這樣一個證明者殺手來損害插槽 n+1 的構建者。這項提案透過將插槽 n 區塊的證明責任分配給插槽 n 的構建者,消除了這種激勵不相容性。
在構建者活躍性出現問題時,改善的激勵機制對齊尤其有幫助。假設有一個極其強大的構建者建立了一個大型區塊後離線(或者一個表現得像這個構建者的構建者卡特爾)。在這種情況下,較小的備用構建者可能無法為前一個區塊建立證明。這種情況可能使(構建者)卡特爾能夠"勒索以太坊"並提取租金。如果插槽 n 的構建者負責插槽 n 的證明,這種現象就會消失。如果構建者離線,區塊內容將被跳過(如下所述),下一個插槽的構建者可以構建一個可以自我證明的區塊。因此,這項提案有助於將吞吐量與本地構建解耦,因為它有利於區塊生產的活躍性。
同插槽證明提案
插槽
n,t=0:插槽n的構建者傳播信標區塊。執行載荷被打包成 blob 並傳播。插槽
n,t=X(假設 t = 2):證明者靜態驗證信標區塊,如延遲執行 EIP 中概述的。插槽
n,t=Y(假設 t = 9)(證明觀察截止時間):證明者凍結他們對是否有可用證明的看法,該證明以預狀態根和 kzg 承諾為輸入,輸出後狀態根。插槽
n+1,t=0:插槽n+1的構建者在可用時包含前一個區塊正確執行的證明。插槽
n+1,t=X:證明者完全驗證區塊n。每個證明者根據其本地檢視執行以下檢查。- 在證明觀察截止時間,區塊
n的證明是否可用? - 如果是,證明是否正確?
- 如果是,與 kzg 承諾對應的 blob 是否可用。
如果證明者對所有問題都回答"是",它將為包含區塊
n證明的插槽n+1投票。如果證明者對第一個問題回答"否",它將在以下兩個條件之一成立時為區塊投票:- 區塊中未包含證明。
- 包含了正確的證明,且 kzg 承諾對應一個可用的 blob。
- 在證明觀察截止時間,區塊
如果區塊 n+1 中未包含區塊 n 的證明,或者與證明對應的 blob 資料不可用,區塊 n+1 應將區塊 n 的執行視為無操作,即區塊 n+1 的預狀態與區塊 n 的預狀態相同。這種機制確保了證明和載荷資料都可用,保證了安全性和活躍性。正如 Toni 和 Francesco 所argue 的那樣,將區塊視為無操作並不會暴露免費的資料可用性,因為區塊生產者放棄執行獎勵以獲得"免費"的資料可用性。
請注意,插槽 n 的證明者還會完全驗證區塊 n-1,插槽 n+1 的證明者還會靜態驗證區塊 n+1。完全驗證包括驗證證明的正確性和及時性,如上所述。
額外考慮
同插槽證明架構依賴於檢視合併(view-merge),這是 Francesco 在這篇文章中描述的一個分叉選擇小工具。檢視合併假設網路延遲低於某個常數 Δ。證明觀察截止時間應最晚設定在 t = 12 - Δ。如果網路延遲小於 Δ,構建者的檢視是證明者凍結檢視的超集,這意味著證明者不會強制構建者包含在證明觀察截止時間後傳播的證明,從而防止分裂檢視攻擊。檢視合併是支援 MEV-Burn 和 FOCIL 等設計的相同分叉選擇小工具。
最後,請注意,同插槽證明架構不依賴於是否有一個或多個 zkVM 被內建。如果需要多個 zkVM 證明,完全驗證區塊的證明者應根據其本地檢視檢查區塊中是否包含了必要的多個正確證明。

