虚拟机指的是,通过软件模拟的、具备完整硬件系统功能并运行在隔离环境下的完整计算机系统,比如虚拟化物理机VMware、Java虚拟机等。实际上在PC上常见的各种手机模拟器、主机模拟器,也都是一种虚拟机。这样的虚拟机往往需要固件运行,非X86或X64架构的系统则需要各自的BIOS辅助运行。
而EVM(Ethereum Virtual Machine,以太坊虚拟机)则是建立在以太坊区块链上的代码运行环境,与传统的虚拟机相似,其主要作用是处理区块链系统内的智能合约。
简单来说,EVM是一个完全独立的沙盒。这意味着合约代码可对外完全隔离,并在EVM内部独立运行。由于EVM也分散储存在每个节点的计算机上,所以当有人需要创建智能合约时,就可以使用类似JavaScript和Python等编程语言创建运行于EVM的应用程序。同时EVM又能与主网的其余部分隔离,运行时并不影响主区块链的操作,这就是EVM存在的意义。
为了减少资源耗费并同时保证系统性能,EVM并没有模拟完整的计算机,而是使用更为轻量级的虚拟机构架,以确保系统流畅。EVM设计的目标是构建具有简单性、确定性、容易优化、节省空间、确保安全等属性且专用于区块链的系统。在2017年召开的Devcon3会议上,以太坊开发者推出了高级语言Solidity来帮助以太坊上智能合约的开发,并希望借此进一步扩大以太坊的应用范围。
与之相似的,XFS的区块链生态更是采用了无代码或低代码开发,并开放更多的系统端口,以帮助所有XFS使用者更好地使用并拓展整个系统,无论该使用者是否懂得代码,都可以通过无代码或低代码的方式快速实现功能需求。
以以太坊为例,以太坊是图灵完备的,开发者可以使用 Solidity 语言创建运行于 EVM 上的应用程序。所谓图灵完备,就是一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的,图灵完备通常指具有无限存储能力的通用物理机器或编程语言。与图灵完备相反的是图灵不完备,比如比特币的脚本系统,就是图灵不完备的。
以太坊的虚拟机为智能合约的实现提供了基础,可实现任何复杂程度的操作。不过它同时也存在着缺陷,比如EVM常用的Solidity语言缺乏标准库、基于栈的架构易于优化但所需opcode更多等。而QTUM推出的量子链x86虚拟机则是由EVM衍生出、旨在修改后者不足的虚拟机。
当然,这些问题将在未来的其它产品进化或以太坊本身的迭代中得以解决,这一切都只是时间问题。