以太坊虚拟机(EVM)是智能合约执行的“心脏”,其设计体现了 Web3 对安全性、确定性与去中心化计算的极致追求。它通过栈式模型、内存分区、Gas 管控与调用帧机制,支撑了整个智能合约生态。

📌 本文将系统解析:EVM 架构、执行流程、指令集、Gas 扣费与合约调用的底层逻辑。

✦ 1. 什么是 EVM?

EVM(Ethereum Virtual Machine)是每个以太坊节点内运行的一致性虚拟机环境

EVM 实例不是共享的,但状态是共识的

✅ 可理解为:每个节点都有一台“以太坊 CPU”,运行完全相同的程序,确保链上状态同步更新。

ChatGPT Image 2025年6月1日 23_19_59.png


✦ 2. EVM 的执行架构

EVM 是基于栈的执行引擎,每次交易创建一个“上下文执行环境”并执行对应字节码指令:

模块 描述
📦 Stack 最大深度 1024,仅存放临时数据,支持 PUSH / POP 等指令
🧠 Memory 临时内存,按字节扩展,仅在一次调用期间有效
🗃 Storage 持久化存储,每个合约唯一,存储状态变量
⏱ Program Counter (PC) 当前执行到的指令位置
⛽ Gas Tracker 追踪剩余 gas,若为 0 即中断执行
📤 Return Data Buffer 执行CALLDELEGATECALL后的返回值,用于向上传递结果

ChatGPT Image 2025年6月1日 23_20_16.png


✦ 3. EVM 操作码(Opcodes)

EVM 使用一套简洁的 1 字节操作码系统,共约 140+ 条,分为:

类型 示例 功能
栈操作 PUSH, POP, DUP, SWAP 栈顶操作
算术 ADD, SUB, MUL, DIV 整数计算
存储 SLOAD, SSTORE 读取 / 写入状态变量
调用 CALL, DELEGATECALL 合约调用
控制 JUMP, REVERT, STOP 执行流控制
日志 LOG0 - LOG4 事件触发