本文会用简单易懂的语言,带领大家对EVM做简单了解(仅对概念、功能等做了解)。在下文中,我们将一起学习:
什么是以太坊虚拟机? 为什么要用虚拟机? 这个虚拟机的功能是什么?
我们先来看看虚拟机是个什么东西?
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
也就是说在实体计算机中能够完成的工作在虚拟机中都能够实现。虚拟机通过生成现有操作系统的全新虚拟镜像,具有和windows系统完全一样的功能,但它又是独立运行的,不会对真正的系统产生影响。
以太坊虚拟机,顾名思义就是以太坊的虚拟机。需要注意的是,比特币区块链里是没有虚拟机的。因为比特币的核心功能是分布式存储数据,我们可以在这个网络里记录、验证、存储及复制交易数据。以太坊则是去中心化的“世界计算机”,开发者们还可以在这个操作系统上构建去中心应用程序,这就意味着以太坊不仅要能够分布式数据存储,还需要计算、运行代码、沟通交流等。
以太坊虚拟机(EVM)
我们都知道,以太坊区块链区别于比特币区块链最关键的点在于,它加入了智能合约为保持智能合约运行结果的准确性以及安全性,智能合约的运行环境就显得至关重要。为此,Vitalik和Gavin Wood设计了以太坊虚拟机。
以太坊上的节点可以下载以太坊客户端,在他们自己的计算机上通过以太坊虚拟机这个虚拟的操作系统来运行,这样能更好地解决节点的系统差异,更好地实现智能合约的结果。用一句话总结,以太坊虚拟机就是智能合约的运行环境。
以太坊虚拟机运行在沙盒环境中,智能合约代码可在以太坊虚拟机内部运行并对外完全隔离。同时以太坊虚拟机又能与主网的其余部分隔离,运行时不影响主区块链的操作。沙盒也是计算机术语,在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。
以太坊区块链vs EVM vs智能合约
以太坊区块链可以承载三种类型的交易:
1、把ETH从一个帐户转到另一个帐户。例如,从你的帐户发送3ETH到你朋友的账户里。在这里,交易记录包含以下内容:交易生效时的时间戳、发送者的ETH地址、接收者地址,以及发送金额。
2、ETH从一个账户转移到“无人区”。这类交易需要创建智能合约,例如,你和朋友打赌,谁先在1个月内瘦5斤,谁就能得到1ETH,在以太坊上创建一个智能合约,写明规则,谁胜出,谁就能自动获得1ETH。在这里,交易记录只包含发送者的帐户和时间戳。
3、ETH从外部账户转移到智能合约。在这里,账户想要执行智能合约,转账就会根据智能合约完成,而且相关的执行规则会记录在数据中,来指导这个合约如何运行。
每次发生上述交易时,网络节点将通过以太坊虚拟机运行智能合约代码。但需要注意的是运行智能合约是需要费用的。
智能合约的价格
每次执行智能合约,都需要向以太坊虚拟机支付一定费用来执行。这个费用支付给帮忙存储、计算、执行和验证智能合约的节点。
每个智能合约的执行费用Gas来支付,Gas可以转换成ETH。在执行智能合约时,需要先指定想要花费的Gas,当交易完成或Gas花费完时,执行终止。因此,智能合约不会无限循环地执行到地老天荒。
所以,只要以太坊区块链上有交易发生,以太坊虚拟机就会执行以下流程:
1、确认转账额是否正确、验证签名的有效性、验证该交易的nonce是否与该特定交易帐户的nonce匹配。如果存在不匹配,交易将返回。
2、计算转账所需的费用,并收取Gas。
3、运行转账操作。
如果以太坊虚拟机检测到发送方没有放入足够的gas或ETH,则将会对交易进行回滚。那么,交易费将不会退还,并付给矿工。如果由于收件人地址错误而导致转账失败,以太坊虚拟机会将转账金额以及相关费用退还给发件人。