本文回顧了EIP-8037中當用戶不願將50%的預算用於狀態創建時出現的兩種平衡失效模式,並提出了相應的狀態gas擴容措施。極端情況下,如果用戶繼續像現在這樣,每消耗一個常規gas單位就創建相同數量的狀態字節,而以太坊將gas上限提高10倍,那麼在平衡狀態下,常規區塊空間的使用率將約為6.2%。這將使通過ePBS和BAL實現的大部分擴容收益付諸東流。如果需求未能實現50/50的支出分配,可以採取兩種直接調整措施:(1)採用EIP-8075定價機制,該機制會自動擴展和收縮狀態gas上限;或者(2)手動擴展/收縮狀態gas上限,可以通過常規硬分叉或“僅狀態gas參數”(SGPO)硬分叉來實現。
故障模式
以太坊正致力於擴展 Layer 1,其中最受矚目的EIP-7732 (ePBS) 和EIP-7928 (BAL) 計劃納入 Glamsterdam 版本。如果不調整狀態創建的 gas 成本,狀態的增長很可能與 gas 上限的提升大致同步。因此,EIP-8037 大幅提高了狀態創建的 gas 成本。這一變化引發的一個擔憂( 1 , 2 , 3 )是,用於狀態創建的總 gas 消耗比例可能會上升,從而擠佔常規 gas 的使用。例如,假設 ePBS 和 BAL 加上計算重新定價機制,允許 gas 上限為 6 億,這是本文討論數值的中點。在當前基於EIP-8011計量規則的 EIP-8037 規範下,如果用戶對狀態 gas 成本的增加不敏感,並且像現在一樣創建狀態並保持與消耗的常規 gas 比例相同,那麼在均衡狀態下,常規區塊空間的使用率將僅為 6.2% 左右。 ePBS、BAL 和計算重新定價帶來的擴展性收益將基本喪失。
當然,我們或許希望當狀態創建成本增加時,用戶每消耗一個常規 gas 單位所創建的狀態字節數會減少,但狀態創建需求的價格彈性未知,而且似乎無法可靠地預測。例如,如果用戶每消耗一個常規 gas 單位所創建的狀態字節數減半,情況會有所改善,The Blockgas 限額的 12.3% 可以被利用。理想情況下,用戶每消耗一個常規 gas 單位所創建的狀態字節數會比現在減少 8.1 倍。在這種情況下,狀態 gas 和常規 gas 的利用率可以達到 50/50(或者更實際一些,如果 EIP-8011 定價採用 max 操作符,則可能更接近 40/40 )。如果狀態創建的相對消耗量下降幅度超過這個範圍,則會產生相反的效果,用戶每年創建的狀態數將低於預期的 100 GiB。
圖 1 概述了 EIP-8011 定價機制下可能出現的兩種平衡失效模式:狀態字節創建量過少或常規 gas 消耗量過少。當前設計在用戶願意將預算的 50% 用於常規 gas、50% 用於狀態 gas 的情況下達到最優,而與兩者之間的相對價格無關。否則,在平衡狀態下,其中一方的消耗量將會超過另一方。
圖 1. EIP-8037 中應用的 EIP-8011 定價機制的兩種失效模式。如果狀態創建的需求相對低於研究人員的預測,則均衡狀態下創建的狀態過少(其價格過高,無法滿足需求)。如果狀態創建的需求相對高於研究人員的預測,則均衡狀態下消耗的普通天然氣過少(其價格過高,無法滿足需求)。
避免失敗
更深層次的問題在於,EIP-8011定價機制無法追蹤狀態隨時間的變化(或者更廣義地說,無法追蹤任何反映狀態操作和非狀態操作之間需求平衡的值)。因此,它無法調整狀態gas成本,使狀態資源和常規資源的需求都達到目標水平。最終,在均衡狀態下,狀態資源或所有其他資源都可能嚴重未得到充分利用。有兩種方法可以緩解這個問題:
- 使用頭部變量跟蹤狀態隨時間的變化,並自動調整狀態 gas 和常規 gas 之間的平衡,如 EIP-8075 中所述;或者
- 在觀察到分佈不平衡後,手動重新調整狀態氣體和常規氣體之間的平衡,可能僅使用狀態氣體(或狀態增長)參數進行硬分叉。
(1)通過 EIP-8075 避免故障模式
將 EIP-8075 定價機制應用於 EIP-8037 可以以一種合理的方式解決該問題。在 EIP-8075 機制下,狀態創建的 gas 成本會隨需求變化而調整,從而確保隨著時間的推移創建所需數量的狀態字節。狀態 gas 的目標值和上限會隨著 gas 成本自動擴展和收縮(因為定價機制是基於狀態字節運行的)。計量 gas 的計算方法是常規 gas 消耗量與歸一化狀態 gas 消耗量的平均值。這使得常規 gas 的消耗量能夠隨時間推移保持在目標水平,同時協議也能保證創建目標數量的狀態字節。
圖 2. EIP-8075 會根據需求自動調整 gas 成本,以確保長期達到目標狀態字節的創建量。為此,EIP 會調整 gas 目標值和限制,同時調整 gas 成本,從而消耗目標數量的狀態字節。
(2)手動避免常規/SGPO 硬分叉中的故障模式
第二種方案是借鑑 EIP-8075 的思路,但手動進行調整。理想情況下,狀態氣目標值和限值可以像 EIP-8075 那樣自由伸縮(圖 2),從而使計量方程能夠同時響應常規氣和狀態氣。如果採用 SGPO 硬分叉的方式實現,則可以引入並啟動stateSchedule :
{ "stateSchedule" : { "gloas" : { "target" : 107374182400 , "scale" : 100 } } , "gloasTime" : "TBD" } scale參數允許狀態 gas 限制相對於The Blockgas 限制進行擴展或收縮,而target參數設置滿負荷運行時狀態的年度增長率。state_gas_limit state_gas_limit計算公式為state_gas_limit = gas_limit * stateSchedule.scale // 100 , cost_per_state_byte計算方法是將以下表達式中的gas_limit替換為state_gas_limit :
cost_per_state_byte = state_gas_limit * 7200 * 365 // (stateSchedule.target * 2 )當計量函數F最終應用時(其中F可以是max或此處討論的任何其他函數),其應用方式與 EIP-8075 中應用於歸一化狀態氣體計量值的方式相同: F(regular_gas, state_gas * 100 // stateSchedule.scale) 。由於需求彈性未知,單次手動修正可能無法達到完美效果。因此,如果均衡狀態下常規氣體的消耗量過低,為了保持比例關係,略微“超調”似乎是合理的。此外,還可以通過設定高於 0.5 的狀態氣體目標比例來實現更普遍的“超調”,如本文所述。
需要注意的是, scale參數是引入SGPO硬分叉的關鍵依據。如果沒有scale參數,以太坊可能會進入圖1所示的故障模式2,從而失去ePBS和BAL帶來的部分擴容收益。雖然調整target增長的能力也值得歡迎,但僅憑這一點並不足以構成實現複雜性的理由。換句話說, target增長和scale都可以在常規硬分叉中設置和調整,只有缺少scale參數才可能需要SGPO硬分叉。
程式化的平衡
通過關注兩種資源之間的相對需求彈性,可以初步分析 EIP-8037 中 EIP-8011 定價下的均衡結果(如這裡和這裡所示,關於需求彈性的一般性論述也可在此處找到)。
Gas 費用固定,兩種資源的基準費用相同。在實施 EIP-8037 之前,70% 的 Gas 用於按常規 Gas 收費的操作, G_1= 0.7,30 % 的 Gas 用於狀態創建, G_2 = 0.3 。如果在任何給定的 Gas 限額下,常規 Gas 和狀態 Gas 的需求在 EIP-8037 規定的固定 Gas 費用下達到平衡,使得用戶在兩者上花費的 Gas 量相等,則該機制將按預期完美運行。此時,兩種資源的 Gas 花費比例r/ r為 1。
假設狀態創建的 gas 成本增加p倍, d表示在給定成本增加的情況下,用戶願意每消耗一個常規 gas 單位而創建的狀態字節數減少的倍數。那麼,消耗的常規 gas 和狀態 gas 之間的新比例為:
在平衡狀態下,使用最大函數(如 EIP-8037 中)並忽略區塊變異性如何降低平衡比例,計量維度(常規氣體和狀態氣體中較大的那個)將位於目標位置。然後,用戶將按氣體限制的比例G^*_1 = \min(0.5, 0.5r) G ∗ 1 = min ( 0.5 , 0.5 r )消耗常規氣體,按氣體限制的比例G^*_2 = \min(0.5, 0.5/r) G ∗ 2 = min ( 0.5 , 0.5 / r )消耗狀態氣體。
在 6000 萬 gas 的情況下,EIP-8037 基準成本增加分別為:存儲槽位 1.17 倍,賬戶 3.29 倍,代碼 3.67 倍。基於當前增長軌跡(存儲快照、賬戶快照、合約代碼),從區塊 17,165,429 到區塊 21,000,000,這三個指標的 gas 成本加權平均增幅約為 1.89 倍。我們已充分認識到當前加權平均值的不確定性。
研究由 BAL、ePBS 和重新定價機制促成的 10 倍擴展,根據 EIP-8037 規範,加權平均 Gas 成本增幅將為 18.9 倍。因此,設定p=18.9 ,並假設用戶不改變其當前的用氣模式( d=1 ) ,則該比率為
用戶屆時將僅按一定比例消耗普通汽油
在平衡狀態下,gas 限制為G^*_1 = 0.123 G ∗ 1 = 0.123 。通過恢復平衡( r=1 r = 1 )可以實現每單位常規 gas 狀態字節消耗的最優減少,這意味著:
展望未來
隨著以太坊規模的不斷擴大,預測平衡 gas 支出的狀態 gas 成本的難度也隨之增加,最壞情況的嚴重程度也隨之加劇。例如,在 L1 擴容至 30 倍時,如果用戶不改變每次常規 gas 使用的狀態字節創建量,則均衡狀態下常規 gas 的使用率僅為 2.1%(但此時高昂的 gas 成本應該會促使用戶大幅調整其創建的狀態量)。理想情況下,在達到 30 倍擴容時,應該已經部署了更全面的解決方案。這樣的解決方案包括像EIP-7999中描述的那樣,建立一個完整的多維費用市場,以及通過工程手段更好地處理狀態增長(例如,可能使部分狀態過期)。






