虚拟机 EVM
以太坊虚拟机,英文缩写为 EVM
。它是以太坊上运行智能合约的环境,换句话说,智能合约是在以太坊虚拟机 EVM
中执行的。
EVM
是一种完全隔离的运行时环境,意味着运行在 EVM 上的代码无法直接访问网络、文件系统或其他外部系统。
这种设计确保了在全球范围内部署的以太坊节点能够在安全、确定性的环境中执行代码,保证了网络的去中心化和抗审查特性。
在 EVM
上最终执行的智能合约代码,并不是文本形式的 Solidity
语言的源代码,而是一种二进制代码,称为 字节码
。
我们使用 Solidity
语言来编写的智能合约,编译成以太坊虚拟机支持的 字节码
,就可以在 EVM
中执行了。
1. EVM 的功能
a) 智能合约部署与执行
EVM
允许开发者部署智能合约到以太坊区块链上,并执行这些合约中定义的函数和操作。这是构建去中心化应用的基础。
b) 状态管理
EVM
通过以太坊的区块链管理和维护每个智能合约的状态,包括合约的余额、存储和执行结果。
c) 以太币转移
智能合约可以接收、存储和发送 ETH
,
EVM
处理这些操作,确保资金的安全转移。
d) 消息调用
智能合约可以通过 EVM
发送消息给其他合约,调用其他合约的函数,实现合约间的交互和数据共享。
e) 加密操作
EVM
提供了一组加密操作的原生支持,允许智能合约执行如哈希计算、签名验证等安全敏感的操作。
通过这些特点和功能,EVM
为以太坊网络上的去中心化应用和智能合约提供了一个强大、安全和灵活的运行环境。
2. EVM 的特点
a) 隔离环境
EVM
是一个沙盒环境,运行在它上面的代码完全隔离于网络、文件系统和其他外部系统。这保证了运行环境的安全性,防止恶意代码对网络或主机系统产生影响。
b) 确定性
在 EVM
中,给定相同的输入,智能合约无论在哪个节点上执行,都会产生相同的结果。这种确定性是区块链共识机制的基础,确保了交易和智能合约的一致性。
c) 兼容性
EVM
设计为与任何编程语言编写的智能合约兼容,只要能编译成 EVM
字节码。这为开发者提供了灵活性,使他们可以选择合适的语言来编写智能合约。
d) 去中心化
EVM
运行在以太坊网络的每个节点上,增强了网络的去中心化特性。这意味着没有中心化的控制点,网络的运行不依赖于任何单个实体。
e) 抗审查与透明性
由于智能合约一旦部署即不可更改,且其执行逻辑对所有人透明,EVM提供了一个抗审查的平台,任何尝试修改已部署合约的行为都是公开可见的。
3. EVM 的结构
EVM
结构如下图所示:
4. EVM 的执行流程
EVM
执行模型如下图所示: