以太坊虚拟机(EVM)是什么?它是如何工作的?
以太坊(ETH),作为市值第二大的加密货币,因其原生的ETH代币在加密货币投资者中颇受欢迎。然而,它的本土Solidity编程语言和以太坊虚拟机(EVM)对于开发者社区的狂热追捧功不可没。事实上,以太坊区块链因其灵活性、丰富的开发者工具和庞大用户群,持续吸引去中心化应用(DApp)开发者。
EVM是区块链架构的核心,它执行应用程序代码或所谓的智能合约,为它们提供一个在以太坊网络上运行的运行时环境。更妙的是,EVM是图灵完备的,因此可以运行任何编程语言编写的任何程序,这使得开发者可以轻松创建定制智能合约和适用于蓬勃发展的Web3空间的DApp。
除了这些重要功能外,EVM还可以访问网络中的所有节点,处理智能合约执行,并且有效地处理以太坊区块链上的所有交易,使其成为当今最强大的虚拟机之一。
以太坊虚拟机(EVM)是什么以及它是如何工作的?
由程序员Vitalik Buterin在2013年构想,以太坊网络之所以能成为DApp开发者的首选区块链,归功于Gavin Wood在以太坊期间设计的以太坊虚拟机(EVM)。采用C++编写并使用LLVM项目编译器,EVM是一种连续运行的特殊状态机,其不可变操作决定了以太坊区块链中每个区块的状态。
EVM不仅控制节点可以对以太坊区块链维护的分布式账本做些什么,还定义了从区块到区块改变状态的特定规则。正是后一项功能使以太坊以智能合约而闻名。
要了解以太坊虚拟机做什么,需要查看其在确保以太坊网络正常运行中提供的各种不同功能。对于它接收到的每个输入,EVM都会产生一个确定性的输出,以最简单的数学函数形式遵循。
作为一台堆栈机器,将临时值推送到和从弹出式堆栈中,EVM有1024个项的深度,每个项都是一个256位字。它还维护一个临时内存,表现为字节数组,在以太坊区块链上的两次交易之间发生变化。编译后的智能合约代码由EVM以一组140个标准操作码的形式执行,而其他特定于区块链的堆栈操作也由它实现。

因此,EVM在处理任何交易时都有一个本质上不稳定的机器状态,以及包含有关以太坊区块链上维护的不同账户信息的全局或世界状态。所有动作都由EVM代码管理,该代码自2015年以太坊网络启动以来已经经过了多次迭代,导致了目前正在使用的不同EVM实现的存在。
事实上,EVM负责在数千个以太坊节点和执行代码之间维持一种抽象层次,作为一种提供一致结果而不向客户端或节点透露太多细节的功能。
以太坊虚拟机(EVM)的用途是什么?
EVM可靠地为其网络上的所有应用程序提供动力,而没有报告任何重大停机时间。对于开发者来说,EVM是一个运行的母程序,它运行较小的可执行程序,这些程序在以太坊中被称为智能合约,同时允许他们使用包括Solidity、Vyper、Python和Yul在内的多种编程语言编写这些智能合约。
由于EVM提供的这种灵活性,以太坊区块链已经催生了数千个去中心化金融(DeFi)和非同质化代币(NFT)空间的DApp。这些DApp及其构建材料中的智能合约被转换成字节码,然后输入到EVM中,并在以太坊网络的所有节点之间分发。当智能合约部署时,EVM负责与所有节点通信并在达成共识时实施状态更改。
可以说,EVM被嵌入到每个以太坊节点中,使用字节码执行智能合约,而不是在EVM上运行的基编程语言,从而隔离物理主机计算机和以太坊运行的目标代码。
以太坊虚拟机(EVM)的好处
EVM运行的方式使得开发者可以执行代码,而不必担心它对网络的其余部分或可能在不加载数据或个人文件的主机计算机上擅离职守的影响。
此外,他们可以在不同的计算环境中运行复杂的智能合约,具有分布式共识。这确保了单节点故障不会对DApp或智能合约的运行产生任何负面影响,因为EVM代码在所有节点上都是相同的。此外,由于账户数据在全球层面上维护在EVM中,开发者发现它非常适合编写定制的智能合约代码并创建可以访问此全球数据集并产生可靠输出的独特的DApp。
结果的神圣性使得EVM(特别是以太坊区块链)特别适合DApps和智能合同的以太坊生态系统的可持续扩展。再加上可供开发者选择的标准化代码库、越来越多的与EVM兼容的第二层区块链以及大量的可能EVM用途,毫不奇怪,EVM是Web3开发的优选平台。
以太坊虚拟机(EVM)的缺点
尽管EVM提供了许多优点,但在以太坊上进行智能合约开发时,开发者和企业家仍需考虑一些不足之处。其中最重要的可能是运行以太坊网络上智能合约所涉及的高交易费用或燃气成本。
这些费用以ETH支付,并根据合同复杂性和执行时的网络拥堵程度而变化,这使得开发者和企业家必须相应地定价他们的服务。此外,由于Solidity是对于EVM上编码最常使用的语言,这也就意味着开发者需要具备与它适当的经验和技术专长,才能使用它编写高效的智能合约。
这很重要,因为任何额外的计算需求都会导致燃气成本更高,最终可能损害项目的成功。如果开发者选择使用其他语言编写代码,他们需要小心解决代码中的任何固有重复,因为EVM仍然会编译它们。虽然可以在后期升级智能合约,但这伴随着与创建引用原始智能合约地址的中介智能合约相关的安全风险。
EVM的未来
尽管EVM给区块链生态系统带来了革命性的变化,但许多区块链项目正在改善这种读取和执行代码的技术。
对于开发者来说,跨链互操作性是最重要的方面,许多与EVM兼容的区块链已经出现,其中大多数提供了比以太坊协议更低的燃气和更快的交易速度。因此,这些区块链现在可以无缝与以太坊用户交互,并通过区块链桥梁促进资金转移到它们的网络。
然而,由于以太坊协议在2022年9月成功完成了合并,下一个目标是移除EVM并转向以太坊WebAssembly(eWASM)。eWASM设计为高度模块化和平台无关,被誉为以太坊协议的下一个变革者,并可能激励其他区块链也采用这种智能合约运行时环境。但是,eWASM是否将取代EVM作为最值得信赖的智能合约机制,只有时间能回答这个问题。