什么是以太坊虚拟机 (EVM),它是如何工作的?

以太(ETH),这是市值第二大的加密货币,因其原生的 ETH 代币而受到加密货币投资者的欢迎。 然而,它的原生 Solidity 编程语言和以太坊虚拟机 (EVM) 有助于它从开发者社区获得好评。 事实上, 燕窝块 继续吸引 去中心化应用程序(DApp) 由于其灵活性、广泛的可用开发人员工具以及该平台庞大的用户群。

EVM 构成了区块链架构的核心,是执行其应用程序代码或 聪明的合同,正如他们所说,为他们提供运行在以太坊网络之上的运行时环境。 更重要的是,EVM 是图灵完备的,因此可以运行以任何编程语言编写的任何程序,从而允许开发人员轻松创建自定义智能合约和 DApps Web3 空间。 

除了这些重要功能外,EVM 还可以访问网络中的所有节点,处理智能合约执行并有效处理以太坊区块链上的所有交易,使其成为当今最强大的虚拟机之一。

什么是以太坊虚拟机 (EVM),它是如何工作的?

2013年由程序员概念化 Vitalik Buterin, 以太坊网络作为 DApp 开发人员的首选区块链取得了非凡的成功,这要归功于 Gavin Wood 在以太坊任职期间设计的以太坊虚拟机 (EVM)。 EVM 使用 C++ 编写并使用 LLVM 项目编译器,是一种特殊的状态机,可以连续运行,其不可变操作决定了以太坊区块链中每个块的状态。 

EVM 不仅管理节点可以或不可以对以太坊区块链维护的分布式账本做什么,还定义了从一个块到另一个块改变状态的具体规则。 后一种功能使以太坊闻名的智能合约功能成为可能。

要了解以太坊虚拟机的作用,需要查看它为确保以太坊网络平稳运行而提供的每一种不同功能。 对于接收到的每个输入,EVM 都会产生一个本质上具有确定性并遵循最简单意义上的数学函数的输出。 

EVM 的运行方式类似于将瞬态值推送到下推堆栈和从下推堆栈推送瞬态值的堆栈机器,其深度为 1024 项,每一项都是一个 256 位字。 它还以字节数组的形式维护一个临时内存,它在以太坊区块链上的两个交易之间发生变化。 已编译的智能合约代码由 EVM 以 140 个标准操作码集合的形式执行,而其他区块链特定的堆栈操作也由它实现。

以太坊虚拟机示意图

因此,EVM 的机器状态在处理任何交易期间本质上是易变的,而全局或世界状态包含有关在以太坊区块链上维护的不同账户的信息。 所有操作均由 EVM 代码管理,自 2015 年以太坊网络推出以来,该代码本身已经经历了多次迭代,导致目前使用的 EVM 存在不同的实现。

事实上,EVM 负责在数千个以太坊节点和执行代码之间维持一定程度的抽象,充当提供一致结果而不向客户端或节点泄露许多细节的函数。

以太坊虚拟机 (EVM) 的用途是什么?

EVM 一直可靠地为以太坊网络上运行的所有应用程序提供支持,没有任何重大停机报告。 对于开发人员而言,EVM 充当运行较小的可执行程序(在以太坊中被称为智能合约)的总体程序,同时为他们提供编写这些智能合约的自由 多种编程语言 包括 Solidity、Vyper、Python 和 Yul 等。

由于 EVM 提供的这种灵活性,以太坊区块链在 分散式金融(DeFi) 不可替代的代币 (NFT) 空间。 这些 DApp 中的每一个及其构成的智能合约都被转换成字节码,这些字节码被输入 EVM 并分布在以太坊网络的所有节点中。 部署智能合约时,EVM 负责与所有节点通信并在达成共识后影响状态更改。

可以说,EVM 被插入到每个以太坊节点中,使用字节码而不是基础编程语言来执行智能合约,从而将物理主机与运行以太坊的机器代码隔离开来。

以太坊虚拟机 (EVM) 的好处

由于 EVM 的运行方式,开发人员可以执行代码而不必担心它对网络其余部分的影响,或者它可能会逃避托管在任何节点计算机上的数据或个人文件。 

此外,他们可以在具有分布式共识的不同计算环境中运行复杂的智能合约。 这确保单个节点的故障不会对 DApp 或智能合约的运行产生任何负面影响,因为 EVM 代码在所有节点上保持相同。 此外,由于帐户数据在 EVM 中维护在全局级别,开发人员发现它非常适合编写自定义智能合约代码和创建可以访问此全局数据集并产生可靠输出的不同 DApp。 

结果的神圣性使得 EVM,特别是 Ethereum 区块链总体上非常适合 DApps 和智能合约 Ethereum 生态系统的可持续扩展。 添加到此可供开发人员选择的标准代码库,越来越多的 EVM 兼容 第一层区块链 以及大量潜在的 EVM 用例,很容易看出为什么 EVM 是首选平台 Web3 开发.

以太坊虚拟机 (EVM) 的缺点

尽管 EVM 提供了许多优点,但在以太坊上构建的开发人员和企业家需要考虑某些缺点。 其中最重要的是与在以太坊网络上运行智能合约相关的高额交易费用或天然气成本。 

这些费用以 ETH 支付,根据合约的复杂程度和执行时的网络拥堵情况而有所不同,因此开发人员和企业家必须 相应地为他们的服务定价. 此外,由于 Solidity 是 EVM 上最受欢迎的编码语言,这确实意味着开发人员需要有足够的经验并拥有少量的技术专长才能使用它创建高效的智能合约。 

后者很重要,因为任何额外的计算要求都会导致更高的 gas 成本,并最终证明不利于项目的成功。 如果开发人员选择使用其他语言编写代码,他们需要小心解决代码中的任何固有重复,因为 EVM 无论如何都会继续编译它们。 虽然可以在稍后阶段升级智能合约,但它会带来与创建引用原始智能合约地址的中介智能合约相关的安全风险。

EVM 的未来

尽管 EVM 给区块链生态带来了革命性的变化,但这种读取和执行代码的技术 正在改进中 由许多区块链项目。 

跨链互操作性 作为对开发人员最重要的方面,许多 EVM 兼容的区块链得到了支持,其中大多数提供比以太坊协议更低的 gas 和更快的交易速度。 因此,这些区块链现在能够与以太坊用户无缝交互,并促进资金转移到他们自己的网络 区块链桥梁.

然而,随着以太坊协议在 2022 年 XNUMX 月成功完成合并, 下一个目标 是从 EVM 到以太坊 WebAssembly (eWASM). eWASM 被设计为高度模块化和独立于平台,被吹捧为以太坊协议的下一个游戏规则改变者,并且可以激励其他区块链也将这种运行时环境用于智能合约。 然而,eWASM 是否会取代 EVM 成为最受信任的智能合约机制,这个问题只有时间才能回答。