虚拟机 EVM

推特@Hita_DAO    DiscordHitaDAO

以太坊虚拟机,英文缩写为 EVM。它是以太坊上运行智能合约的环境,换句话说,智能合约是在以太坊虚拟机 EVM 中执行的。

EVM 是一种完全隔离的运行时环境,意味着运行在 EVM 上的代码无法直接访问网络、文件系统或其他外部系统。

这种设计确保了在全球范围内部署的以太坊节点能够在安全、确定性的环境中执行代码,保证了网络的去中心化和抗审查特性。

EVM 上最终执行的智能合约代码,并不是文本形式的 Solidity 语言的源代码,而是一种二进制代码,称为 字节码

我们使用 Solidity 语言来编写的智能合约,编译成以太坊虚拟机支持的 字节码,就可以在 EVM 中执行了。

1. EVM 的功能

a) 智能合约部署与执行

EVM 允许开发者部署智能合约到以太坊区块链上,并执行这些合约中定义的函数和操作。这是构建去中心化应用的基础。

b) 状态管理

EVM 通过以太坊的区块链管理和维护每个智能合约的状态,包括合约的余额、存储和执行结果。

c) 以太币转移

智能合约可以接收、存储和发送 ETHEVM 处理这些操作,确保资金的安全转移。

d) 消息调用

智能合约可以通过 EVM 发送消息给其他合约,调用其他合约的函数,实现合约间的交互和数据共享。

e) 加密操作

EVM 提供了一组加密操作的原生支持,允许智能合约执行如哈希计算、签名验证等安全敏感的操作。

通过这些特点和功能,EVM 为以太坊网络上的去中心化应用和智能合约提供了一个强大、安全和灵活的运行环境。

 

2. EVM 的特点

a) 隔离环境

EVM 是一个沙盒环境,运行在它上面的代码完全隔离于网络、文件系统和其他外部系统。这保证了运行环境的安全性,防止恶意代码对网络或主机系统产生影响。

b) 确定性

EVM 中,给定相同的输入,智能合约无论在哪个节点上执行,都会产生相同的结果。这种确定性是区块链共识机制的基础,确保了交易和智能合约的一致性。

c) 兼容性

EVM 设计为与任何编程语言编写的智能合约兼容,只要能编译成 EVM 字节码。这为开发者提供了灵活性,使他们可以选择合适的语言来编写智能合约。

d) 去中心化

EVM 运行在以太坊网络的每个节点上,增强了网络的去中心化特性。这意味着没有中心化的控制点,网络的运行不依赖于任何单个实体。

e) 抗审查与透明性

由于智能合约一旦部署即不可更改,且其执行逻辑对所有人透明,EVM提供了一个抗审查的平台,任何尝试修改已部署合约的行为都是公开可见的。

 

3. EVM 的结构

EVM 结构如下图所示:

以太坊 EVM 的结构

 

4. EVM 的执行流程

EVM 执行模型如下图所示:

以太坊 EVM 执行模型