以太坊在更新每個區塊的 blob 基礎費用時使用常量BLOB_BASE_FEE_UPDATE_FRACTION
,費用的比例變化計算如下:
math.exp((blob_gas_used - TARGET_BLOBS * GAS_PER_BLOB) / BLOB_BASE_FEE_UPDATE_FRACTION)
每個更改目標 blob gas 的 EIP 中都包含一個該常數的新值。事實證明,存在一個簡單的通用計算方法,與EIP-4844和EIP-7691中設置的值一致,並且適用於EIP-7892的僅限 blob 參數 (BPO) 硬分叉。這個通用的更新分數計算方法(也在此處指定)如下:
BLOB_BASE_FEE_UPDATE_FRACTION = round (MAX_BLOBS * GAS_PER_BLOB / ( 2 * math.log( 1.125 )))
從數學上講,我們可以將理想(未四捨五入)值表示為
其中m m是每個區塊的最大 blob gas 量。為了理解為什麼這可以推廣 EIP-4844 和 EIP-7691,我們現在將建立這些 EIP 使用的方程式,並從中推導出廣義公式。
博覽會
將t定義為每個區塊的目標 blob gas 消耗量。根據 EIP-4844,目標值為最大值的一半: t=m/2 ,並且blob基礎費用 設計為,當 blob 使用量達到最大值或最小值時,每個區塊最多增加 1.125 或減少 1/1.125。當 blob gas 消耗量達到最大值時,費用比例變化的公式為
對兩邊取自然對數並重新排列b b ,然後代入t=m/2 t = m / 2 ,得出指定的方程:
根據 EIP-7691, BLOB_BASE_FEE_UPDATE_FRACTION
計算結果是“保持對滿 blob 的響應速度和無 blob 的響應速度恆定之間的中點”。保持對“滿 blob”的響應速度恆定的b b是
保持對“無斑點”的響應恆定的b b是
根據對數規則: \ln(1/x) = -\ln(x) ln ( 1 / x ) = −ln ( x ) ,變成
“中點” (b_\text{full}+b_\text{empty})/2 ( b full + b empty ) / 2簡化為廣義方程:
應用
廣義方程可給出任意比例的令人滿意的百分比變化。表1列出了幾個示例。
最大:目標 | 滿的 % | 空的 % | 全因子1.125^k 1.125 k | 空因子1.125^k 1.125 k |
---|---|---|---|---|
5{:}4 5 : 4 | +4.82% + 4.82 % | -17.18% − 17.18 % | k = \tfrac{2}{5} k = 2 5 | k = -\tfrac{8}{5} k = − 8 5 |
4{:}3 4 : 3 | +6.07% + 6.07 % | -16.19% − 16.19 % | k = \tfrac{1}{2} k = 1 2 | k = -\tfrac{3}{2} k = − 3 2 |
3{:}2 3 : 2 | +8.17% + 8.17 % | -14.53% − 14.53 % | k = \tfrac{2}{3} k = 2 3 | k = -\tfrac{4}{3} k = − 4 3 |
2{:}1 2 : 1 | +12.50% + 12.50 % | -11.11\% − 11.11 % | k = 1 k = 1 | k = -1 k = − 1 |
3{:}1 3 : 1 | +17.00\% + 17.00 % | -7.55\% − 7.55 % | k = \tfrac{4}{3} k = 4 3 | k = -\tfrac{2}{3} k = − 2 3 |
4{:}1 4 : 1 | +19.32% + 19.32 % | -5.72% − 5.72 % | k = \tfrac{3}{2} k = 3 2 | k = -\tfrac{1}{2} k = − 1 2 |
5{:}1 5 : 1 | +20.74% + 20.74 % | -4.60% − 4.60 % | k = \tfrac{8}{5} k = 8 5 | k = -\tfrac{2}{5} k = − 2 5 |
表 1.使用廣義更新分數對各種最大:目標比率下的滿塊和空塊的影響。
請注意,在第 4 列和第 5 列中,基本費用變化了1.125^k 1.125 k的倍數,其中k k是消耗的 blob gas g g的函數:
在 2:1 附近存在補比對稱性。當目標在中點 ( m/2 m / 2 ) 上下移動相同距離時, k k的大小保持不變。具體而言, k_\text{full}(m{:}t) = -k_\text{empty}(m{:}(mt)) k full ( m : t ) = − k empty ( m : ( m − t ) )和k_\text{full}(m{:}(mt)) = -k_\text{empty}(m{:}t) k full ( m : ( m − t ) ) = − k empty ( m : t ) ,例如,這適用於補比3{:}1 3 : 1和3{:}2 3 : 2以及4{:}1 4 : 1和4{:}3 4 : 3 。
擴展至氣體標準化
廣義方程可以自然地擴展到EIP-7999中概述的 Gas 歸一化方法。這種方法通過更直接的方式將更新分數與任何特定的資源限制解耦:在更新正在運行的excess_gas
Gas 時,它將 Gas 增量(GT) ( g - t )除以最大 Gas m m (在 EIP-7999 中稱為限制),從而對其進行歸一化。這樣一來,所有資源都可以使用一個單一的、通用的更新分數——與m m無關——無論它們各自的限制如何。
這兩種方法僅在除以m m時有所不同。在廣義方程中, m m放在更新分數b b 的分子中。由於b b本身用作費用更新指數(GT)/b ( g − t ) / b的分母,因此這實際上將m m放在了整個計算的分母中。
最終,最終費用變化因素:
保持不變。然而,標準化使架構更加穩健,確保當資源限制發生變化時價格保持穩定,因為該限制已經是標準化excess_gas
更新的一部分。
結論
這篇文章的目的如下:
- 揭示為什麼所提出的方程可以概括以前的 EIP。
- 展示所提出的方程對各種最大值:目標比率的影響,說明合理的百分比變化和互補比率對稱性。
- 為 EIP-7999 中的進一步優化奠定基礎。最後一個難題是利用方程的泛化特性,但在更早的階段(即在更新
excess_gas
時)應用m m 。 - 在上一次 ACDE中,幾位參與者直到討論結束後(通過聊天)才意識到這些通用屬性。這篇文章可以作為一個平臺,供大家進行更深入的討論,探討如何將提議的方程式確立為未來更新分數的默認值。