虚拟机指的是,通过软件模拟的、具备完整硬件系统功能并运行在隔离环境下的完整计算机系统;比如虚拟化物理机VMware、Java虚拟机等。而以太坊虚拟机(Ethereum Virtual Machine,EVM)则是建立在以太坊区块链上的代码运行环境,其主要作用是处理以太坊系统内的智能合约。
简单来说,以太坊虚拟机是一个完全独立的沙盒,合约代码可对外完全隔离并在EVM内部运行。由于EVM分散储存在每个节点的计算机上,所以希望创建智能合约的公司可使用类似JavaScript和Python等编程语言创建运行于EVM的应用程序;同时以太坊虚拟机又能与主网的其余部分隔离,运行时不影响主区块链的操作。出于这个原因,以太坊有时被形容为“世界电脑”。
为了减少资源耗费及保证系统性能,以太坊虚拟机并没有采用模拟完整计算机的模式,而是使用更为轻量级的虚拟机构架。其开发者团队表示,EVM设计的目标是构建具有简单性、确定性、容易优化、节省空间、确保安全等属性且专用于区块链的系统。此外,2017年召开的Devcon3会议上,以太坊开发者还推出了基于以太坊电子分布式代码合约的高级程序语言Solidity,希望借此进一步扩大该技术的应用范围。
理论上以太坊是图灵完备的,其虚拟机为智能合约的实现提供了基础,可实现任何复杂程度的操作。不过它同时也存在着缺陷,比如EVM常用的Solidity语言缺乏标准库、基于栈的架构易于优化但所需opcode更多等。而QTUM推出的量子链x86虚拟机则是由EVM衍生出、旨在修改后者不足的虚拟机。
上期回顾:什么情况下智能合约应用案例难以实现?
下期预告:经常听说的图灵完备是什么?
区块链课堂是哈希派(公众号ID:hashpai)围绕区块链技术推出的每日问答栏目,帮助大家从各方面了解区块链领域的相关知识。如果你对区块链有自己的想法以及相关疑惑,欢迎在评论区留言,我们将会在近期更新中为你解答。