词汇表
虚拟机 (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的链包括NEAR、Polkadot(通过Substrate pallet-contracts运行时)、Cosmos CosmWasm和Internet 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
