在我们了解各类公链时,有个概念经常出现--EVM(ethereum Virtual Machine,以太坊虚拟机),它被称作以太坊的“心脏”。同时,EVM也是构成区块链架构的核心,是执行其应用程序代码或智能合约的程序,为它们提供运行在以太坊网络之上的运行时环境。
那么,EVM究竟是什么呢?它有哪些用处呢?
什么是EVM ?
以太坊则是基于图灵完备可编程的,开发者可以在这个操作系统上构建去中心应用程序,就像是现在的手机安卓和苹果系统,开发者可以在上面进行再创造。但这样就存在一个问题,如果所有的开发者都在硬件设备上去写程序,一旦受到了攻击,那么整条链都会出现风险。于是,EVM出现了。
EVM是一个轻量级的虚拟机,指建立在以太坊区块链上的代码运行环境,代码对外完全隔离,只在EVM内部运行。也就是说在EVM中运行的代码无法访问网络、文件系统和其他进程。EVM主要的作用是处理以太坊内的智能合约。
EVM与主链分开,运行时也不影响主链的操作。EVM分散分布在每个节点的计算机上,节点可以各自创建智能合约,代码编译成EVM字节码后就可以基于EVM独立运行,不同节点之间创建智能合约互不影响。
进入虚拟的系统之后,所有其他项目都可以来这里创造他们的构想,就算被攻击也没事,EVM就是创造了一个和主链有相同功能又有主链相隔离的世界,隔断了主机所有的风险。同时,这也提供了无数的机会来测试智能合约,从而有利于编写出最稳定最实用的智能合约。
EVM有何用处?
以太坊致力成为下一代智能合约和去中心化应用平台做“世界计算机”就需要有计算,存储,执行等功能。所以以太坊在拥有比特币网络中基本的数据存储功能之外,还需要运行各种代码进行计算,由以EVM所编译和解释执行的软件或者应用就是“智能合约”。
在以太坊系统里有三种转账类型:用户与账户之间的转账、用户创建智能合约转账、用户执行智能合约转账。这三种转账,都需要EVM运行特定的代码完成。
当转账发生时,EVM需要确认转账是否有正确的数值、确认签名的有效性以及转账的nonce是否符合特定转账数量的nonce,如果无法通过验证,转账会判定为错误而返回。
当交易发出后,EVM会根据交易的执行步骤按照规则收取gas费作为矿工的酬劳支付给矿工。如果发出者没有支付足够的gas费用,转账就会退回;如果gas费用足够,EVM就会完成转账交易。
EVM对智能合约的存储,执行和验证都有非常重要的作用,是以太坊重要的组成部分。
另外,从EVM的转账交易过程中,我们也可以看出EVM在工作中有以下几种功能:
1.便于测试。为了保证各种“智能合约”的顺利执行,我们需要给它们创建一个安全的运行环境,以太坊虚拟机就是一个代码的运行环境。
2.增加安全性。以太坊上承载着具有强大功能的各种应用,其逻辑也就更加复杂,开发者也越容易出现各种漏洞。而EVM是独立于主链的,合约代码可对外完全隔离并在EVM内部运行,不会因为收到攻击而影响整个主链。
3.保障稳定性。由于以太坊虚拟机部署在以太坊网络的每个节点,整个以太坊网络的数据由众多节点共同维护和更新,这保持了整个区块链数据的一致性,这同样也使以太坊有极高的故障容错性,保证零停机。
总之,以太坊虚拟机是以太坊区块链中非常重要的部分。它在智能合约存储,执行和验证过程中,都有非常重要的作用。不仅整体上可以为开发人员提供应用测试环境,一定程度上提升了以太坊主链的安全性、稳定性。