以太坊区块链可以被描述为内置编程语言的区块链。或者,它也可以被定义为基于共识的全球执行虚拟机。以太坊协议中负责所有计算的部分被称为以太坊虚拟机(EVM)。
EVM 是以太坊能够运行智能合约的关键。智能合约使以太坊能够利用去中心化应用程序(dapps)的力量。此外,智能合约使公司能够在以太坊区块链上进行所谓的ICO,即首次代币发行,以启动他们自己的代币。
EVM 是沙盒化的并与现实世界隔离。这意味着在 EVM 中运行的代码无法访问网络、文件系统或任何其他进程。这使 EVM 非常适合开发和测试智能合约,而不会干扰区块链的运作。
你可能会问自己,为什么在沙盒环境中测试智能合约是一个好主意。问题是有缺陷的代码对任何智能合约都可能是有害的,所以确保智能合约代码中没有缺陷是必须的。更重要的是,像 EVM 这样的沙盒环境提供了无限的机会来学习、迭代、改进,最终完成准备好部署到区块链的健壮智能合约。
以太坊虚拟机被描述为图灵完备。图灵完备性指的是计算机执行它所面临的任何计算的能力。这意味着,在以太坊中,可以编写能够解决任何合理计算问题的程序或去中心化应用程序。
但 EVM 有一个限制,它作为一种安全预防措施存在。智能合约可以调用其他合约,从而可能导致无限循环。因此,EVM 要求为每一笔网络交易支付Gas费。这意味着,通过耗尽发起交易者的以太币,无限的计算循环被阻止。由于这项安全措施,EVM 不能完全图灵完备。相反,它被称为准图灵完备。
另外值得一提的是,EVM 甚至无法访问最基本的现实世界数据。例如,EVM 无法自行知道今天是哪一天,或了解当前温度。为了获取这类数据,这些数据通常是智能合约正确执行所需的,EVM 依赖于称为预言机的实际数据提供者。预言机可以从网站、应用程序或其他地方收集数据,并将其提供给智能合约。
每当在以太坊区块链上发起交易——无论是简单的价值转移还是智能合约部署——EVM 必须执行以下三项检查:
如果 EVM 检测到发送者没有为发起的交易分配足够的 Gas,交易将不会成功。在这种情况下,交易费用不会退还给交易的发起者。相反,它支付给矿工。然而,如果因为接收者地址上的错误导致交易不成功,EVM 将退还发送的金额以及相关费用回给发送者。
EVM 是以太坊魔法发生的地方,为区块链技术和加密货币世界增加了额外的价值。由于 EVM 等特性,以太坊平台享受着巨大的流行,其本土加密货币以太币一直是市值最大的加密货币之一。