来源:世界挖矿网(wbcmining.com)
以太坊已成为仅次于比特币的第二关键区块链。以太坊能发展得那么好,它原生Solidity编程语言和以太坊虚拟机(EVM)发挥了重要作用。那么,究竟什么是以太坊虚拟机呢?它又是怎么工作的呢?下面,我们一起来看看。
什么是以太坊虚拟机(EVM)?
为了了解以太坊虚拟机,我们先来了解两个概念:“虚拟机”和“图灵完整性”
虚拟机
虚拟机是模拟物理计算机行为的程序。虚拟机有它的存放和控制部件,在你的电脑上做为过程运作。这有些像一台电脑在另一台电脑上运作。
虚拟机类似普通的Windows或Mac OS软件。这儿的区别就是虚拟机被设计成实行更高级的功效。此外,与常规操作系统不同,虚拟机无法访问计算机其他部分,如存放或带宽。
假如你应用模拟器在PC上玩过Android游戏,那么虚拟机可能很了解。尽管模拟器和虚拟机有很大不同,但它们都贴近硬件能力,可以在“Sandbox(沙盒)”环境里执行代码。
图灵完备性
英国数学家艾伦·图灵(Alan Turing)创造了第一台图灵设备,它是当今计算机先驱。只要有充足的时间与资源,图灵整机能够解决任何测算,无论多么繁杂。
如今,使我们将这些想法结合起来,定义以太坊虚拟机:
以太坊虚拟机(EVM)是一个巨大的虚拟机,允许部署和执行代码。您仅需安装需要的客户端即可浏览EVM,并使用它在以太坊上执行程序。实质上,EVM当做“全球计算机”,在分散的环境里实行软件操作。
因为没有集中控制,EVM由几个个人/企业保持,这些个人/公司向系统提供计算水平,以获得奖励。因此,它有利于建立任何一方都难以单方关闭的抗核查应用程序。
EVM是图灵完备的,因为他可以用于实行各种复杂性计算。这便是以太坊与比特币的差别,由于BTC是图灵不完整的,限制了其作用。
以太坊虚拟机的特点:
1、确定性
在编程中,确定性是指程序在每个案例中为特定输入生成相同输出能力。确定性保证开发者能够独立地设计程序来执行特定的操作并产生所需的结果。
EVM是确定性的,因此不管实行多少次测算,操作码都会提供同样的结果。这一点很重要,由于以太坊的智能合约驱动的DAPP可以解决高价值的交易,而且务必可靠地执行。不然,客户就不会有信心使用他们时不发生预想的故障。
2、独立性
EVM是独立的,这意味着代码无法访问计算机上的过程。您可以在EVM中安全地布署程序,同时维护你的硬件/软件免遭潜在难题的影响。
此外,智能合约在EVM里的防护环境中运行。因此,影响特定智能合约的bug或黑客不会损害底层协议。
3、可停止的
EVM是图灵完备的,因此理论上,如果它有正确的资源与命令,它可用于实行任何测算。然而,每次测算都取决于分给它气体。假如Gas耗光,则操作终止。
在这种情况下,您可以将以太坊视作“准图灵完成”或“可停止”,由于代码执行能够在一定时间停止。可是,此作用针对保证程序不会始终(意外或恶意)运作并导致网络停滞至关重要。
以太坊虚拟机是如何工作的?
EVM用C++撰写并使用LLVM项目编译器(LLVM是架构编译器的框架系统,用以提升随意编程语言编写的程序的编译时间、连接时间、运行时间及其空余时间),它是一种能够连续操作的特殊的状态机,决定了以太坊区块链中每个区块状态。
EVM不但管理着节点对分布式账本的操作范畴,还定义了在不同区块之间改变情况的实际标准。后一种作用是以太坊智能合约成功运转的基本。
要知道以太坊虚拟机的功效,要搞清楚它在保证以太坊网络平稳运行方面都做了些哪些。
针对接收到的每一个输入信息,EVM都会产生一个实质上具备确定性的导出信息。
EVM的运行模式类似将暂态值推入和发布下推栈的堆栈设备,其深度为1024个项,而每个项都是256位字。
此外,它也以字节数组的方式维护临时内存。已编译的智能合约代码由EVM以140个规范操作码结合的方式实行,其他区块链独有的堆栈操作也由它完成。
因此,EVM在处理交易过程中具备实质上不稳定设备情况,同时它又具有全局或全球情况以容下以太坊区块链上的不同账号信息。
以太坊上的全部操作都由EVM代码管理,自2015年以太坊网络发布至今,EVM代码自身经历过数次迭代,这就导致目前存有多种EVM完成工具。
EVM承担维护数千个以太坊节点和执行代码之间的抽象等级,以及在不向客户端或节点泄漏太多细节的情形下起到传输一致信息的作用。
讲到这里,相信大家对于什么是以太坊虚拟机,以及它是怎么工作的都有一定的了解了。总的来说,EVM给区块链生态系统增添了革命性的改变,但很多区块链项目也在改善这类用以读取和执行代码的技术。