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

By [Web3CN](https://paragraph.com/@web3cn-pro) · 2022-12-02

---

以太坊已成为仅次于比特币的第二重要区块链。以太坊能发展得这么好，它的原生Solidity编程语言和以太坊虚拟机（EVM）发挥了重要的作用。

以太坊区块链凭借自身拥有的灵活性、大量可用的开发工具和庞大的用户基础，继续吸引着去中心化应用（DApp）开发人员的加入。

作为区块链架构的核心，EVM是执行以太坊应用代码或智能合约的程序，并为它们提供在以太坊网络上运行的环境。

此外，EVM是图灵完备的（ 一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的），因此理论上，它可以运行所有以编程语言编写的程序，从而让开发人员可以轻松地创建自定义智能合约和DApp。

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

什么是以太坊虚拟机（EVM），它是如何工作的？
-----------------------

以太坊网络的概念是程序员Vitalik Buterin在2013年提出的。

作为DApp开发者的首选区块链，以太坊的成功有赖于Gavin Wood在以太坊任职期间设计的以太坊虚拟机（EVM）。

EVM用C++编写并使用 LLVM项目编译器（LLVM是架构编译器的框架系统，用于优化任意程序语言编写的程序的编译时间、链接时间、运行时间以及空闲时间），它是一种可以连续运行的特殊的状态机，决定着以太坊区块链中每个区块的状态。

EVM不仅管理着节点对分布式账本的操作范围，还定义了在不同区块之间改变状态的具体规则。后一种功能是以太坊智能合约成功运行的基础。

要了解以太坊虚拟机的作用，需要知道它在确保以太坊网络平稳运行方面都做了些什么。

对于接收到的每一个输入信息，EVM都会产生一个本质上具有确定性的输出信息。

EVM的运行方式类似于将瞬态值推入和推出下推栈的堆栈机器，其深度为1024个项，而每个项都是256位字。

此外，它还以字节数组的形式维护临时内存。已编译的智能合约代码由EVM以140个标准操作码集合的形式执行，其他区块链特有的堆栈操作也由它实现。

因此，EVM在处理交易过程中具有本质上不稳定的机器状态，同时它又具备全局或世界状态以容纳以太坊区块链上的不同账户信息。

以太坊上的所有操作均由EVM代码管理，自2015年以太坊网络推出以来，EVM代码本身经历了多次迭代，这也使得目前存在多种EVM实现工具。

EVM负责维护数千个以太坊节点和执行代码之间的抽象层级，以及在不向客户端或节点泄露过多细节的情况下起到传送一致信息的作用。

以太坊虚拟机（EVM）的用途是什么？
------------------

EVM一直在为以太坊上的所有应用提供可靠的动力。

对于开发人员来说，EVM是运行较小的可执行程序（在以太坊中称为智能合约）的首要程序，同时为他们提供了用各种编程语言（如Solidity、Vyper、Python和Yul等）编写这些智能合约的自由。

由于EVM提供的这种灵活性，以太坊区块链在DeFi和NFT领域催生了数千个DApp。

每一个DApp和组成它们的智能合约都被转换为字节码，这些字节码被传送至EVM并分布在以太坊网络的所有节点中。

当部署智能合约时，EVM负责与所有节点联系，并在达成共识后进行状态更改。

可以说，正是因为EVM，以太坊得以使用字节码而非基本编程语言来执行智能合约，从而物理主机与以太坊运行的机器代码可以被区分开来。

以太坊虚拟机（EVM）的好处
--------------

EVM的运作方式为开发人员执行代码扫清了一些顾虑——不会影响网络的其他部分或影响托管在任意节点的数据或个人文件。

此外，开发人员可以在具有分布式共识的不同计算环境中运行复杂的智能合约。

这确保单个节点的故障不会对DApp或智能合约的整体运行产生任何负面影响，因为所有节点上的EVM代码都是相同的。

![](https://storage.googleapis.com/papyrus_images/b05687460086acfbacfb8a2638f27ec5c78bfb765a51ac0337c38db55eb6c0ae.png)

不仅如此，因为账户数据在EVM中维持着一种全局状态，这为开发人员创造了良好的条件以编写自定义智能合约代码和创建可以访问全局数据集并产生可靠输出的独特DApp。

总体上来说，以太坊区块链非常适合于DApp和智能合约的可持续扩展。

除了上述提到的，EVM还有可供开发人员选择的标准代码库、越来越多与之兼容的第2层区块链和大量潜在的EVM用例，这就是为什么EVM是Web3开发的首选平台。

以太坊虚拟机（EVM）的缺点
--------------

但EVM并非十全十美，打算在以太坊上发展项目的开发人员和企业家也需要了解一下EVM的不足之处，比如高额交易费或者说Gas成本。

这些费用需要用户通过ETH进行支付并且会根据智能合约的复杂性和当时网络拥塞情况变化，这要求开发者和企业家必须对服务进行相应定价。

此外，Solidity是EVM上最受欢迎的编码语言，这意味着开发人员需要有足够的经验和一定的技术专长，才能利用Solidity创建高效的智能合约。

这一点很重要，因为任何额外的计算需求都将导致更高的Gsa成本，而这不利于项目的成功。

如果开发人员选择使用其他语言进行编码，那么他们需要认真解决代码中的任何固有重复问题。

EVM的未来
------

EVM给区块链生态系统带来了革命性的变化，但许多区块链项目也正在改进这种用于读取和执行代码的技术。

跨链互操作性对于开发人员来说是最重要的，许多与EVM兼容的区块链已经发展起来了，其中大多数都提供了比以太坊更低的费用和更快的交易速度。

以太坊用户可以直接与这些区块链进行无缝交互，并通过跨链桥将以太坊上的资金转移到这些区块链。

还有必须提到的是，随着在2022年9月完成合并，以太坊的下一个目标是完成从EVM到以太坊WebAssembly （eWASM）的范式转变。

以太坊旨在将eWASM打造成一个高度模块化并独立于平台的虚拟指令集体系架构。

很多人将eWASM吹捧为以太坊的下一个游戏规则改变者，并认为它可能为其他区块链所使用。

然而，eWASM到底能否取代EVM成为最受信任的智能合约机制呢？这个问题，或许只有时间能回答。

来源：cointelegraph

编译：[Dali@iNFTnews.com](mailto:Dali@iNFTnews.com)

声明：web3中文编译作品，内容仅代表作者立场，且不构成投资建议，请谨慎对待，如文章/素材有侵权，请联系官方客服处理。

---

*Originally published on [Web3CN](https://paragraph.com/@web3cn-pro/evm)*
