
支持採用仿射計量與統一 Calldata 價格的可變 PTC 截止日期方案
本文主張結合可變 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 中的提案直接根據 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)
相關文章