目 录CONTENT

文章目录

EVM生态

懿曲折扇情
2025-11-24 / 0 评论 / 0 点赞 / 6 阅读 / 4,207 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2025-11-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

EVM(以太坊虚拟机)完整指南

本文档详细介绍 EVM(Ethereum Virtual Machine)是什么、工作原理、生态系统,以及 EVM 兼容链和币种,帮助读者全面理解 EVM 生态。


目录

  1. EVM 是什么?
  2. EVM 工作原理
  3. EVM 兼容链
  4. EVM 生态中的币种
  5. EVM 生态系统
  6. EVM 的优势与局限
  7. EVM 的未来发展

EVM 是什么?

简单理解

EVM(Ethereum Virtual Machine)以太坊虚拟机,可以理解为:

  • 🖥️ 虚拟计算机:运行在以太坊网络上的"计算机"
  • 📝 代码执行环境:执行智能合约代码的地方
  • 🔒 沙箱环境:隔离的、安全的环境
  • 🌐 全球统一:所有节点运行相同的 EVM

通俗比喻

  • 就像Java虚拟机(JVM):Java 代码在 JVM 上运行,Solidity 代码在 EVM 上运行
  • 或者像游戏机:游戏(智能合约)在游戏机(EVM)上运行

核心特点

特点 说明 优势
确定性 相同输入总是产生相同输出 所有节点结果一致
隔离性 沙箱环境,不影响节点 安全可靠
图灵完备 可以执行任意复杂逻辑 功能强大
Gas 机制 每个操作消耗 Gas 防止资源滥用

EVM 工作原理

1. 整体架构

智能合约代码(Solidity/Vyper)
    ↓ 编译
字节码(Bytecode)
    ↓ 部署
EVM 执行
    ├── 栈(Stack)
    ├── 内存(Memory)
    ├── 存储(Storage)
    └── Gas 计算
    ↓
执行结果
    ├── 状态更新
    └── 事件(Event)

2. 执行流程

步骤 1:代码编译

Solidity 代码
    ↓
编译器(solc)
    ↓
字节码(Bytecode)
    ├── 操作码(Opcodes)
    └── ABI(Application Binary Interface)

示例

// Solidity 代码
function add(uint a, uint b) public pure returns (uint) {
    return a + b;
}

编译后的字节码(简化):

PUSH1 0x00
PUSH1 0x01
ADD
RETURN

步骤 2:部署到链上

字节码
    ↓
创建部署交易
    ├── 包含字节码
    ├── 支付 Gas 费用
    └── 签名
    ↓
广播到网络
    ↓
打包进区块
    ↓
合约地址生成
    ↓
代码存储在链上

合约地址生成

合约地址 = keccak256(部署者地址 + Nonce)

步骤 3:调用合约

用户发起交易
    ├── 目标地址:合约地址
    ├── 数据:函数调用数据
    └── Gas Limit
    ↓
交易进入内存池
    ↓
矿工/验证者打包
    ↓
EVM 执行
    ├── 解码函数调用
    ├── 执行字节码
    ├── 更新状态
    └── 消耗 Gas
    ↓
返回结果

3. EVM 内部结构

栈(Stack)

定义:用于存储临时数据的数据结构

特点

  • 后进先出(LIFO)
  • 最大深度:1024
  • 每个元素:256 位(32 字节)

操作

// 栈操作示例
PUSH1 0x01  // 将 1 压入栈
PUSH1 0x02  // 将 2 压入栈
ADD         // 弹出两个值,相加,结果压入栈
            // 栈顶现在是 3

内存(Memory)

定义:临时存储,函数执行期间使用

特点

  • 易失性(函数执行完就清空)
  • 可以扩展
  • 按字节寻址
  • Gas 成本:第一次扩展较贵,后续扩展便宜

用途

  • 函数参数
  • 局部变量
  • 临时计算

存储(Storage)

定义:永久存储,合约状态变量

特点

  • 持久性(永久保存)
  • 256 位槽位
  • Gas 成本高
  • 使用 Merkle Patricia Trie 存储

用途

  • 合约状态变量
  • 用户余额
  • 合约配置

示例

contract StorageExample {
    uint256 public value;  // 存储在 Storage
    mapping(address => uint256) public balances;  // 存储在 Storage
}

Gas 机制

定义:每个操作消耗的"燃料"

作用

  • 防止无限循环
  • 防止资源滥用
  • 激励节点处理交易

Gas 消耗示例

操作 Gas 消耗 说明
ADD 3 加法运算
MUL 5 乘法运算
SSTORE 20,000(首次) 存储写入
SLOAD 2,100 存储读取
CALL 2,100 外部调用

Gas 计算

总 Gas = Gas Used × Gas Price
费用 = 总 Gas × ETH 价格

4. 操作码(Opcodes)

定义:EVM 的指令集,类似 CPU 的汇编指令

分类

类别 操作码 说明
算术 ADD, SUB, MUL, DIV 数学运算
逻辑 AND, OR, XOR, NOT 逻辑运算
比较 LT, GT, EQ 比较运算
存储 SLOAD, SSTORE 存储读写
调用 CALL, DELEGATECALL 合约调用
控制 JUMP, JUMPI 跳转指令

示例

// Solidity 代码
if (a > b) {
    return a;
} else {
    return b;
}

对应的操作码(简化):

PUSH a
PUSH b
GT          // 比较 a > b
JUMPI label1  // 如果为真,跳转
PUSH b
RETURN
label1:
PUSH a
RETURN

EVM 兼容链

什么是 EVM 兼容?

定义:能够运行 EVM 字节码的区块链

特点

  • ✅ 可以运行以太坊智能合约
  • ✅ 使用相同的工具和库
  • ✅ 开发者可以轻松迁移
  • ✅ 用户体验类似

优势

  • 🚀 开发效率高:无需学习新语言
  • 🔄 代码复用:可以直接部署以太坊合约
  • 🛠️ 工具丰富:使用成熟的开发工具
  • 👥 开发者多:庞大的开发者社区

主流 EVM 兼容链

1. 以太坊主网(Ethereum Mainnet)

基本信息

  • 主币:ETH
  • 类型:Layer1
  • 共识:PoS(权益证明)
  • TPS:~15-30
  • Gas 费:高($5-50)

特点

  • ✅ 最成熟的 EVM 链
  • ✅ 生态最丰富
  • ✅ 安全性最高
  • ❌ Gas 费用高
  • ❌ 交易速度慢

主要代币

  • USDT(ERC-20)
  • USDC(ERC-20)
  • DAI(ERC-20)
  • UNI、AAVE、COMP 等 DeFi 代币

2. BSC(Binance Smart Chain)

基本信息

  • 主币:BNB
  • 类型:Layer1(兼容 EVM)
  • 共识:PoSA(权益证明权威)
  • TPS:~100-300
  • Gas 费:低($0.1-1)

特点

  • ✅ Gas 费用低
  • ✅ 交易速度快
  • ✅ 与币安生态集成
  • ⚠️ 去中心化程度较低
  • ⚠️ 由币安主导

主要代币

  • BUSD(BEP-20)
  • CAKE(PancakeSwap)
  • BNB(主币)
  • 大量 DeFi 代币

EVM 兼容性

  • ✅ 完全兼容 EVM
  • ✅ 可以使用 MetaMask
  • ✅ 可以使用相同的开发工具

3. Polygon(原 Matic)

基本信息

  • 主币:MATIC
  • 类型:侧链(EVM 兼容)
  • 共识:PoS
  • TPS:~7,000
  • Gas 费:极低($0.01-0.1)

特点

  • ✅ Gas 费用极低
  • ✅ 交易速度快
  • ✅ 与以太坊桥接方便
  • ✅ 生态丰富

主要代币

  • USDC(Polygon)
  • USDT(Polygon)
  • WETH(Wrapped ETH)
  • 大量 DeFi 和 NFT 项目

EVM 兼容性

  • ✅ 完全兼容 EVM
  • ✅ 可以使用以太坊工具
  • ✅ 代码可以直接部署

4. Arbitrum

基本信息

  • 主币:ETH(使用 ETH 作为 Gas)
  • 类型:Layer2(Optimistic Rollup)
  • 共识:继承以太坊安全性
  • TPS:~4,000+
  • Gas 费:低($0.1-1)

特点

  • ✅ 继承以太坊安全性
  • ✅ Gas 费用低
  • ✅ 完全兼容 EVM
  • ✅ 生态快速发展

主要代币

  • ETH(主币,也是 Gas)
  • USDC(Arbitrum)
  • ARB(治理代币)
  • 大量 DeFi 项目

EVM 兼容性

  • ✅ 完全兼容 EVM
  • ✅ 可以使用所有以太坊工具
  • ✅ 代码无需修改即可部署

5. Optimism

基本信息

  • 主币:ETH(使用 ETH 作为 Gas)
  • 类型:Layer2(Optimistic Rollup)
  • 共识:继承以太坊安全性
  • TPS:~2,000+
  • Gas 费:低($0.1-1)

特点

  • ✅ 继承以太坊安全性
  • ✅ Gas 费用低
  • ✅ EVM 等效(EVM Equivalence)
  • ✅ 生态活跃

主要代币

  • ETH(主币,也是 Gas)
  • USDC(Optimism)
  • OP(治理代币)
  • 大量 DeFi 项目

EVM 兼容性

  • ✅ EVM 等效(比兼容更高级)
  • ✅ 可以使用所有以太坊工具
  • ✅ 代码完全兼容

6. Avalanche C-Chain

基本信息

  • 主币:AVAX
  • 类型:Layer1(EVM 兼容)
  • 共识:Avalanche 共识
  • TPS:~4,500
  • Gas 费:低($0.01-0.1)

特点

  • ✅ 交易速度快
  • ✅ Gas 费用低
  • ✅ 多链架构
  • ✅ 生态丰富

主要代币

  • AVAX(主币)
  • USDC(Avalanche)
  • USDT(Avalanche)
  • 大量 DeFi 项目

EVM 兼容性

  • ✅ 完全兼容 EVM
  • ✅ 可以使用 MetaMask
  • ✅ 可以使用以太坊工具

7. Fantom

基本信息

  • 主币:FTM
  • 类型:Layer1(EVM 兼容)
  • 共识:Lachesis(aBFT)
  • TPS:~1,000+
  • Gas 费:极低($0.001-0.01)

特点

  • ✅ Gas 费用极低
  • ✅ 交易速度快
  • ✅ 完全兼容 EVM
  • ✅ DeFi 生态活跃

主要代币

  • FTM(主币)
  • USDC(Fantom)
  • 大量 DeFi 代币

8. Base

基本信息

  • 主币:ETH(使用 ETH 作为 Gas)
  • 类型:Layer2(Optimistic Rollup)
  • 共识:继承以太坊安全性
  • TPS:高
  • Gas 费:低

特点

  • ✅ Coinbase 支持
  • ✅ 完全兼容 EVM
  • ✅ 生态快速发展
  • ✅ 用户友好

主要代币

  • ETH(主币,也是 Gas)
  • USDC(Base)
  • 大量项目

EVM 兼容链对比表

主币 类型 TPS Gas 费 去中心化 生态
以太坊 ETH Layer1 15-30 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
BSC BNB Layer1 100-300 ⭐⭐⭐ ⭐⭐⭐⭐
Polygon MATIC 侧链 7,000 极低 ⭐⭐⭐ ⭐⭐⭐⭐
Arbitrum ETH Layer2 4,000+ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
Optimism ETH Layer2 2,000+ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
Avalanche AVAX Layer1 4,500 ⭐⭐⭐⭐ ⭐⭐⭐⭐
Fantom FTM Layer1 1,000+ 极低 ⭐⭐⭐ ⭐⭐⭐
Base ETH Layer2 ⭐⭐⭐⭐⭐ ⭐⭐⭐

EVM 生态中的币种

主币(Native Coins)

EVM 兼容链的主币

主币 用途
以太坊 ETH Gas、质押、DeFi 抵押品
BSC BNB Gas、治理、交易折扣
Polygon MATIC Gas、质押
Arbitrum ETH Gas(使用 ETH)
Optimism ETH Gas(使用 ETH)
Avalanche AVAX Gas、质押
Fantom FTM Gas、质押
Base ETH Gas(使用 ETH)

特点

  • ✅ 用于支付 Gas 费用
  • ✅ 可以质押获得收益
  • ✅ 部分可以参与治理
  • ✅ 作为价值存储

标准代币(Standard Tokens)

ERC-20 代币

定义:以太坊上的标准代币接口

特点

  • ✅ 可互换(Fungible)
  • ✅ 标准接口
  • ✅ 广泛采用

主要 ERC-20 代币

代币 全称 用途 市值排名
USDT Tether 稳定币 Top 3
USDC USD Coin 稳定币 Top 5
DAI Dai Stablecoin 去中心化稳定币 Top 20
UNI Uniswap DEX 治理代币 Top 30
AAVE Aave 借贷协议代币 Top 50
COMP Compound 借贷协议代币 Top 100
LINK Chainlink 预言机代币 Top 20
WBTC Wrapped Bitcoin 比特币锚定币 Top 20

ERC-20 标准接口

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

ERC-721 代币(NFT)

定义:不可互换代币(Non-Fungible Token)

特点

  • ✅ 每个代币唯一
  • ✅ 不可分割
  • ✅ 用于 NFT

主要应用

  • CryptoPunks
  • Bored Ape Yacht Club
  • Azuki
  • 各种 NFT 项目

ERC-721 标准接口

interface ERC721 {
    function balanceOf(address owner) external view returns (uint256);
    function ownerOf(uint256 tokenId) external view returns (address);
    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    function transferFrom(address from, address to, uint256 tokenId) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address);
}

ERC-1155 代币

定义:多代币标准(Multi-Token Standard)

特点

  • ✅ 可以同时处理可互换和不可互换代币
  • ✅ 批量操作
  • ✅ Gas 效率高

主要应用

  • 游戏道具
  • 批量 NFT
  • 多类型资产

跨链代币

定义:同一代币在不同 EVM 链上的版本

USDT 在不同链上

标准 合约地址(示例) Gas 币
以太坊 ERC-20 0xdAC17F958D2ee523a2206206994597C13D831ec7 ETH
BSC BEP-20 0x55d398326f99059fF775485246999027B3197955 BNB
Polygon ERC-20 0xc2132D05D31c914a87C6611C10748AEb04B58e8F MATIC
Arbitrum ERC-20 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9 ETH
Optimism ERC-20 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58 ETH

关键点

  • ⚠️ 这些是不同的代币,虽然名字相同
  • ⚠️ 它们在不同的链上,不能直接互转
  • ✅ 需要通过跨链桥转换
  • ✅ 交易所内部可以统一显示

EVM 生态系统

1. 开发工具

开发框架

工具 说明 用途
Hardhat 开发框架 编译、测试、部署
Foundry 开发框架 快速开发、测试
Truffle 开发框架 传统框架
Remix 在线 IDE 快速开发、学习

编程语言

语言 说明 特点
Solidity 最流行 类似 JavaScript
Vyper Python 风格 更安全
Yul 中间语言 底层优化

测试工具

工具 说明
Hardhat Tests 单元测试
Foundry Tests 快速测试
Tenderly 调试和监控

2. 基础设施

节点服务

服务 说明 特点
Infura 节点服务 免费额度,付费升级
Alchemy 节点服务 高性能,开发者友好
QuickNode 节点服务 全球节点
自建节点 自己运行 完全控制

区块浏览器

浏览器 特点
Etherscan 以太坊 最全面
BscScan BSC 币安链浏览器
Polygonscan Polygon Polygon 浏览器
Arbiscan Arbitrum Arbitrum 浏览器

3. DeFi 生态

DEX(去中心化交易所)

DEX 特点
Uniswap 以太坊/Arbitrum/Optimism 最大 DEX
SushiSwap 多链 多链部署
PancakeSwap BSC BSC 最大 DEX
Curve 多链 稳定币交易
Balancer 多链 自动做市商

借贷协议

协议 特点
Aave 多链 最大借贷协议
Compound 多链 老牌借贷协议
MakerDAO 以太坊 DAI 稳定币

衍生品

协议 特点
dYdX 以太坊 去中心化衍生品
GMX Arbitrum 永续合约
Perpetual Protocol 多链 永续合约

4. 跨链桥

作用:在不同 EVM 链之间转移资产

主要跨链桥

支持的链 特点
Multichain 多链 支持最多链
Hop Protocol Layer2 专注于 Layer2
Across 多链 快速跨链
Stargate 多链 统一流动性

跨链流程

链A上的资产
    ↓
锁定在跨链桥
    ↓
跨链桥在链B上铸造
    ↓
链B上的资产

EVM 的优势与局限

优势

  1. 生态丰富

    • ✅ 最大的开发者社区
    • ✅ 最多的 DApp
    • ✅ 最成熟的工具链
  2. 标准化

    • ✅ ERC 标准广泛采用
    • ✅ 工具和库丰富
    • ✅ 开发效率高
  3. 互操作性

    • ✅ 代码可以跨链部署
    • ✅ 工具可以复用
    • ✅ 开发者可以轻松迁移
  4. 安全性

    • ✅ 经过充分测试
    • ✅ 大量审计
    • ✅ 社区支持

局限

  1. 性能限制

    • ❌ TPS 相对较低(以太坊主网)
    • ❌ Gas 费用高(以太坊主网)
    • ❌ 交易确认慢
  2. Gas 费用

    • ❌ 复杂操作 Gas 消耗大
    • ❌ 存储成本高
    • ❌ 对小额交易不友好
  3. 可扩展性

    • ❌ 单链性能有限
    • ❌ 需要 Layer2 或侧链
    • ❌ 跨链体验不够流畅

EVM 的未来发展

1. 技术升级

EIP-4844(Proto-Danksharding)

目标:降低 Layer2 数据成本

影响

  • ✅ Layer2 Gas 费用进一步降低
  • ✅ 提高 Layer2 吞吐量
  • ✅ 改善用户体验

Verkle Trees

目标:优化状态存储

影响

  • ✅ 减少存储成本
  • ✅ 提高同步速度
  • ✅ 支持无状态客户端

Account Abstraction(ERC-4337)

目标:账户抽象,支持更灵活的账户模型

影响

  • ✅ 支持社交恢复
  • ✅ 支持多签
  • ✅ 改善用户体验

2. Layer2 发展

趋势

  • ✅ 更多 Layer2 解决方案
  • ✅ 性能不断提升
  • ✅ 成本持续降低
  • ✅ 生态快速发展

3. 跨链互操作

趋势

  • ✅ 跨链桥技术改进
  • ✅ 统一标准制定
  • ✅ 用户体验提升
  • ✅ 安全性增强

总结

核心要点

  1. EVM 是执行环境:运行智能合约的虚拟机
  2. EVM 兼容链众多:以太坊、BSC、Polygon、Arbitrum 等
  3. 生态丰富:最大的区块链开发生态
  4. 标准化:ERC 标准广泛采用
  5. 持续发展:技术不断升级,性能不断提升

EVM 生态优势

  • 开发者友好:工具丰富,文档完善
  • 代码复用:可以跨链部署
  • 生态成熟:最大的 DeFi 和 NFT 生态
  • 安全性高:经过充分测试和审计

学习建议

  1. 从以太坊开始:理解 EVM 的基础
  2. 学习 Solidity:最流行的智能合约语言
  3. 使用开发工具:Hardhat、Foundry 等
  4. 实践项目:开发简单的智能合约
  5. 探索 Layer2:了解扩容方案

记住:EVM 是区块链开发的基础,理解 EVM 有助于理解整个区块链生态系统!


0

评论区