EVM並行化:提升以太坊性能的突破口

robot
摘要生成中

EVM並行化:解決以太坊性能瓶頸的關鍵

EVM作爲以太坊的執行引擎和智能合約運行環境,是其最核心的組件之一。爲了確保智能合約在不同節點上都能得到相同結果,滿足一致性要求,虛擬機技術成爲了最佳選擇。EVM能在不同操作系統和設備上以相同方式運行智能合約,保證了跨平台兼容性。

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

作爲核心執行引擎,EVM採用串行方式處理交易,所有交易在單一隊列中排隊並按確定順序執行。這種設計簡單易維護,但隨着用戶羣體擴大和技術發展,其性能瓶頸日益凸顯,尤其在Layer2中表現明顯。

對於Layer2的關鍵組件Sequencer來說,如果配套模塊效率足夠高,最終瓶頸將取決於Sequencer本身的效率。有團隊通過極致優化,使Sequencer每秒可執行約2000多筆ERC-20轉帳。但對於更復雜的交易,TPS勢必大幅下降。因此,交易處理的並行化成爲未來的必然趨勢。

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

以太坊交易執行的核心組件

除EVM外,另一個與交易執行密切相關的核心組件是stateDB,用於管理以太坊的帳戶狀態和數據存儲。以太坊使用Merkle Patricia Trie樹狀結構作爲數據庫索引。每次交易執行都會改變stateDB中的某些數據,這些變更最終反映在全局狀態樹中。

stateDB負責維護所有以太坊帳戶狀態,包括EOA帳戶和合約帳戶,存儲帳戶餘額、智能合約代碼等數據。交易執行過程中,stateDB會讀寫相應帳戶數據。交易執行結束後,stateDB將新狀態提交到底層數據庫中進行持久化。

總的來說,EVM負責解釋和執行智能合約指令,根據計算結果變更區塊鏈狀態,而stateDB則作爲全局狀態存儲,管理所有帳戶和合約的狀態變化。兩者協作構建了以太坊的交易執行環境。

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

串行執行的局限性

以太坊的交易分爲EOA轉帳和合約交易兩類。EOA轉帳是最簡單的交易類型,處理速度快,gas費低。而合約交易涉及智能合約的調用與執行,EVM需要逐條解釋和執行合約中的字節碼指令,復雜度和資源消耗都更高。

在串行執行模式下,區塊內的交易按先後順序逐筆處理。每筆交易都有獨立的EVM實例,但所有交易共用同一個stateDB。EVM在執行過程中需要不斷與stateDB交互,讀取數據並寫回變更後的結果。

這種串行執行模式的瓶頸顯而易見:交易必須排隊執行,如果出現耗時較長的智能合約交易,其他交易只能等待,無法充分利用硬件資源,效率受到較大限制。

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

EVM的多線程並行優化

爲了突破串行執行的限制,業界提出了EVM的多線程並行優化方案。這種方案類似於多個櫃臺同時服務的銀行,可以同時處理多筆交易,顯著提升效率。但並行執行面臨的主要挑戰是狀態衝突問題,需要採取特別措施來應對。

某項目對EVM的並行優化思路如下:

  1. 設置多個線程同時處理不同交易,線程間互不幹擾。

  2. 爲每個線程分配獨立的臨時狀態數據庫(pending-stateDB)。各線程執行交易時,將狀態變化暫時記錄在pending-stateDB中,而非直接修改全局stateDB。

  3. 區塊內所有交易執行完畢後,將各pending-stateDB中的狀態變更依次同步到全局stateDB。如無衝突,可順利合並記錄。

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

該方案對讀寫操作進行了優化:

  • 讀操作:先檢查Pending-state的ReadSet,如有所需數據直接讀取;否則從上一區塊的全局stateDB讀取歷史狀態。

  • 寫操作:所有修改先記錄到Pending-state的WriteSet,待交易執行完成後再嘗試合並到全局stateDB。

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

爲解決狀態衝突問題,引入了衝突檢測機制:

  • 監測不同交易的ReadSet和WriteSet,發現多個交易嘗試讀寫相同狀態項時視爲衝突。
  • 標記衝突交易爲需要重新執行。

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

所有交易執行完成後,多個pending-stateDB中的變更記錄合並到全局stateDB。合並成功後,最終狀態提交到全局狀態樹,生成新的狀態根。

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

研究顯示,在低衝突工作負載中,並行執行的TPS相比傳統串行執行提升了3-5倍。在高衝突工作負載中,理論上充分優化後甚至可達60倍提升。

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

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

總結

EVM多線程並行優化方案通過爲每個交易分配臨時狀態庫,並在不同線程中並行執行交易,顯著提高了交易處理能力。通過優化讀寫操作和引入衝突檢測機制,在保證狀態一致性的前提下實現了交易的大規模並行化,解決了傳統串行執行模式的性能瓶頸。這爲以太坊Rollup的未來發展奠定了重要基礎。

未來還可進一步探索如何優化存儲效率、應對高衝突情況,以及借助GPU進行優化等方向,以進一步提升EVM的性能。

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

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

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 6
  • 分享
留言
0/400
down_only_larryvip
· 6小時前
涨啦 V神终于开窍了
回復0
BlockTalkvip
· 6小時前
爱看不看 反正tps上去了
回復0
LiquidityOraclevip
· 6小時前
又吹上天惹
回復0
梭哈一姐vip
· 6小時前
也就是说转账更快了?
回復0
ProveMyZKvip
· 6小時前
这波性能优化属于是顶级玩家了
回復0
智能合约补漏工vip
· 6小時前
直接看扩展性风险 锁机制设计太naive
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)