Vitalik新文:多維Gas定價落地,將帶來更廣泛的應用
BlockBeats 律動財經 2024-05-10 12:30
在以太坊網路中,資源都是通過 "Gas "這個單一資源來限制和定價的。Gas 是對處理特定交易或區塊所需的 "計算工作量 "的衡量。Gas 融合了多種類型的 "努力",其中最主要的有:
· 原始計算(如 ADD, MULTIPLY )
· 讀寫以太坊儲存(如 SSTORE, SLOAD, ETH transfers)
· 數據帶寬
· 生成區塊 ZK-SNARK 證明的成本
例如,這筆交易總共花費了 47085 Gas。這其中包括:(i) 21000 Gas 的 "基本費用";(ii) 1556 Gas 用於作為交易一部分的 calldata 字節;(iii) 16500 Gas 用於讀寫儲存;(iv) 2149 Gas 用於製作日誌;其餘用於執行 EVM。用戶必須支付的交易費與交易消耗的 Gas 成正比。一個區塊最多可包含 3000 萬 Gas,Gas 價格通過 EIP-1559 目標機制不斷調整,確保區塊平均包含 1500 萬 Gas。
這種方法有一個主要優點:由於所有交易都合併到一個虛擬資源中,因此市場設計非常簡單。優化交易以最小化成本很容易,優化區塊以收取儘可能高的費用也相對容易(不包括 MEV),而且沒有奇怪的激勵機制鼓勵某些交易與其他交易捆綁以節省費用。
但這種方法也存在一個主要的低效率問題:它將不同的資源視為可以相互轉換,而網路所能處理的實際基本限制卻並非如此。理解這個問題的一種方法是看下圖:
如果 n 資源有明顯的安全限制,那麼一維 Gas 可能會使吞吐量降低高達 n 倍。因此,人們對多維 Gas 概念的興趣由來已久,通過 EIP-4844 ,我們今天實際上已經可以在以太坊上使用多維 Gas 了。這篇文章探討了這種方法的好處,以及進一步提高這種方法的前景。
Blobs: 坎昆升級後的多維 Gas
今年年初,平均區塊大小為 150 kB。其中很大一部分是卷積數據:為了安全起見,在鏈上儲存數據的 L2 協議。這些數據的成本很高:儘管卷積上的交易成本比以太坊 L1 上的相應交易成本低 5-10 倍,但對於許多用例來說,即使是這樣的成本也太高了。
這個問題最終是通過在每個區塊中引入一個單獨的便於卷積的數據空間(稱為 "Blobs")來解決的。
在坎昆升級後,一個以太坊區塊最多可包含 (i) 3000 萬 Gas 和 (ii) 6 個 Blobs,每個 Blobs 可包含約 125 kB 的 calldata。這兩種資源都有獨立的價格,由類似 EIP-1559 的獨立定價機制調整,目標是每個區塊平均使用 1 500 萬 Gas 和 3 個 Blobs。
因此,卷積的成本降低了 100 倍,卷積的交易量增加了 3 倍多,而理論上的最大區塊大小僅略有增加:從 1.9 MB 增加到 2.6 MB。
多維 Gas 和無狀態客戶端
未來,無狀態客戶端將面臨儲存證明的問題。無狀態客戶端是一種新型客戶端,能夠在本地儲存很少或不儲存任何數據的情況下驗證區塊鏈。它接受證明來驗證區塊中特定部分的以太坊狀態,無需自身儲存任何數據。
一個區塊平均進行約 1000 次儲存讀寫操作,但理論上的最大值可能是上千萬次。現行計劃是通過將以太坊的狀態樹設計從 Merkle Patricia 樹遷移到 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 可擴展性的重大收益,如果是,那麼哪種具體的提案更適合協議經濟和應用開發人員?很有可能,最佳方案既不是之前提到的那些,也不是上面提到的那些,我們仍有餘地提出更為優雅、更為有效的解決方案。
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 加入鉅亨買幣LINE官方帳號索取免費課程
- 掌握全球財經資訊點我下載APP
文章標籤
上一篇
下一篇