EVM並行化:從高性能Layer1到EVM兼容方案的技術演進

EVM:以太坊的核心

EVM(以太坊虛擬機)是以太坊的核心,負責運行智能合約和處理交易。

虛擬機通常用於真實計算機的虛擬化,由虛擬機管理程序或整個操作系統實例進行虛擬化。它們必須提供實際硬件、系統調用和其他內核功能的軟件抽象。

EVM在一個更有限的領域中運行:它只是一個計算引擎,提供了計算和存儲的抽象,類似於Java虛擬機(JVM)規範。從高層次來看,JVM旨在提供與底層主機操作系統或硬件無關的運行時環境,實現跨系統的兼容性。同樣,EVM執行自己的字節碼指令集,這些指令集通常由Solidity編譯而成。

EVM是一個準圖靈完備的狀態機,"準"是因爲所有執行步驟都會消耗有限的資源Gas,因此任何給定的智能合約執行都會限制在有限的計算步數內,避免了執行過程可能的死循環,從而導致整個以太坊平台停止的情況。

EVM沒有調度功能,以太坊的執行模塊從區塊中取出交易,EVM負責依次執行。執行過程中會修改最新的世界狀態,一筆交易執行完成後進行狀態累加,到達區塊完成後的最新世界狀態。下一區塊的執行又嚴格依賴上一個區塊執行後的世界狀態,所以以太坊的交易線性執行過程無法很好地進行並行執行優化。

從這個意義上說,以太坊協議約定交易按照順序執行。雖然順序執行確保了交易和智能合約能夠以確定性順序執行,保障了安全性,但在面臨高負載的情況下,可能會導致網路擁堵和延遲,這也是爲什麼以太坊有極大的性能瓶頸,需要Layer2 Rollup擴容的原因。

並行EVM:高性能 Layer1 的換心術

高性能Layer1的並行之道

大多數高性能Layer1都是基於以太坊不能並行處理的缺陷去設計自己的優化方案,這裏只聊執行層的優化,也就是虛擬機和並行執行。

虛擬機

EVM設計成一臺256位的虛擬機,目的是爲了更易於處理以太坊的哈希算法,它會明確產生256位的輸出。然而,實際運行EVM的計算機則需要把256位的字節映射到本地架構來執行智能合約,從而使得整個系統變得非常低效和不實用。因此從虛擬機的選擇上,高性能Layer1更多採用的是基於WASM,eBPF字節碼或Move字節碼的虛擬機,而非EVM。

WASM是一種體積小、加載快、可移植且基於沙盒安全機制的字節碼格式,開發人員可以使用多種編程語言編寫智能合約,然後編譯成WASM字節碼並執行。WASM已經被許多區塊鏈項目接納爲標準,包括EOS,Dfinity,Polkadot,Cosmos,Near等,以太坊未來也會集成WASM,從而保證以太坊的執行層更加高效、簡單,適合作爲完全的去中心化計算平台。

eBPF前身是BPF(Berkeley Packet Filter,伯克利包過濾器),原本是用於網路數據包的高效過濾,後經過演化形成了eBPF,提供更豐富的指令集,允許在不改動源碼的情況下對操作系統內核進行動態幹預和修改其行爲。後來這項技術從內核中走出來,發展出了用戶態eBPF運行時,其具有高性能、安全和可移植性。某區塊鏈上執行的智能合約都會編譯成SBF(基於eBPF)字節碼並在其網路上運行。

Move是一種新的智能合約編程語言,注重靈活性、安全和可驗證性。Move語言旨在解決資產和交易中的安全性問題,使得資產和交易能夠被嚴格定義和控制。Move的字節碼驗證器是一個靜態分析工具,分析Move字節碼並確定是否遵守所需的類型、內存和資源安全規則,不需要在智能合約級別實現並在運行時檢查。某些新興公鏈繼承了Move或通過自身定制版本的Move來編寫其智能合約。

並行EVM:高性能 Layer1 的換心術

並行執行

區塊鏈中的並行執行意味着同時處理不相關的交易。把不相關的交易看作互不影響的事件。例如,如果兩個人在不同的交易平台上交易代幣,他們的交易可以同時處理。但是,如果它們在同一平台上交易,則可能需要按照特定的順序執行交易。

實現並行執行的主要挑戰是確定哪些交易是不相關的,哪些是獨立的,大多數高性能Layer1依賴於兩種方法:狀態訪問方法和樂觀並行模型。

狀態訪問方法需要預先知道每個交易可以訪問區塊鏈狀態的哪一部分,從而分析出哪些交易是獨立的。代表方案是某些新興公鏈。

在某些公鏈中,程序(智能合約)是無狀態的,因爲它們不能自行訪問(讀取或寫入)在整個交易過程中持續存在的任何狀態,要訪問或保持狀態,程序需要使用帳戶。每個交易必須指定在交易執行期間將訪問哪些帳戶,這樣交易處理運行時可以調度非重疊交易並行執行,同時保證數據一致性。

在某些Move實現中,每個智能合約都是一個模塊,由函數和結構定義組成。結構在函數中實例化,可以通過函數調用傳遞給其他模塊。運行時存儲的結構實例作爲對象,存在三種不同類型的對象,分別是擁有者對象,共享對象和不可更改對象。並行化策略與前述相似,交易也需要指定操作哪些對象。

樂觀並行模型在所有交易都是獨立的假設下運行,只是回顧性地驗證這一假設並在必要時進行調整。代表方案是某些新興公鏈。

某公鏈使用Block-STM(區塊軟件事務內存)的方法來應用樂觀並行執行。在Block-STM中,交易首先在區塊內按照一定的順序進行設置,然後在不同的處理線程之間進行拆分,以便同時執行。在處理這些交易時,系統會跟蹤每個交易更改的內存位置。在每一輪處理之後,系統檢查所有的交易結果。如果它發現某個交易觸及了由早期交易更改的內存位置,則擦除其結果並再次運行。這一過程一直持續到區塊中的每個交易都被處理完畢。

並行EVM:高性能 Layer1 的換心術

並行EVM

並行EVM(Parallel EVM)早在2021年就被提起,那時候指的還是支持同時處理多個交易的EVM,旨在改進現有EVM性能和效率,代表方案有某些公鏈基於Block-STM實現的並行EVM。

但在2023年底,一些行業專家不約而同在展望2024年趨勢時又提到了並行EVM,帶火了一波採用了並行執行技術的EVM兼容Layer1,包括一些新興項目。

現如今,某些EVM兼容方案、以太坊SVM(Solana虛擬機)的Layer2 Rollup、以太坊Move虛擬機的Layer2 Rollup、模塊化執行層Layer1都紛紛貼上了並行EVM的標籤,令人眼花繚亂。

我認爲合理的能定義成並行EVM的只有以下三類:

  1. 沒有採用並行執行技術的EVM兼容的Layer1的並行執行升級,例如某些主流公鏈;

  2. 採用了並行執行技術的EVM兼容的Layer1,例如一些新興項目;

  3. 採用了並行執行技術的非EVM兼容的Layer1的EVM兼容方案,例如某些跨鏈項目。

並行EVM:高性能 Layer1 的換心術

某些主流公鏈作爲最主流的兼容EVM的Layer1自不必多說,這裏簡單介紹下一些新興項目和跨鏈方案。

某些新興公鏈是採用PoS機制的兼容EVM的高性能Layer1,旨在通過並行執行顯着增強可擴展性和交易速度。它們允許在區塊內並行執行交易以提高效率。通常使用樂觀並行模型,在上一步的執行完成之前就開始執行新交易。爲了應對不正確的結果,會跟蹤輸入/輸出並重新執行不一致的交易。靜態代碼解析器可以預測依賴關係,避免無效的並行性,並在不確定時恢復到簡單模式。這種並行執行增加了吞吐量,同時減少了交易失敗的可能性。

某些跨鏈方案是開發的解決方案,用於在其他公鏈之上執行EVM交易。實際上是一個智能合約,該合約內實現了一個EVM解釋器,編譯爲特定字節碼。內部實現了一套以太坊交易模型和帳戶模型,用戶只需要支付EVM GAS費用即可發送交易。原生網路的費用是由代理支付的。某些公鏈強制要求交易提供帳戶列表,包裝交易也不例外,所以代理的職責包括生成這個帳戶列表,同時也獲得了原生的交易並行執行能力。

這裏補充一點,類似將EVM作爲智能合約運行以實現EVM兼容的方案還有其他一些跨鏈項目,理論上某些新興公鏈上也可以採用此方案來實現無侵入性的EVM兼容,有項目正在做這樣的工作。某些項目是一個模塊化框架,用於在任何分布式環境中構建和部署基於Move的基礎設施、應用程序和區塊鏈。其中某些模塊可以將EVM操作碼無縫轉換爲Move操作碼,這意味着Solidity項目可以利用Move的性能和安全優勢,而無需一行Move代碼。

EVM兼容使得開發者可以輕鬆將他們的以太坊應用遷移到鏈上,而無需進行大規模修改,是一個很好建設新興公鏈生態的方向。

並行EVM:高性能 Layer1 的換心術

總結

區塊鏈的並行技術已經是個老生常談的話題了,敘事每隔一段時間就會抬一次頭,但是目前主要都是對以某些公鏈的Block-STM機制爲代表的樂觀執行模型的改造和模仿,沒有實質性的突破,所以熱度難以持續。

展望未來,還會有更多的新興的Layer1項目加入並行EVM的競爭,而對於一些舊的Layer1也會實現EVM並行升級或EVM兼容的方案,兩個方向殊途同歸,還會誕生更多與性能提升有關的新敘事。

不過相比於高性能EVM的敘事,我還是更希望區塊鏈能百花齊放,出現類似WASM,SVM及Move VM的敘事。

並行EVM:高性能 Layer1 的換心術

並行EVM:高性能 Layer1 的換心術

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 7
  • 分享
留言
0/400
MEV之眼vip
· 14小時前
全靠Gas榨干钱包,付费享受折磨
回復0
薅毛自由职业者vip
· 14小時前
这gas哪儿给薅啊
回復0
链上资深小透明vip
· 14小時前
玩区块链不看指标 就看代码和创新
回復0
清醒的梦游者vip
· 14小時前
开gas就完事了
回復0
幻想破灭预言家vip
· 14小時前
还讨论什么JVM啊 Gas费都吃人了
回復0
GmGmNoGnvip
· 14小時前
字节码也太秀了8
回復0
MemeCoinSavanvip
· 15小時前
evm基本上是给degens用的java,老实说
查看原文回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)