Evm是以太坊虚拟机,它是以太坊的“心脏”,是以太坊智能合约运行的环境,是一个通过软件模拟的具有完整硬件系统功能的、运行在完全隔离环境中的完整计算机系统,实体计算机中能完成的工作,在虚拟机里面都可以实现。平时它在沙盒环境中运行,智能合约代码可以在以太坊的虚拟机内部运行,并且保持对外隔离状态。
Evm的概念
以太坊区块链和比特币区块链最大的区别在于,它加入了智能合约作为保持智能合约结果准确性和安全性的重要工具,evm是为了保证智能合约可以安全运行的重要系统。以太坊上面的节点可以下载以太坊客户端,用户在自己的计算机上面通过以太坊虚拟机进行操作,解决节点之间的系统差异,从而更加方便地实现智能合约的结果。Evm和主网的其他部分隔离,运行过程中不影响主区块链的操作。
Evm的作用
以太坊致力于成为下一代智能合约和去中心化应用平台,evm的创作者Vitalik也将其构想成为一个去中心化的世界计算机,这就需要它具有计算、存储、执行等功能。以太坊链上发生转账时,evm会调取转账的数值,分析合约的指令;计算本次转账的gas消耗,确保发出转账的地址具有足够的gas费用;执行合约,实现转账到对应的地址上面。Evm可以保障智能合约顺利执行,为了确保这一迪安,开发者需要为它创建一个安全的运行环境,虚拟机里面的操作不会影响到主机,想要在evm里面创建智能合约的开发者可以直接在虚拟机上面测试,不会占用主链的资源。
Evm说明
Evm作为一个堆栈机运行,它的栈的深度是1024个项,每个项目都是256位的字,选择256位加密技术进行限制,这能让它更加便于使用。在执行代码期间,evm会维护瞬态内存,这一内存不会在一次转账之间持久存在。已经编译的智能合约字节码会作为许多个evm opcodes执行,它们遵循一定的执行标准。
Evm实现
Evm的所有实现都必须遵循以太坊黄皮书当中描述的规范,以太坊的九年历程当中,evm相关规范经过多次修订,现在还有使用不同编程语言实现的以太坊虚拟机的版本。以太坊的执行客户端当中都有一个以太坊虚拟机用来实现,还有多个独立的实现,应用范围广泛。