词汇表

虚拟机 (VM)

2026/4/16

虚拟机 (VM) 在区块链的意义上是一个沙盒执行环境,能够在网络中的每个节点上确定性地运行智能合约代码。每个完整节点独立地对相同的字节码进行相同的输入操作,并且必须达到相同的状态——没有这种确定性,共识将是不可能的。

这与系统虚拟机(如VMware或VirtualBox)不同,后者模拟整个计算机。区块链VM更接近于Java虚拟机:一个特定字节码的狭义解释器,没有文件系统、网络和非确定性操作。

为什么区块链需要VM

运行本地代码会很快但不安全:合约中的一个错误或故意的无限循环可能会同时导致每个节点崩溃。VM提供了:

  • 沙盒 — 合约代码不能读取文件、打开套接字或调用主机操作系统
  • 确定性 — 相同的输入、相同的输出,在每个节点和每个硬件上
  • 计量 — 每个操作都需要消耗Gas;当Gas耗尽时,执行停止,防止拒绝服务
  • 可移植性 — 相同的字节码可以在任何VM规范的实现上运行

EVM (以太坊虚拟机)

EVM 是使用最广泛的区块链VM。它是一个基于堆栈的机器,具有256位字大小,设计用于匹配加密原语如Keccak-256哈希的大小。

  • Solidity或Vyper编译为EVM字节码
  • 每个操作码都有一个Gas成本;复杂的操作(如SSTORE、CALL、keccak)成本更高
  • EVM兼容链(Polygon、Arbitrum、Optimism、BNB Chain、Avalanche C-Chain、Base)运行相同的字节码未修改,这就是为什么像MetaMask和Hardhat这样的工具可以在所有这些链上工作

SVM (Solana虚拟机)

Solana的VM 基于eBPF(扩展的伯克利包过滤器),最初是Linux内核技术,改编为sBPF。合约用Rust或C编写并编译为sBPF字节码。

  • Sealevel — Solana的并行运行时 — 同时执行不重叠的交易,使用预先声明的账户访问列表
  • 基于寄存器(与EVM的基于堆栈设计不同),更接近物理CPU架构

基于WASM的VMs

WebAssembly (WASM) 是一种最初为浏览器设计的可移植字节码,越来越多地被采用为区块链VM目标。使用WASM VMs的链包括NEARPolkadot(通过Substrate pallet-contracts运行时)、Cosmos CosmWasmInternet Computer

WASM是语言无关的——开发者可以使用Rust、C++、AssemblyScript或Go——并受益于加密领域之外成熟的工具生态系统。

Layer-2 VMs

Rollups继承或扩展现有的VMs:

  • Optimism, Arbitrum, Base — EVM等效
  • zkSync Era — 通过自定义zkEVM实现EVM兼容
  • Starknet — 运行Cairo VM,专为STARK证明构建
  • Scroll, Polygon zkEVM, Linea — 字节码级别的EVM等效zkEVMs

另见