支持採用仿射計量與統一 Calldata 價格的可變 PTC 截止日期方案

支持採用仿射計量與統一 Calldata 價格的可變 PTC 截止日期方案

ethresear.ch·

本文主張結合可變 PTC 截止日期與單一統一的 calldata 價格,透過仿射計量方式優化以太坊吞吐量並簡化 Gas 計算。

感謝 Toni 提供的反饋。


本文旨在闡述結合變動 PTC(Payload Timeliness Committee)截止時間與單一統一 calldata 價格的理由。建議的方法是將變動 PTC 截止時間與一個上限掛鉤,該上限確保在最晚可能的 PTC 截止時間後,始終留有執行空間——這段時間視窗橫豎無法用於傳播。我們將這種通用方法稱為「仿射計量」(affine metering),因為 calldata 的使用量會線性地推移 PTC 截止時間,從而在 calldata 與執行(execution)之間定義了一種仿射資源限制。

確定的優點如下:

  • 允許以太坊將吞吐量和 Gas 上限大約翻倍,因為 Slot 的更大比例可用於執行。這一點將是本文的重點,並輔以方程式和圖表來支持論點。

  • 簡化 Gas 計費,對所有 calldata 字節採用單一價格。

  • 避免可博弈性。在 EIP-7976 下,由於巨大的價差,具有大量執行需求的交易可能會開始拍賣其廉價的 calldata 配額。

  • 與多維費用市場(multidimensional fee market)相容。其意圖是在 EIP-7999 中採用相同的方法,直到潛在的 Block-in-Blobs (EIP-8142) 實施最終需要對 calldata 定價進行進一步調整。這在本文最後一部分有進一步探討。

缺點是該提案需要更改所有交易的 calldata 價格,而 EIP-7976 僅更改底價。但如果 calldata 重定價本就勢在必行,現在可能是合適的時機。其他幾種資源已經在重新定價,因此更改額外資源的相對影響可以說較小。如果 EIP-7976 仍是 Glamsterdam 升級的首選方案,那麼仿射計量可以作為 Hegota 及其後續階段 calldata 定價的下一步,特別是考慮到它的相容性,且在多維費用市場下也能提供擴容收益。

簡介

在 ePBS 下,PTC 負載觀測截止時間(payload-observation deadline)同時承擔兩項工作。它是負載傳播的及時性閾值,同時也決定了在 Slot 結束前剩餘多少執行時間。EIP-7732 將共識驗證與執行驗證進行了明確分離。目前已有人提出 變動 PTC 截止時間,隨負載大小而移動。變動截止時間將採用 雙截止時間 設計,具有變動的負載觀測時間。據觀察,在 EIP-7976 風格的定價下,變動 PTC 截止時間對擴容的貢獻並不大(1, 2),僅能實現 1/16 的 Gas 上限提升。

在全零 calldata 的最壞情況下,交易中每 15 單位執行 Gas 就能讓用戶以僅 1 單位 Gas 購買價值 16 Gas 的底價 calldata。更高的全局 Gas 上限將允許包含大量 calldata 的負載,而這些 calldata 相對於其真實網絡佔用(由全額 calldata 價格暗示)僅消耗極少的 Gas。變動截止時間僅能支持與「廉價 calldata 相對於底價 calldata 比例」相對應的額外空間,即 4/64 = 1/16。儘管某些單獨的區塊會有更多的餘裕,但如果不允許那些無法及時傳播和執行的區塊,這種餘裕就無法轉化為更高的 Gas 上限。

如果改為對每一單位 calldata 全面應用統一的 calldata 價格(例如 32 gas/byte),情況就會改善。變動 PTC 截止時間隨後可以在其整個運行範圍內提供擴容收益——從可能交付小型負載的最早點,到 PTC 投票同時留出投票傳播時間的最晚點。本文回顧了變動 PTC 截止時間下的仿射計量,建立了通用方程式,並說明了擴容收益。

通用模型

應如何處理 calldata,以在 ePBS 強加的約束下實現最大程度的擴容?令 T_1 為證明(attestation)截止時間,T_2 為最晚可能的 PTC 截止時間,T_3 為 Slot 結束時間,c 為固定的傳播開銷。雖然已經開發了更複雜的計時模型來測量傳播時間,但這裡使用簡單模型即可。令 g_c 表示負載使用的 calldata gas,G_c 表示對應於最大數據負載的 calldata-gas 預算,即剛好被允許在 T_2 抵達的負載。總 Gas 上限記為 G;雖然可以保持 G_c = G,但最好對 calldata 實施更嚴格的限制 G_c < G,如下所示。令 t_b 為每字節 calldata 的傳播時間,B 為最大 calldata 字節預算。同樣的方法可以擴展到其他字節,例如 BAL 字節或任何受區塊大小限制涵蓋的字節(如 EIP-7934)。整合此類考量很重要,但並非本文重點,本文重點在於基準建模。

為確保負載能在 T_2 前完全傳播,最大字節預算必須滿足:

T_1 + c + t_b B = T_2。

因此,calldata 字節大小的約束為:

B = \frac{T_2 - T_1 - c}{t_b}。

如果 calldata 具有單一價格,且按每字節 g_b gas 線性定價,則 calldata gas 預算為:

G_c = g_b B,

因此所需的 calldata gas 價格為:

g_b = \frac{G_c}{B} = \frac{t_b G_c}{T_2 - T_1 - c}。

等價地,對於使用 g_c calldata gas 的負載,變動 PTC 截止時間可以直接寫為:

T_{\mathrm{PTC}}(g_c) = T_1 + c + \frac{g_c}{G_c}(T_2 - T_1 - c)。

定義 calldata 比例 p = \frac{g_c}{G_c} 會很方便。由於在此模型中 calldata 是線性定價的,p 也是所使用的最大字節預算的比例。之前的表達式變為:

T_{\mathrm{PTC}}(p) = T_1 + c + p(T_2 - T_1 - c)。

這使得依賴關係變得清晰:隨著 calldata 使用量從 0 移向 G_c,截止時間從 T_1+c 線性移動到 T_2。PTC 截止時間後留下的執行視窗為:

W_e(p) = T_3 - T_{\mathrm{PTC}}(p)。

代入後得出:

W_e(p) = (T_3-T_2) + (1-p)(T_2-T_1-c)。

因此,隨著 calldata 使用量減少,未使用的傳播時間變成了額外的執行視窗。圖 1 顯示了在以下說明性條件下,定價和計量如何影響擴容:

T_1 = 3\mathrm{s}, \qquad T_2 = 9\mathrm{s}, \qquad T_3 = 12\mathrm{s}, \qquad c = 2\mathrm{s}。

為了讓擴容效果更容易觀察,兩個軸都進行了歸一化。縱軸是字節份額 b,即 calldata 字節除以字節上限 B,因此在線性定價下 b=p=g_c/G_c。橫軸是相對於原始全執行區塊的執行量:

e = \frac{W_e(p)}{T_3-T_2}。

在這些歸一化示例中,1 單位 e 是填滿原始 T_3-T_2 執行視窗的執行工作量。

圖 1. 說明在簡化定價和仿射計量的變動 PTC 截止時間下的擴容收益。在藍色提案下,相對於固定 PTC 截止時間,Gas 上限可以提高 s = 7/3 倍。在紅色的 EIP-7976 下,餘裕僅為 1/16,即 17/16 的倍數。在橘色的當前 EIP-7623 下,變動 PTC 截止時間帶來的收益可能比 EIP-7976 更大,但該 EIP 隨著 Gas 上限增加允許了過大的負載。對於細虛線所示的典型區塊組成,提案設計實現的吞吐量約為 EIP-7976 的兩倍(比較藍色和紅色圓圈)。

在提案下,歸一化執行邊界變為:

e = 1 + \frac{T_2-T_1-c}{T_3-T_2}(1-b)。

對於建議的條件,我們有 T_2-T_1-c = 4\mathrm{s},且 T_3-T_2 = 3\mathrm{s}。因此提案邊界變為:

e = 1 + \frac{4}{3}(1-b)。

這是圖 1 中的藍色實線。分數 4/7 來自計時分配:變動傳播間隔為 4\mathrm{s},而從 T_1+c 到 T_3 的完整後開銷間隔為 7\mathrm{s}。它對應於 calldata 上限 G_c=\frac{4}{7}G,使得最大數據負載區塊(b=1)仍留有一個完整執行區塊(e=1)的空間。在另一個極端,當 b=0 時,從 T_1+c 到 T_3 的整個間隔都可用於執行,得出 e=\frac{7}{3}。具體而言,若 G=300\mathrm{M} 且 G_c=4G/7,統一 calldata 價格為 32 gas/byte 時最大可容納 5.36 MB calldata,而 48 gas/byte 時為 3.57 MB。

藍色虛線則顯示了 G_c=G 的情況。在這種情況下,字節和執行在相同的 Gas 預算下完全權衡,因此最大數據負載區塊可以消耗整個 Gas 上限,在 Gas 核算中不留執行空間。圖 1 還包括一條灰色基準線 e+b=1,其中執行和字節簡單地一對一替代,就像 EIP-7623 之前的情況一樣。

橘色和紅色線假設字節端被單獨限制在原始最大 calldata 區塊。如果沒有這樣的上限,在 EIP-7976 下將 Gas 上限從 G 提高到 G' 只會讓全底價最大字節區塊從 G/64 增長到 G'/64,從而導致區塊超出傳播預算。有了字節上限,額外的 Gas 只能表現為執行,而每單位字節份額僅按「零字節/底價」比例置換執行:EIP-7976 為 4/64=1/16,EIP-7623 為 4/10=0.4。因此,隨著字節份額從 0 移向 1,紅線僅下降 1/16,使其幾乎垂直。下一節將提供更全面的分析。較淡的紅色和橘色線段顯示了原始 Gas 上限 s=1 時對應的固定截止時間邊界。變動 PTC 截止時間將這些邊界向右移動。

圓圈標記了與說明性組合 b=e/9 的交點,對應於歸一化的 9:1 執行與字節組合,或 9/10 執行和 1/10 字節。對於 EIP-7623 和 EIP-7976,該點根據假設的交易組合進行了偏移,其中 5/6 的字節是以廉價購買的,1/6 是按底價購買的。

變動 PTC 截止時間下 EIP-7623 和 EIP-7976 定價的局限性

此處提供重點略有不同的單獨解釋(1, 2)。

圖 1 中的提案直接根據 calldata 造成的傳播負擔進行定價。在這種情況下,減少 calldata 總能釋放傳播時間,進而可用作額外的執行時間。在 EIP-7976 和 EIP-7623 下,calldata 有兩個有效價格。部分 calldata 可以隨執行一起廉價攜帶,而剩餘的 calldata 則以較高的底價購買。

假設固定截止時間的 Gas 上限已經提高到純計算區塊剛好填滿執行視窗,且最大字節區塊剛好填滿傳播視窗。在 EIP-7976 下,全底價最大字節區塊的大小為 B = G/64。如果我們現在將 Gas 上限提高到 G' > G,那個最壞情況的全底價區塊將增長到 B' = G'/64。由於舊的最大字節區塊已經剛好在 T_2 前擬合,新的區塊則不然。在這種框架下,變動 PTC 截止時間本身根本無法證明任何 Gas 上限的提升。

然而,如果字節大小也被固定在 B(例如通過單獨的字節大小上限),那麼將 Gas 上限提高到 G' 就變得可能。包含幾乎全是執行的區塊隨後可以被分配一個較早的截止時間。一旦區塊開始隨執行攜帶一些廉價字節,截止時間就必須推後,直到最終回到其在 T_2 的原始起點。

這發生在區塊花費 G gas 用於執行,並花費 G'-G gas 用於廉價字節時。既定的最大字節量為 B = G/64。由於廉價字節的成本可以為 4 gas/byte,以該價格購買相同的字節量僅需 4B = 4(G/64) = G/16。因此,G'-G = G/16,得出 G' = (17/16)G。因此,在所尋求的區塊組成中,用於廉價 calldata gas 的比例為 (G/16)/(17G/16) = 1/17,而剩餘的 16/17 用於執行 gas。

圖 2 說明了在先前使用的計時條件下的計算結果。x 軸是最佳 PTC 截止時間,y 軸是相對於原始固定截止時間 Gas 上限的 Gas 上限倍數 s=G'/G。每個標記固定了一種區塊組成:標籤給出了用於廉價字節的提高後 Gas 上限比例,其餘為執行。

圖 2. 隨著用於廉價 calldata 的 Gas 份額增加,EIP-7976 下的安全 Gas 上限倍數(假設字節上限保持固定在原始最大 calldata 區塊)。每個標記標註了廉價字節 Gas 份額;其餘為執行。曲線從 T_1+c=5\mathrm{s} 時的純執行極限 7/3 下降到 T_2=9\mathrm{s} 時的關鍵 1/17 點,此時倍數為 17/16。到 1/16 的虛線延續顯示了舊的最大字節廉價組合,它在原始 Gas 上限時就已填滿字節上限,因此沒有擴容收益。

在純執行 (0) 下,PTC 截止時間可以一直移動到 T_1+c,產生最大的執行視窗。隨著廉價字節份額增加,更多字節必須傳播,因此最佳截止時間向後移動,安全 Gas 上限倍數下降。關鍵點是 1/17 標記。在這種組成下,區塊包含原始最大字節量 B 和原始完整執行 gas G。兩個約束都在舊的固定截止時間綁定,因此最佳截止時間再次為 T_2 = 9\mathrm{s},Gas 上限倍數為 17/16。到 1/16 的虛線延續僅作為視覺輔助:該組成在原始 Gas 上限時就已填滿字節上限,因此不提供擴容收益。

要在 EIP-7976 下恢復更大的變動 PTC 擴容收益,需要截止時間隨原始 calldata 字節而非 EIP-7976 calldata gas 變動。然而,如果原始字節是稀缺的計時資源,那麼兩種價格水平消耗相同的傳播預算,但支付的 Gas 卻不同。廉價 calldata 隨後可能需要通過優先費用(priority fees)來競爭原始字節容量,這將是一個嚴重的 UX 問題。

多維費用市場下的仿射計量

本提案的仿射計量方法也可以應用於多維費用市場,如 EIP-7999。有兩種自然的方法可以做到這一點:

應用本文概述的基準提案,只要仍有單一的 EVM-gas 資源,就不需要任何根本性更改。如果執行被拆分為多種資源,則必須考慮它們對處理時間的共同影響。

將 calldata 拆分為單獨的資源,但使用其原始字節消耗(或作為原始字節恆定倍數的 calldata-gas 單位)來定義變動 PTC 截止時間,與之前完全相同。

我們這裡將重點放在 (2)。這種方法唯一根本性的區別是 calldata 有其自己的資源基礎費用(base fee)。仍會有一個限制 G_c,決定區塊最多可以消耗多少 calldata,且與之前一樣,可以設置此限制使典型區塊遠未達到該限制。在區塊層級,calldata 字節仍會通過施加條件 e+r b\le 1+r 來約束可用於執行的 Gas 和 PTC 截止時間,其中 r=(T_2-T_1-c)/(T_3-T_2) 是傳播與執行的計時比率。由於 calldata 大小可以預先靜態確定,這在實施上非常直接。它不會產生那種當資源消耗必須在 EVM 運行時確定時會出現的複雜情況。

為了連續性,calldata 字節消耗仍可以以 Gas 計價,前提是該 Gas 是原始字節消耗的固定倍數。然而,這不是必需的,calldata 資源也可以直接以字節計價。每字節的價格仍會調整,使得平均每個區塊消耗目標數量的字節。

總之,通過對 EIP-7999 進行適度修改,本文概述的擴容收益也可以在多維費用市場下實現,從而進一步提升此類費用市場已經實現的擴容收益。

        1 則貼文 - 1 位參與者

        [閱讀完整主題](https://ethresear.ch/t/the-case-for-a-variable-ptc-deadline-with-affine-metering-and-a-unified-calldata-price/24708)

ethresear.ch

相關文章

  1. 為何可變有效載荷截止時間僅能帶來約 6% 的提升

    大約 1 個月前

  2. EIP-TBA:透過新的費用計算規則提升交易Gas上限

    Ethereum Magicians · 4 個月前

  3. EIP-8223:合約付款人交易

    Ethereum Magicians · 12 天前

  4. 草案 ERC:支付門檻交易中繼協議

    Ethereum Magicians · 大約 1 個月前

  5. 用於帳戶功能的擴展執行交易架構

    Ethereum Magicians · 15 天前