什麼是平行EVM?平行執行如何運作?
平行EVM(以太坊虛擬機)是一種高效能執行引擎,可跨多個 CPU 核心同時處理彼此獨立的智慧合約交易,同時維持以太坊的確定性帳本狀態與開發者相容性。Monad、Sei 等平行EVM 網路以樂觀併發取代傳統單執行緒處理,在提升區塊鏈吞吐量、緩解壅塞的同時,不破壞既有的 Solidity 合約與工具。
平行EVM 是一種 以太坊虛擬機的實作,或相容於 EVM 的執行引擎,可跨多個 CPU 核心同時處理彼此獨立的交易。交易仍具有確定性的順序,最終狀態也必須與合法的循序 EVM 執行結果一致。平行化改變的是節點在內部計算結果的方式,而非 Solidity 合約的意義,也不是使用者所見的帳本順序狀態。
此設計針對傳統單執行緒處理所面臨的執行瓶頸。當交易觸及互不相關的帳戶或儲存槽時,節點可同時處理這些交易;一旦發生衝突,引擎必須偵測相依性,捨棄或延後無效的推測結果,並讓受影響的交易依據正確的較早狀態重新執行。因此,效能表現高度取決於工作負載的競爭程度與儲存設計。
什麼是平行EVM?
平行EVM 是一種相容於以太坊的執行環境,能同時處理多筆彼此獨立的交易,而非嚴格地逐筆依序執行。其目標是在提升交易吞吐量的同時,保留開發者熟悉的 EVM 智慧合約、 位址、交易格式與開發工具。
不同的平行EVM 實作可採用不同方法判斷哪些交易能安全地一起執行。有些在執行過程中偵測衝突,有些則在排程前先分析每筆交易將存取區塊鏈狀態的哪些部分。因此,平行EVM 描述的是一種執行方法,而非單一通用標準;各網路在共識、費用、最終性、硬體需求以及與 以太坊的相容程度上仍可能有所不同。
平行EVM 如何運作?
平行EVM 的運作方式是將已排序區塊中的交易分配給多個工作單元,並追蹤每筆交易讀取與寫入的狀態。在樂觀執行模式下,工作單元起初假設各筆交易可以一起執行;其輸出結果在引擎確認較早的交易並未更動較晚交易所用到的輸入之前,都只是暫時性的。無衝突的結果可依區塊原本的順序提交。
若較晚的交易讀取了過期資料或寫入發生衝突,其暫時性輸出會被否決,並在所需的較早狀態就緒後重新執行該筆交易。部分引擎在重新執行時可重複使用簽章、已解碼的位元組碼、快取狀態或其他已完成的工作。循序執行的備援機制可在高度競爭下維持進度。每個驗證者都必須套用確定性的衝突與提交規則,確保平行排程不會產生不同的狀態根。
平行EVM 的主要優勢與應用場景為何?
當一個區塊包含大量操作於各自獨立狀態的交易時,平行EVM 設計最能發揮效果。其目標是提升節點的執行容量,同時不迫使 Solidity 開發者與使用者進入陌生的環境。
1. 多核心可處理彼此獨立的工作。轉帳與觸及不同帳戶或儲存槽的合約呼叫可同時執行,比單一執行緒更充分利用現代驗證者硬體。
2. EVM 應用可沿用熟悉的工具鏈。相容網路可支援 Solidity 合約、以太坊風格的錢包、JSON-RPC 介面與開發框架,同時在應用層之下改變執行方式。
3. 高交易量應用可取得更大的執行餘裕。支付、遊戲、交易所及狀態分散的社交應用,在其交易產生的共享狀態衝突相對較少時,可處理更大的區塊。
4. 最佳化對合約保持透明。 Monad 等樂觀引擎提交結果的方式,就如同交易是循序執行一般,因此開發者不必只為了啟動併發而手動拆分一般合約。
平行執行引擎有哪些例子?
各專案在不同虛擬機與狀態模型上採用平行執行。非 EVM 系統仍具參考價值,因為若干樂觀併發技術最早是在 EVM 之外開發或部署的。
- Monad 的樂觀平行EVM。Monad 同時執行相容於以太坊的交易,追蹤其輸入,並在較早提交的結果更動了某筆交易所用的資料時,重新執行該筆交易。
- Sei 的平行化引擎。Sei 在其 EVM 環境中採用樂觀併發控制、預估存取集合、以工作單元為基礎的執行、衝突偵測、確定性重處理,以及循序執行的備援機制。
- Aptos 的 Block-STM。Block-STM 是一種以軟體交易記憶體與多版本狀態為基礎的平行執行引擎,展示了針對已排序 區塊鏈交易的透明樂觀執行。
- Solana 的 Sealevel。Solana 並非 EVM,但其執行環境展示了另一種模型:由交易自行宣告帳戶存取範圍,讓無衝突的工作得以平行排程。
平行EVM 有哪些限制與風險?
平行執行無法消除應用狀態本身固有的相依性,也帶來了排程、驗證、快取、資料庫與重新執行等額外複雜度,且必須在各節點之間一致地實作。
1. 狀態競爭會削弱速度效益。與同一個流動性池、全域計數器、預言機數值或熱門合約儲存槽互動的交易,可能發生衝突,而需要序列化或反覆執行。
2. 推測可能浪費運算資源。樂觀的工作單元可能以過期輸入完成一筆交易,結果卻只能丟棄,在衝突率偏高時增加 CPU 與記憶體的工作量。
3. 實作複雜度擴大錯誤面。排程器、多版本儲存、衝突偵測、快取與提交邏輯,都必須在回滾、gas 計算、呼叫與各種邊界情況下精確重現 EVM 語意。
4. 基準測試未必反映真實工作負載。獨立轉帳所測得的亮眼吞吐量,可能高估了許多使用者競相修改少量共享儲存位置的應用實際效能。
5. 更高的容量可能提高節點需求。網路必須在 CPU、記憶體、儲存頻寬、資料庫設計與狀態成長之間取得平衡,避免效能目標導致獨立驗證變得不可行。
平行EVM 會改變智慧合約的結果嗎?
正確實作的平行EVM 不會改變由網路交易順序所定義的最終結果。平行處理的工作屬於暫時性,引擎會提交或重新執行交易,使最終狀態符合所需的循序語意。使用者可能感受到更高的容量或較低的壅塞,但合約仍應觀察到相同的順序效果。這項保證使得確定性的衝突處理,比單純啟動大量執行緒更為重要。
相關概念
1. 什麼是以太坊虛擬機?
2. 什麼是智慧合約?
3. 什麼是 Gas?
4. 什麼是可擴展性?
延伸閱讀
3. 以太坊 Gas 費用詳解:ETH Gas 是什麼?Gwei 如何運作?
常見問題
平行EVM 是一種新的智慧合約語言嗎?
不是。其目標通常是執行既有的 EVM 位元組碼並支援 Solidity 工具鏈,同時改變節點軟體在處理器核心之間排程與驗證交易的內部方式。
兩筆觸及同一份合約的交易能平行執行嗎?
平行交易發生衝突時會怎樣?
相容於平行EVM 就能保證達到以太坊等級的安全性嗎?
還沒有帳戶?
立即註冊,開啟您的加密貨幣之旅