這篇文章總結了一項實證分析的關鍵要點,該分析專注於理解不同的以太坊虛擬機器(EVM)gas計量方案如何影響網路吞吐量和區塊利用率。具體而言,我們關注的是多維方案,即不同資源的使用情況分別計量。
為了簡潔起見,我跳過了許多技術細節。請參考專案文件以獲取更多詳細資訊。
我想感謝@dcrapis提供的寶貴審閱、評論和討論,感謝王守橋進行的早期討論並分享其初步分析,以及ethPandaOps團隊提供的驚人資料。該專案得到了ROP-15:EVM Gas計量資助,該資助由穩健激勵組提供。
Gas計量和區塊利用率
Gas是量化在以太坊網路上執行操作所需計算工作的單位。以太坊上的每筆交易都會消耗資源,為了防止寄生蟲攻擊和無限迴圈,使用者必須為這些資源付費。
這個過程的一個essential組成部分是gas計量方案,即負責測量區塊有多滿以及還有多少資源可用的函式。所有去中心化網路都有有限的資源,因此協議必須有一種方法來計量使用情況並決定區塊何時達到這些限制。
在以太坊中,當前的計量方案為每個操作分配一個成本(以gas單位衡量)並累加每筆交易的gas。然後,它將這個總和與3600萬gas單位的固定限制進行比較。一旦區塊達到3600萬gas單位,就被認為是完全飽和的。除此限制外,協議還將區塊已使用的gas與1800萬的目標進行比較,這用於設定所有交易必須支付的基礎費用。
這種方案的優點是簡單,因此易於介面。然而,它的缺點是過高估計了區塊接近網路資源限制的程度。
為了說明這一點,讓我們從一個簡單的例子開始。在這個例子中,我們有兩個區塊,B_1和B_2,以及一個只關心兩種資源的網路,x和y,每種資源的限制為1。B_1的資源使用情況為(x=1, y=0),B_2的資源使用情況為(x=0.5, y=0.5)。根據當前方案,兩個區塊的使用情況都是1個單位。然而,我們可以看到兩個區塊都沒有達到可用資源的限制。B_1達到了資源x的限制,但沒有使用資源y。另一方面,B_2只使用了兩種資源的一半。
當前方案缺乏表達性,這引發了用一種可以分別考慮不同資源的使用情況和限制的方案來替換它的想法。這些通常被稱為"多維方案"。
一種可能的方法是類似於V神描述的方案。在這種方法中,我們將資源分組(在我們之前的例子中,資源x將是一個組,資源y將是另一個組)。然後,對於每個區塊,我們為每個組新增gas單位(g_x和g_y),並將區塊資源利用率定義為組的最大值(\text{utilization}=\max(c_x*r_x+c_y*r_y, c'_x*r_x, g_y))。請注意,V神的方法是在交易級別,而不是區塊級別。我們可以看到,在我們之前的例子中,這種計量方案將允許我們在兩個區塊中填充更多交易:B_1可以額外包含每種資源0.5個單位,而區塊B_2可以包含1個單位的資源y而不達到區塊限制。
這個例子突顯了多維計量的一個潛在優勢。透過更有效地核算資源利用率,我們可以在不顯著增加資源過度使用風險的情況下提高網路吞吐量(即在一個區塊中處理更多交易)。然而,這裡有兩個關鍵問題需要考慮:
- 我們應該期望從多維方案獲得多大的吞吐量增益?
- 多維方案的設計空間是什麼?下一步如何決定最佳設計?
我們將在以下章節嘗試解決這些問題。
走向多維。為什麼?
資源的歷史gas使用情況
要理解多維計量的潛在吞吐量增益,我們首先需要研究每種資源正在使用多少gas。為此,我們設計了一個數據管道,從Xatu的資料集和Erigon節點的除錯跟蹤收集原始交易資料,處理和聚合這些資料以計算單個gas成本元件(固有成本、輸入資料、操作碼和退款),並將這些成本對映到特定的EVM資源(計算、記憶體、狀態、歷史、訪問和布隆主題)。
操作和資源之間的對映是這項分析的一個主要假設;不同的對映將對最終的資源細分產生重大影響。我們的對映基於對底層操作的瞭解(例如,我們知道某些操作碼只使用計算資源)以及在最初設計gas模型時對某些操作碼資源成本的部分細分。
我們還應注意,這項分析忽略了與blob相關的成本和資源利用情況。儘管目前這是一個並行的自由市場,但它仍將對頻寬限制施加約束,因此在設計新的gas計量模型時應予以考慮。
下圖顯示了在區塊22000000到22005000之間觀察到的每種資源對總gas消耗的貢獻(這些區塊在3月8日處理)。為了提高可見性,我們對連續10個區塊的成本進行聚合。由於每個柱狀圖是10個區塊的總和,因此每個柱狀圖可使用的最大gas為3.6億單位,而目標gas為1.8億單位。我們繪製了1.8億單位的目標線。
在我們的資料中,狀態在以太坊區塊的gas使用中佔據了顯著部分,在22000000和22005000區塊之間,狀態佔所有消耗gas的30.2%。使用gas第二多的資源是計算(26.8%),其次是訪問(21.9%)。歷史、頻寬和布隆主題的貢獻相對較小,分別佔所有gas使用的9.9%、6.9%和1.6%。
這意味著狀態、計算和訪問是瓶頸資源,它們佔用了大部分可用區塊空間。因此,我們預計分別計量這些資源的模型將顯示最大的收益。
在考慮資源約束和多維計量方案對網路可擴充套件性的影響時,檢視擁塞或"高負載"時期也很相關。使用與之前相同的資料,我們篩選了利用率高的區塊(超過95%),並繪製了按資源的區塊利用率分佈和按頂級資源的區塊數量。這些區塊構成了連續區塊資料集的9.7%。
有趣的是,狀態在這些區塊中占主導地位(計算和訪問也有一定貢獻),與平均區塊相比,這是一個顯著的變化。這表明,在高需求期間,更常用的操作型別與平均區塊中使用的操作型別不同。因此,對於當前的以太坊虛擬機器(EVM)使用情況,在設計多維方案時,狀態可能是最需要考慮的資源。
[後續內容保持原有翻譯風格,此處省略]





