跳到内容

什么是以太坊虚拟机?

EVM 是每个以太坊节点运行智能合约所使用的软件。探索其工作原理、gas 的用途,以及为何一个 0x 地址可在所有 EVM 兼容网络上通用。

什么是以太坊虚拟机?

以太坊虚拟机(EVM)是以太坊用来执行智能合约代码的计算环境。每个以太坊节点都运行着自己的 EVM 副本,所有节点以相同的方式处理相同的交易,因此整个网络能够就唯一的共享状态达成一致:包括每个账户的余额和每个合约存储的数据。

免责声明:本指南仅用于教育目的,不构成财务建议,不构成招揽,也不面向英国受众。以太坊、EVM 兼容网络以及构建在其上的应用均存在风险,并不适合所有用户。

以太坊虚拟机的作用

以太坊基础网络会记录网络上每个地址所持有的数字资产(包括以太币及其他资产)。它还会记录被称为智能合约的程序及其数据。EVM 就是以太坊中负责运行这些程序的部分。

当一笔交易调用智能合约时,每个以太坊节点都会将该合约的代码加载到自己的 EVM 中,使用该交易的输入运行代码,并根据运行结果更新状态。由于 EVM 具有确定性,相同的输入在每个节点上始终会产生相同的输出。正因如此,成千上万个相互独立的节点无需彼此信任,就能对结果达成一致。

EVM 常被形容为“世界计算机”,但它更像是一台缓慢的共享计算机:每一步都需要消耗 gas,且人人都可以验证结果。以太坊的设计以牺牲速度为代价,换取没有任何单一方能够控制结果的保障。

EVM 如何运行代码

开发者使用编程语言(通常是 Solidity 或 Vyper)编写智能合约。在部署之前,编译器会将这些代码转换为字节码,即 EVM 能够理解的一组精简的基本指令。

每条指令都是一个操作码(opcode),例如用于加法的 ADD、用于将值保存到存储中的 SSTORE,或用于调用另一个合约的 CALL。EVM 会借助以下组件逐个处理操作码:

  • 栈(Stack):用于存放计算过程中的临时值。

  • 内存(Memory):用于存放仅在当前调用期间需要的数据,调用结束后即被清除。

  • 存储(Storage):用于存放在交易之间持续保留在区块链上的数据,例如代币余额。

  • Calldata:用于存放随交易一起发送的输入数据。

存储是成本最高的资源,因为每个节点都必须长期保存这些数据。

为什么 EVM 需要 gas,也就是网络费用

任何能够运行任意程序的计算机,都可能被人塞进一个永不停止的程序。在共享网络上,一个无限循环就可能让所有节点陷入停滞。EVM 通过 gas 费用(即网络费用)来防止这种情况。

每个操作码都有对应的 gas 成本。有些是固定的,例如 ADD 需要 3 gas;而另一些则取决于所涉及的工作量,例如首次写入存储需要 20,000 gas 或更多。发送者会为每笔交易设置 gas 上限(通常通过钱包完成)。自 2025 年 12 月 Fusaka 升级以来,每笔交易的 gas 上限为 16,777,216。如果 gas 耗尽,EVM 会停止执行并回滚所有更改,而发送者仍需为已消耗的 gas 付费。

每个区块也有总 gas 上限,用于限制网络在每个区块中处理的计算量。在以太坊主网上,该上限自 2025 年 12 月起为 6,000 万 gas,而 2025 年初为 3,000 万。

gas 衡量的是工作量,而以太坊的费用市场决定了用户为这些工作支付多少费用。要了解费用如何定价,请参阅以太坊 gas 费用详解。

EVM 兼容意味着什么

EVM 兼容的区块链网络运行与以太坊相同的指令集,因此为以太坊编写的合约只需少量修改,甚至无需修改,就能部署到这些网络上。以太坊钱包、开发者工具和地址的使用方式也完全一致。由同一私钥控制的同一个 0x 地址可在所有 EVM 网络上使用,这也是 MetaMask 在其支持的所有 EVM 网络上显示同一个地址的原因。

正是这一共同标准,使得加密领域的大量项目都运行在 EVM 链上:

  • Arbitrum、OP Mainnet、Base、Linea 和 ZKsync 等以太坊二层网络运行 EVM 兼容环境,并结算回以太坊。

  • BNB Smart Chain、Avalanche C-Chain、Polygon PoS、Sei 和 Monad 等网络拥有各自的验证者和共识机制,但使用 EVM 来执行交易。

有些网络与以太坊的行为完全一致(“EVM 等效”),而另一些网络支持大多数合约,但在某些操作码、gas 成本或预编译合约方面存在差异。开发者在不同 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 网络工作

为以太坊构建的自托管钱包可以在以太坊、其二层网络(layer 2)以及 EVM 兼容的 layer 1 上使用同一个账户,即相同的 0x 地址和私钥,无需为每个网络分别创建新账户。这是因为 EVM 兼容网络共用同一种账户格式。切换网络时,钱包只需要各网络的连接信息:链 ID(chain ID)和 RPC 端点(即钱包所连接的节点地址)。包括 MetaMask 在内的许多自托管钱包,还能在同一个应用中支持比特币、Solana 等非 EVM 网络,方法是为每个网络分别管理一个符合其格式的地址。

关于 EVM 网络的常见问题

AI 翻译。可能包含错误。请务必核实信息。

评价此翻译

本文作者:

  • MetaMask

    MetaMask(前身为 Consensys Software Inc)是全球最大的自托管金融平台,为用户提供一站式服务,涵盖加密资产与传统资产的持有、消费、储蓄与增值。公司正在打造实现上述功能的消费级平台,将支付、储蓄、投资与数字资产整合于一体,带来无缝一体化的使用体验。MetaMask 脱胎于全球使用最广泛的自托管钱包,让用户直接掌控自己的资金与资产,覆盖约 190 个国家和地区。自 2016 年起,MetaMask 在以太坊的发展历程中扮演了举足轻重的奠基角色。如今,MetaMask 处于区块链经济的核心位置,致力于构建「开放货币」的操作系统,让每个人都能全面掌控自己的财务生活。

    阅读所有文章