技术

EVM

Ethereum 虚拟机

在 Ethereum 及数十条复制了它字节码格式的链上执行智能合约的运行时。

最近审阅: 审阅人Kevin Riedl wiki ↗

EVM 是 Ethereum 发明、后来成为智能合约链事实标准的执行层。一个编译成 EVM 字节码的合约,能在 Ethereum 主网、Polygon、Arbitrum、Optimism、Base、BNB Chain、Avalanche C-chain,以及一长串 L2 与侧链上运行。

实际意义是:用 Solidity(或 Vyper)写你的合约,在 Ethereum 测试网上测试,再部署到匹配你成本与延迟目标的那条 EVM 链。可移植性是真的。链之间的取舍体现在速度、终局性、去中心化程度,以及它们基于哪一种 L2 框架。

选链,举个实际例子:一个需要与现有借贷和 DEX 合约组合的 DeFi 协议属于 Ethereum 主网或一条主流 L2,那个生态住在那里,哪怕 Gas 更高。一个用户无法容忍美元级费用的高频消费级应用属于像 Arbitrum、Optimism 或 Base 这样的 L2(同样的安全模型,十分之一到百分之一的成本),或者干脆离开 EVM、转向 Solana。这个决定是安全对成本的取舍,而不是这个季度哪条链营销嗓门最大。

诚实的取舍与反复绊倒团队的错误:EVM 兼容不等于 Ethereum 等价。Gas 定价、Precompile、Opcode 支持和共识行为上的细微差别,意味着一个在主网通过的合约可能在一条侧链上崩。可移植性是一个起点,不是一个保证;部署前永远逐链重测。像 账户抽象 这样的账户级用户体验功能,在各链上成熟度也不同,所以在你承诺它之前先确认支持。

更深的取舍是你为便宜的费用放弃了什么。从主网迁到一条更便宜的 EVM 链,几乎总是意味着继承一个不同的信任模型:一条像 Polygon PoS 这样的侧链跑的是它自己的验证者集,而不是借用 Ethereum 的安全;一个 Rollup 加了一个你现在要依赖的排序器,以及一段回到 L1 的提款延迟。这些都不会出现在供应商放进幻灯片里的那张 Gas 费对比里。在你为单笔交易成本做优化之前,先决定你的应用实际需要保证什么。对 web3 构建,我们在 Solidity 与 Vyper 之间默认选 Solidity,因为更广的工具链和审计师的熟悉度,除非有强理由逆流而上。

// FAQ

常见问题

不等于,而这经常绊倒团队。Gas 定价、Precompile、Opcode 和共识行为上的细微差别,意味着一份在 Ethereum 主网能跑的合约可能在一条侧链上崩。部署前永远逐链重测。
要最强的信任假设和 DeFi 可组合性,用 Ethereum 主网,代价是最高的 Gas。要同样的安全模型、十分之一到百分之一的成本,用 L2(Arbitrum、Optimism、Base)。要更便宜、但保证更弱,用侧链(Polygon PoS、BNB)。按安全与成本的取舍来选,而不是按这条链的营销。
Solidity 是行业默认选择,工具链最广、审计师最熟悉、库支持最好。Vyper 用这个生态换来更小的攻击面和更清晰的语义。生产环境用 Solidity,除非你有强理由逆流而上。