🎉 Gate xStocks 交易開啓啦,現貨、合約、Alpha齊上線!
📝 在Gate廣場發帖,曬出你的交易體驗或精彩截圖,瓜分$1,000大獎池!
🎁 廣場優質創作者5名,每人獨享$100合約體驗券!
🎉 帖文同步分享到X(推特),瀏覽量前十再得$50獎勵!
參與方式:
1️⃣ 關注 @Gate廣場_Official
2️⃣ 帶 #Gate xStocks 交易体验# ,原創發帖(不少於20字,僅用活動標籤)
3️⃣ 若分享到推特,請將連結提交表單:https://www.gate.com/questionnaire/6854
注:表單可多次提交,發布更多帖文可提升獲獎機會!
📅 7月3日16:00—7月9日24:00(UTC+8)
詳情:https://www.gate.com/announcements/article/45926
每一條體驗,都有機會贏取大獎!快在Gate廣場show出你的操作吧!
EVM並行化:提升以太坊性能的突破口
EVM並行化:解決以太坊性能瓶頸的關鍵
EVM作爲以太坊的執行引擎和智能合約運行環境,是其最核心的組件之一。爲了確保智能合約在不同節點上都能得到相同結果,滿足一致性要求,虛擬機技術成爲了最佳選擇。EVM能在不同操作系統和設備上以相同方式運行智能合約,保證了跨平台兼容性。
智能合約在上鏈前會被編譯爲EVM字節碼。EVM執行合約時,按順序讀取這些字節碼,每條指令都有相應的Gas成本。EVM會追蹤每條指令執行過程中的Gas消耗,消耗量取決於操作復雜度。
作爲核心執行引擎,EVM採用串行方式處理交易,所有交易在單一隊列中排隊並按確定順序執行。這種設計簡單易維護,但隨着用戶羣體擴大和技術發展,其性能瓶頸日益凸顯,尤其在Layer2中表現明顯。
對於Layer2的關鍵組件Sequencer來說,如果配套模塊效率足夠高,最終瓶頸將取決於Sequencer本身的效率。有團隊通過極致優化,使Sequencer每秒可執行約2000多筆ERC-20轉帳。但對於更復雜的交易,TPS勢必大幅下降。因此,交易處理的並行化成爲未來的必然趨勢。
以太坊交易執行的核心組件
除EVM外,另一個與交易執行密切相關的核心組件是stateDB,用於管理以太坊的帳戶狀態和數據存儲。以太坊使用Merkle Patricia Trie樹狀結構作爲數據庫索引。每次交易執行都會改變stateDB中的某些數據,這些變更最終反映在全局狀態樹中。
stateDB負責維護所有以太坊帳戶狀態,包括EOA帳戶和合約帳戶,存儲帳戶餘額、智能合約代碼等數據。交易執行過程中,stateDB會讀寫相應帳戶數據。交易執行結束後,stateDB將新狀態提交到底層數據庫中進行持久化。
總的來說,EVM負責解釋和執行智能合約指令,根據計算結果變更區塊鏈狀態,而stateDB則作爲全局狀態存儲,管理所有帳戶和合約的狀態變化。兩者協作構建了以太坊的交易執行環境。
串行執行的局限性
以太坊的交易分爲EOA轉帳和合約交易兩類。EOA轉帳是最簡單的交易類型,處理速度快,gas費低。而合約交易涉及智能合約的調用與執行,EVM需要逐條解釋和執行合約中的字節碼指令,復雜度和資源消耗都更高。
在串行執行模式下,區塊內的交易按先後順序逐筆處理。每筆交易都有獨立的EVM實例,但所有交易共用同一個stateDB。EVM在執行過程中需要不斷與stateDB交互,讀取數據並寫回變更後的結果。
這種串行執行模式的瓶頸顯而易見:交易必須排隊執行,如果出現耗時較長的智能合約交易,其他交易只能等待,無法充分利用硬件資源,效率受到較大限制。
EVM的多線程並行優化
爲了突破串行執行的限制,業界提出了EVM的多線程並行優化方案。這種方案類似於多個櫃臺同時服務的銀行,可以同時處理多筆交易,顯著提升效率。但並行執行面臨的主要挑戰是狀態衝突問題,需要採取特別措施來應對。
某項目對EVM的並行優化思路如下:
設置多個線程同時處理不同交易,線程間互不幹擾。
爲每個線程分配獨立的臨時狀態數據庫(pending-stateDB)。各線程執行交易時,將狀態變化暫時記錄在pending-stateDB中,而非直接修改全局stateDB。
區塊內所有交易執行完畢後,將各pending-stateDB中的狀態變更依次同步到全局stateDB。如無衝突,可順利合並記錄。
該方案對讀寫操作進行了優化:
讀操作:先檢查Pending-state的ReadSet,如有所需數據直接讀取;否則從上一區塊的全局stateDB讀取歷史狀態。
寫操作:所有修改先記錄到Pending-state的WriteSet,待交易執行完成後再嘗試合並到全局stateDB。
爲解決狀態衝突問題,引入了衝突檢測機制:
所有交易執行完成後,多個pending-stateDB中的變更記錄合並到全局stateDB。合並成功後,最終狀態提交到全局狀態樹,生成新的狀態根。
研究顯示,在低衝突工作負載中,並行執行的TPS相比傳統串行執行提升了3-5倍。在高衝突工作負載中,理論上充分優化後甚至可達60倍提升。
總結
EVM多線程並行優化方案通過爲每個交易分配臨時狀態庫,並在不同線程中並行執行交易,顯著提高了交易處理能力。通過優化讀寫操作和引入衝突檢測機制,在保證狀態一致性的前提下實現了交易的大規模並行化,解決了傳統串行執行模式的性能瓶頸。這爲以太坊Rollup的未來發展奠定了重要基礎。
未來還可進一步探索如何優化存儲效率、應對高衝突情況,以及借助GPU進行優化等方向,以進一步提升EVM的性能。