在以太坊網路中,資源都是通過"Gas"這個單一資源來限制和定價的。Gas是對處理特定交易或區塊所需的"計算工作量"的衡量。Gas融合了多種類型的"努力",其中最主要的有:·原始計算(如ADD,MULTIPLY)·讀寫以太坊儲存(如SSTORE,SLOAD,ETHtransfers)·數據帶寬·生成區塊ZK-SNARK證明的成本例如,這筆交易總共花費了47085Gas。這其中包括:(i)21000Gas的"基本費用";(ii)1556Gas用於作為交易一部分的calldata字節;(iii)16500Gas用於讀寫儲存;(iv)2149Gas用於製作日誌;其餘用於執行EVM。用戶必須支付的交易費與交易消耗的Gas成正比。一個區塊最多可包含3000萬Gas,Gas價格通過EIP-1559目標機制不斷調整,確保區塊平均包含1500萬Gas。演示案例這種方法有一個主要優點:由於所有交易都合併到一個虛擬資源中,因此市場設計非常簡單。優化交易以最小化成本很容易,優化區塊以收取儘可能高的費用也相對容易(不包括MEV),而且沒有奇怪的激勵機制鼓勵某些交易與其他交易捆綁以節省費用。但這種方法也存在一個主要的低效率問題:它將不同的資源視為可以相互轉換,而網路所能處理的實際基本限制卻並非如此。理解這個問題的一種方法是看下圖:如果n資源有明顯的安全限制,那麼一維Gas可能會使吞吐量降低高達n倍。因此,人們對多維Gas概念的興趣由來已久,通過EIP-4844,我們今天實際上已經可以在以太坊上使用多維Gas了。這篇文章探討了這種方法的好處,以及進一步提高這種方法的前景。Blobs:坎昆升級後的多維Gas今年年初,平均區塊大小為150kB。其中很大一部分是卷積數據:為了安全起見,在鏈上儲存數據的L2協議。這些數據的成本很高:儘管卷積上的交易成本比以太坊L1上的相應交易成本低5-10倍,但對於許多用例來說,即使是這樣的成本也太高了。這個問題最終是通過在每個區塊中引入一個單獨的便於卷積的數據空間(稱為"Blobs")來解決的。在坎昆升級後,一個以太坊區塊最多可包含(i)3000萬Gas和(ii)6個Blobs,每個Blobs可包含約125kB的calldata。這兩種資源都有獨立的價格,由類似EIP-1559的獨立定價機制調整,目標是每個區塊平均使用1500萬Gas和3個Blobs。因此,卷積的成本降低了100倍,卷積的交易量增加了3倍多,而理論上的最大區塊大小僅略有增加:從1.9MB增加到2.6MB。滾動交易費用,由growthepie.xyz提供。Dencun分叉發生在2024年3月13日,引入了多維定價的Blobs多維Gas和無狀態客戶端未來,無狀態客戶端將面臨儲存證明的問題。無狀態客戶端是一種新型客戶端,能夠在本地儲存很少或不儲存任何數據的情況下驗證區塊鏈。它接受證明來驗證區塊中特定部分的以太坊狀態,無需自身儲存任何數據。一個區塊平均進行約1000次儲存讀寫操作,但理論上的最大值可能是上千萬次。現行計劃是通過將以太坊的狀態樹設計從MerklePatricia樹遷移到Verkle樹來支持無狀態客戶端。然而,Verkle樹並不具備量子抗性,也不適用於較新的STARK證明系統。因此,許多人希望通過二進制Merkle樹和STARKs支持無狀態客戶端,可以完全跳過Verkle,或在Verkle遷移後的幾年再進行升級。雖然二進制哈希樹分支的STARK證明具有許多優點,但生成證明的速度較慢,無法滿足高速的需求。預計未來會有一段時間內能夠在不到一秒的時間內證明1000個值的情況,但無法達到14,285個值的證明速度。為了解決這一問題,提出了多維Gas的概念。這種方法可以分別限制和收費儲存訪問,確保每個區塊的平均儲存訪問量為1000次,同時設置每個區塊的限制為2000次,以提高網路的安全性和效率。多維Gas的更廣泛應用狀態大小增長是另一個需要考慮的資源。當增加以太坊狀態大小時,全節點需要持有更多數據。與其他資源不同,狀態大小增長的限制主要源自長期的持續使用而非短期峰值。因此,為了處理狀態大小增長的操作,可以考慮增加一個單獨的Gas維度。這種方法的目標是設置一個浮動價格,以特定的平均使用量為目標,而不是設定每塊的限制。這展示了多維Gas的強大特性,可以針對每種資源提出不同的問題:(i)每種資源的理想平均使用量是多少;(ii)每塊資源的安全最大使用量是多少。通過設定這些參數,可以根據網路的安全情況來調整Gas的價格,而不是根據每個區塊的最大使用量來調整。在處理更複雜的情況時,可以使用多種Gas,例如,一個零到非零的SSTORE操作可能需要消耗不同類型的Gas,如無狀態客戶端證明Gas和儲存擴展Gas。每筆交易最大值:獲取多維Gas更弱但更簡單的策略在單維Gas系統中,交易的Gas成本是根據數據和計算兩者消耗的Gas來確定的。然而,在多維Gas系統中可以根據交易消耗的主要資源來確定Gas成本。這一方法提高了吞吐量,同時保持了安全性。EIP-7623提出了類似的方案,通過增加每字節的最低價格,減少了交易在區塊中所占空間,但這也導致了一些問題,如單個資源消耗較多的交易仍需支付高額費用,同時也創造了數據密集型和計算密集型交易捆綁在一起以節省成本的動機。雖然這種方法有其侷限性,但其帶來的好處也是值得的,但如果願意投入更多開發工作,那麼有更理想的解決方案。多維EIP-1559:更難但更理想的策略多維EIP-1559其核心是通過跟蹤excess_blobs參數來調整Blob的基本費用,以確保區塊的平均使用量保持在目標水平。當區塊包含的Blob數量超過目標值時,基本費用會增加,以降低使用量;反之,則會減少。這種定價機制使得區塊內的交易價格動態調整,以保持區塊填充一半的狀態。同時,短期內的使用量激增也會觸發限制機制,保證了交易的合理競爭。在以太坊中,Gas的這種定價方式已經存在多年:早在2020年,EIP-1559就引入了非常類似的機制。隨著EIP-4844的推出,現在對Gas和Blob分別採用兩種浮動價格。對於用戶和區塊構建者而言,體驗與之前類似,但需要適應兩個單獨的費用。然而,對於開發者來說,需要重新設計EVM功能,以適應多價格和多限制的環境,這可能會增加一些挑戰。多維定價、EVM和子調用在EVM中,存在兩種Gas限制:每個交易設置了總Gas限制,以及合約調用其他合約時的單獨Gas限制。這使得合約可以調用不信任的合約,同時確保調用後仍有剩餘Gas用於其他計算。然而,要在不同類型的執行之間實現多維Gas定價存在挑戰。這種多維度方案需要子調用為每種Gas類型提供多個限制,這將對EVM進行深入改變,並且不兼容現有應用程序。多維度Gas提議通常只停留在兩個維度上:數據和執行。數據分配在EVM外部,因此不需要內部更改即可分別定價。對於開發者來說,這意味著需要重新設計EVM及其周圍基礎設施,以適應多個價格和多個限制。某些情況下,優化也會變得更加困難,因為無法明確說出哪種方法更有效,這可能會影響開發流程。雖然存在一些挑戰,但可以通過實現類似於EIP-7623的方案來解決這些問題。這種方案可以為儲存操作收取額外費用,並在交易結束時進行退款,以確保主調用仍具備足夠的Gas來執行後續操作。小結無論哪種情況,值得強調的是,一旦開始引入多維執行Gas,系統的複雜度就會顯著提高,這似乎是難以避免的。因此,我們面臨着一個複雜的抉擇:是否願意在EVM層面上接受更多的複雜性,以換取釋放L1可擴展性的重大收益,如果是,那麼哪種具體的提案更適合協議經濟和應用開發人員?很有可能,最佳方案既不是之前提到的那些,也不是上面提到的那些,我們仍有餘地提出更為優雅、更為有效的解決方案。原文連結