首页 能链洞察 区块链百科

智能合约 | 为什么需要虚拟机?

智能合约 | 为什么需要虚拟机?

发布时间:2020.11.21
区块链技术领域基础设施——虚拟机,是实现智能合约系统最为关键和核心的技术。那么到底什么是虚拟机?普通的虚拟机和区块链虚拟机的差别是什么?以及为什么智能合约需要区块链虚拟机?

一、什么是虚拟机?

当今的许多尖端技术,如云计算、边缘计算和微服务,都起源于虚拟机(Virtual Machine)的概念,即将操作系统和软件实例从物理计算机中分离出来。

本质上来说,虚拟机(VM)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在VM世界中,实际运行在计算机上的操作系统称为主机,而在VM中运行的任何操作系统称为客户操作系统。每个VM都可以独立运行自己的操作系统,即便它们共享同一物理主机的资源,如CPU周期、网络带宽和内存。

从20世纪60年代,大型机用户的时间共享是将软件从物理主机系统中分离出来,到20世纪70年代,虚拟机被定义为“真实计算机机器的有效的、独立的复制品”,今天我们所知道的虚拟机在计算机领域有了革命性的发展。

许多公司为了更有效地利用物理服务器的计算能力,采用了服务器虚拟化,减少了对物理服务器的需求,从而节省了数据中心的空间。

桌面计算机系统也可以利用虚拟机,最常见的案例就是一个Mac用户在Mac物理硬件上运行一个虚拟Windows 10实例。它就像一台完整的、独立的计算机,运行主操作系统无法运行的软件,并在安全的沙箱环境中试用应用程序。

智能合约,为什么需要虚拟机

二、为什么区块链需要虚拟机?

这与区块链的独特性相关,区块链系统需要共识机制,保证每一个人输出的计算结果是一致的。

但正如有些机器是64位,有一些是32位,不同的运算在不同的位数的设备上,其运行结果的表示可能是不一样的。这样的结果如果出现在区块链上,各个节点并不容易达成共识。因此,区块链需要一个基于软件层面的虚拟机,来屏蔽不同硬件的差异。

比特币作为区块链的第一代应用,完成从A到B的交易转账,并未用到虚拟机。而当这个转账过程用智能合约代码锁定时,要执行这段代码,则需要虚拟机。

因为智能合约产生价值的最基本前提是,约定的条件可以被确定性执行。然而,智能合约的本体是一份代码,非常容易被篡改,如何为其提供强力的存储介质就成了关键。

本质上来说,智能合约的价值,是赋予区块链可编程性,这极大地扩展了区块链的业务场景。而区块链虚拟机的价值,则是为智能合约代码提供可靠的运行环境。

我们以运行在以太坊区块链上的EVM为例,它包含数以百万计的可执行对象,每个对象都有自己的永久数据存储。此外,该EVM是准图灵完备状态机,“准”是因为所有的执行过程都被限制在一个有限的计算步骤中,而这解决了终止性问题。

智能合约,为什么需要虚拟机

三、虚拟机是如何工作的?

如前所述,由于有了虚拟机,区块链智能合约的功能才得以实现。

这听起来非常简单直接,合同条款按照我们期望交互的方式进行编程,虚拟机负责执行这些操作,但实际上包含了巨大的复杂性。能链科技基于以太坊成熟EVM体系,升级扩展链上智能合约功能,使其灵活满足各类复杂多变的应用场景。

智能合约由区块链虚拟机运行。而虚拟机的运行,需要消耗区块链上的资源。这些资源体现为区块链节点的CPU、内存和磁盘资源。

我们对每个智能合约交易都限制了它的资源消耗上限,达到上限之后就会立刻终止智能合约的执行,防止恶意的区块链节点对资源的无限使用,导致区块链网络出现问题。

开发人员需使用虚拟机所兼容的编程语言。我们支持智能合约编程语言Solidity,并且在Solidity的基础上增加了对调用合约时的数字身份的检查,做到对智能合约的身份保护。

为了更好的运行,我们提供了在合约中调试数据的功能。对于开发者来说,这样能够做到快速方便的调试智能合约的状态以及修复其中的问题。

智能合约,为什么需要虚拟机

当然,智能合约虚拟机仍处早期阶段,只有进一步提升其速度和效能,以期应对更复杂的情况,区块链上运行的智能合约才能真正降低违约风险,扩展商业范围。

*本文图片来源于网络,仅供学习交流使用,不具任何商业用途,图片版权归原作者所有,如有侵权还请联系我们,谢谢!