EVM 是什么?
EVM(Ethereum Virtual Machine,以太坊虚拟机)是以太坊的核心组件之一。它是一种图灵完备的虚拟机,允许任何人通过智能合约在区块链上运行代码。
Solidity语言 与 EVM, 类似语 Java 与 JVM,由于 EVM 的存在,让以太坊成为一个全球无需可的计算机。
EVM 执行原理
- 合约编译/部署:智能合约通常使用Solidity语言编写,然后编译成EVM字节码,编译后的字节码通过交易的方式部署到以太坊链。
- 执行交易:每次调用智能合约方法时,都会生成一个交易,这个交易包含了要执行的函数(选择器)以及相关的输入数据。
- Gas 计算:在EVM中,每条指令的执行都需要消耗一定的Gas。Gas 机制用于防止网络资源被滥用。每个交易发送者在发起交易时需要预先指定愿意支付的最大 Gas 量。
- 指令执行:EVM 以堆栈为基础架构,字节码被加载到 EVM 后,依次执行每条指令。这些指令可以进行算术运算、堆栈操作、存储操作、条件跳转等。
- 存储与内存:EVM 具有两种主要的存储区域:永久存储(Storage)和临时内存(Memory)。永久存储用于保存智能合约状态,存储在区块链上;临时内存用于在交易执行过程中存储中间数据,交易结束后会被清空。
- 结果返回:指令执行完毕后,EVM 返回执行结果。如果执行成功,状态改变和输出结果会被记录到区块链上;如果执行失败,则回滚所有状态变化,并返回错误信息。
- 账户状态更新:根据交易的执行结果,更新相关账户的状态(例如余额、存储数据等)。
EVM 执行过程中的关键点在于其去中心化和一致性。所有节点都运行相同的EVM代码,确保每个节点在处理同一交易时都能得到相同的结果。
EVM 是一个封闭沙盒环境,只能读取链内部的状态。
EVM 兼容链
由于 EVM 具有灵活性和强大的计算能力,能够支持各种复杂的去中心化应用(DApps),这也是以太坊生态系统繁荣的基础。
也因此发展出了很多 EVM 兼容链,他们是实现(EVM)规范的区块链,使得这些链能够运行以太坊上编写的智能合约,并与以太坊上的工具和基础设施兼容。
常见的 EVM 兼容链:BNB Chain (原币安智能链 BSC)、Polygon(以前称为 Matic)、Avalanche、Fantom
进一步阅读
文章:深入以太坊虚拟机