EVM 生态
Ethereum、Polygon、BNB、Arbitrum、Optimism。
35 分钟
EVM 生态
EVM(以太坊虚拟机) 是以太坊智能合约的运行环境。兼容 EVM 的链可以复用 Solidity 工具链与大量现有合约。本课概览 Ethereum 主网与 Polygon、BNB Chain、Arbitrum、Optimism 等生态。见 /roadmaps/blockchain。
学习目标
- 理解 EVM 作为「链上 CPU」的角色:Gas、Opcode、状态存储
- 比较主网与 L2 / 侧链在费用、速度、去中心化上的差异
- 学会选择开发/部署目标网络
EVM 基础
- Gas:每笔操作消耗 Gas,用
Gas × Gas Price支付手续费,防止无限循环与 spam。 - 状态:全局键值存储,合约地址 → 存储槽(storage slot)。
- 确定性:同一输入在所有节点上必须产生相同输出。
// 用 ethers.js 读取链 ID,区分网络
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider("https://rpc.sepolia.org");
const network = await provider.getNetwork();
console.log(network.chainId); // Sepolia 测试网: 11155111n
主流网络对比
| 网络 | 类型 | 特点 |
|---|---|---|
| Ethereum Mainnet | L1 | 安全与生态最强,Gas 较高 |
| Sepolia / Holesky | 测试网 | 开发调试,代币无真实价值 |
| Polygon PoS | 侧链 | 低费,适合消费级应用 |
| BNB Smart Chain | 侧链 | 亚洲用户多,兼容 EVM |
| Arbitrum / Optimism | Optimistic Rollup | 继承以太坊安全,DeFi 活跃 |
跨链与资产
同一合约地址在不同链上不一定是同一部署;跨链桥负责锁定/映射资产。开发时注意:
- 部署前确认目标
chainId - 测试网水龙头领取测试 ETH
- 区块浏览器(Etherscan、Polygonscan 等)验证合约
与 Java 部署环境类比
| Java | EVM |
|---|---|
| JVM 字节码 | EVM 字节码 |
-Xmx 内存限制 | Block Gas Limit |
| 多环境 profile | 多 chainId / RPC |
| Maven 中央仓库 | npm + OpenZeppelin |
练习
- 在 MetaMask 添加 Sepolia 测试网并领取测试币
- 分别查询主网与一条 L2 的当前 Gas Price
- 列出你计划部署 DApp 的目标链及理由