EVM並行化突破:多線程執行提升交易處理能力

robot
摘要生成中

EVM的並行化之路:從串行到多線程執行

衆所周知,EVM是以太坊的核心執行引擎,負責智能合約的運行。爲了確保不同節點上的智能合約能夠得到相同的執行結果,EVM提供了一個統一的虛擬環境,類似於Java虛擬機JVM。

智能合約在部署到區塊鏈上時,會先被編譯成EVM字節碼。EVM在執行合約時,會按順序讀取這些字節碼,每條指令都有相應的Gas成本。EVM會追蹤每條指令執行時的Gas消耗,消耗量取決於操作的復雜度。

以Reddio爲例,闡述並行EVM的優化之路

傳統的EVM採用串行方式處理交易,所有交易在單一隊列中排隊按順序執行。這種設計簡單易維護,但隨着用戶羣體增長和對TPS要求提高,串行執行的性能瓶頸日益凸顯,尤其在Layer解決方案中更爲明顯。

以Reddio爲例,闡述並行EVM的優化之路

除EVM外,以太坊交易執行的另一個核心組件是stateDB,用於管理帳戶狀態和數據存儲。EVM每次執行交易都會更新stateDB中的數據,這些變更最終反映在全局狀態樹中。

在串行執行模式下,EVM和stateDB協作處理交易的過程如下:

  1. 一個區塊內的交易按順序逐筆處理
  2. 每筆交易使用獨立的EVM實例,但共用同一個stateDB
  3. EVM執行過程中不斷與stateDB交互,讀取和寫入數據
  4. 所有交易處理完畢後,將stateDB中的變更提交到全局狀態樹

以Reddio爲例,闡述並行EVM的優化之路

這種串行模式的主要問題是,復雜的智能合約交易會阻塞其他交易,無法充分利用硬件資源。

爲解決這一問題,一些項目開始探索EVM的並行優化方案。以某Layer項目爲例,其核心思路是爲每個線程分配一個臨時狀態數據庫(pending-stateDB):

  1. 多線程並行執行不同交易
  2. 每個線程使用獨立的pending-stateDB記錄狀態變更
  3. 所有交易執行完畢後,將pending-stateDB中的變更同步到全局stateDB

以Reddio爲例,闡述並行EVM的優化之路

該方案對讀寫操作做了特殊處理:

  • 讀操作優先檢查pending-stateDB,若無數據則讀取全局stateDB
  • 寫操作暫存在pending-stateDB中,不直接修改全局stateDB

以Reddio爲例,闡述並行EVM的優化之路

爲避免狀態衝突,該方案引入了衝突檢測機制:

  • 監測不同交易的讀寫集是否有重疊
  • 發現衝突時標記相關交易需要重新執行

以Reddio爲例,闡述並行EVM的優化之路

最後,將多個pending-stateDB的變更合並到全局stateDB,生成新的狀態根。

以Reddio爲例,闡述並行EVM的優化之路

這種並行優化方案在低衝突工作負載下,可將TPS提升3-5倍。在高衝突情況下,理論上可達到60倍提升。

以Reddio爲例,闡述並行EVM的優化之路

總的來說,EVM的並行化是提升以太坊及其Layer性能的重要方向。通過多線程並行執行和臨時狀態庫等技術,可以在保證一致性的前提下,大幅提高交易處理能力。未來還可以通過進一步優化存儲效率、改進衝突處理策略等手段,進一步提升EVM的性能。

以Reddio爲例,闡述並行EVM的優化之路

以Reddio爲例,闡述並行EVM的優化之路

以Reddio爲例,闡述並行EVM的優化之路

ETH-4.24%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 5
  • 分享
留言
0/400
FlatTaxvip
· 07-24 20:11
60倍?吹牛不上税
回復0
光速退群大师vip
· 07-22 02:02
不错嘛 能把TPS翻个60倍
回復0
NFT深呼吸vip
· 07-22 00:27
之后大饼王者归来
回復0
反向指标哥vip
· 07-22 00:11
看涨就是顶,看跌就是底
回復0
SerumDegenvip
· 07-22 00:10
只是另一个诱高以太坊的药水,老实说……先给我看看真实的交易每秒数
查看原文回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)