跳至內容

什麼是以太坊虛擬機器?

EVM 是每個以太坊節點用來執行智能合約的軟體。探索其運作原理、gas 的用途,以及為何一個 0x 地址可在所有 EVM 相容網路上通用。

什麼是以太坊虛擬機器?

以太坊虛擬機(Ethereum Virtual Machine,EVM)是以太坊用來執行智慧合約程式碼的運算環境。每個以太坊節點都會運行自己的 EVM 副本,並且以相同的方式處理相同的交易,因此整個網路能對單一共享狀態達成共識:包括每個帳戶的餘額,以及每個合約儲存的資料。

免責聲明:本指南僅供教育用途,不構成財務建議或招攬,亦不適用於英國讀者。以太坊、與 EVM 相容的網路,以及建構於其上的應用程式均存在風險,並不適合所有使用者。

以太坊虛擬機的功能

以太坊的基礎網路會追蹤網路上每個地址所持有的數位資產(包括以太幣及其他資產),同時也會追蹤稱為智慧合約的程式及其資料。EVM 就是以太坊中負責執行這些程式的部分。

當交易呼叫智慧合約時,每個以太坊節點都會將該合約的程式碼載入自己的 EVM,以交易的輸入內容執行,並根據結果更新狀態。由於 EVM 具有確定性,相同的輸入在每個節點上一律會產生相同的輸出。這使得成千上萬個獨立節點無需彼此信任,也能對結果達成共識。

EVM 常被形容為「世界電腦」,但更貼切的說法是,它是一台緩慢的共享電腦:每個步驟都需要支付 gas,而且任何人都能驗證結果。以太坊的設計以速度換取保障,確保沒有任何單一方能夠控制結果。

EVM 如何執行程式碼

開發者使用程式語言(通常是 Solidity 或 Vyper)來撰寫智慧合約。在部署之前,編譯器會將程式碼轉換為位元組碼(bytecode),這是一份 EVM 能夠理解、由基本指令組成的精簡清單。

每個指令稱為一個操作碼(opcode),例如用於加法的 ADD、用於將數值儲存到 storage 的 SSTORE,或用於呼叫其他合約的 CALL。EVM 會逐一處理操作碼,並使用:

  • 堆疊(stack):用於存放運算過程中的暫時數值。

  • 記憶體(memory):用於存放僅在當前呼叫期間需要的資料,呼叫結束後即清除。

  • 儲存空間(storage):用於存放在多筆交易之間持續保存於區塊鏈上的資料,例如代幣餘額。

  • Calldata:用於存放隨交易傳送的輸入內容。

儲存空間是成本最高的資源,因為每個節點都必須無限期保存這些資料。

為什麼 EVM 需要 gas(又稱網路費用)

任何能執行各種程式的電腦,也可能被餵入一個永遠不會停止的程式。在共享網路上,一個無限迴圈就可能讓所有節點停擺。EVM 透過 gas 費用(又稱網路費用)來防止這種情況。

每個操作碼都有對應的 gas 成本。有些是固定的,例如 ADD 需要 3 gas;有些則取決於所涉及的工作量,例如首次寫入儲存空間需要 20,000 gas 或更多。發送者會為每筆交易設定 gas 上限(通常透過其錢包設定),自 2025 年 12 月的 Fusaka 升級起,每筆交易上限為 16,777,216 gas。若 gas 用盡,EVM 會停止執行並還原所有變更,而發送者仍須支付已使用的 gas。

每個區塊也有 gas 總上限,用來限制網路在每個區塊中處理的運算量。在以太坊主網上,自 2025 年 12 月起,該上限為 6,000 萬 gas,高於 2025 年初的 3,000 萬。

Gas 衡量的是工作量,而以太坊的手續費市場則決定使用者為這些工作量支付多少費用。若想了解費用如何定價,請參閱以太坊 gas 費用說明。

EVM 相容性是什麼意思

與 EVM 相容的區塊鏈網路使用與以太坊相同的指令集,因此為以太坊撰寫的合約只需極少修改(甚至無需修改)即可部署到該網路。以太坊錢包、開發工具和地址的運作方式也相同。同一個 0x 地址,由同一組私密金鑰控制,即可在所有 EVM 網路上使用,這也是 MetaMask 在其支援的所有 EVM 網路上都顯示同一個地址的原因。

正因為有這項共通標準,加密貨幣領域中才有這麼多專案運行在 EVM 鏈上:

  • 以太坊 Layer 2 網路,例如 Arbitrum、OP Mainnet、Base、Linea 和 ZKsync,運行與 EVM 相容的環境,並回到以太坊上進行結算。

  • BNB Smart Chain、Avalanche C-Chain、Polygon PoS、Sei 和 Monad 等網路擁有自己的驗證者與共識機制,但使用 EVM 來執行合約。

有些網路完全符合以太坊的行為(「EVM 等效」),也有些網路支援大多數合約,但在某些操作碼、gas 成本或預編譯合約(precompile)上有所不同。開發者在不同 EVM 鏈之間遷移合約時,仍需在每條鏈上進行測試。

不使用 EVM 的區塊鏈

並非所有智慧合約平台都使用 EVM。例如,Solana 透過自己的執行環境運行主要以 Rust 撰寫的程式,並設計為可平行處理大量交易。其他網路,包括 Sui、Aptos 和 Cardano,則使用各自的虛擬機與程式語言。為這些網路開發的應用程式無法在 EVM 鏈上運行,使用者需要透過跨鏈橋在它們之間轉移代幣。

2026 年 EVM 的變化

以太坊核心開發者透過網路升級來變更 EVM。近期及規劃中的變更重點在於讓每個區塊能執行更多運算:

  • 提高 gas 費用上限。驗證者在 2025 年期間將區塊 gas 上限從 3,000 萬提高到 6,000 萬,使每個區塊能容納更多交易。Glamsterdam 新增了後續進一步提高上限的預定路徑;Sepolia 測試網目前已以 2 億的上限運行。

  • Glamsterdam。下一次升級包含每個區塊的存取清單(EIP-7928),會預先告知節點某個區塊會涉及哪些帳戶與儲存內容,使交易得以平行處理,此外還包括 gas 成本重新定價。截至 2026 年 10 月 29 日,該升級已在 Sepolia 測試網上線。以太坊基金會宣布,以太坊核心開發者為了研究其中一項 gas 定價變更,已將原定 10 月 26 日在 Hoodi 測試網的啟用時間延後,目前尚未確定主網上線日期。

錢包如何跨 EVM 網路運作

為 Ethereum 打造的自我託管錢包,可以在 Ethereum、其 layer 2 以及 EVM layer 1 上使用同一個帳戶(相同的 0x 地址和私密金鑰),無需為每個網路另外建立新帳戶。這是因為 EVM 相容網路共用同一種帳戶格式。要切換網路,錢包只需要各網路的連線資訊:鏈 ID(chain ID)和 RPC 端點(RPC endpoint,即錢包所連線的節點位址)。許多自我託管錢包(包括 MetaMask)也支援 Bitcoin 和 Solana 等非 EVM 網路,只要在同一個應用程式中,依各網路的格式分別管理不同的地址即可。

EVM 網路常見問題

AI 翻譯。可能包含錯誤。請務必核實資訊。

評價此翻譯

本文作者:

  • MetaMask

    MetaMask,前身為 Consensys Software Inc,是全球最大的自託管金融平台,讓用戶能在單一平台上持有、消費、儲蓄並增值其資產,涵蓋加密貨幣與傳統資產。公司正致力於打造實現上述目標的消費者平台,將支付、儲蓄、投資與數位資產整合於一個無縫的使用體驗中。MetaMask 從全球使用最廣泛的自託管錢包發展而來,讓用戶直接掌控自己的資金與資產,服務範圍遍及約 190 個國家。自 2016 年起,MetaMask 在以太坊的發展歷程中扮演了奠基性的角色。時至今日,MetaMask 位居區塊鏈經濟的核心,致力於構建「開放金融」的作業系統,讓每個人都能全面掌握自己的財務生活。

    閱讀所有文章