时间:2023-06-17|浏览:183
虚拟机是什么?
Scry分享
这个图是以太坊的智能合约的部署和调用结构,EVM就是虚拟机。
简单来说,以太坊虚拟机是建立在以太坊区块链上的一个代码运行环境。虚拟机本身并没有存储在区块链内,而是和区块链一样同时存储于各个节点计算机上。每个参与以太坊网络中的校验节点都会运行虚拟机,并将其并存储相同的数据,以确保将最权威(最真实)的结果记录在区块链内。
以太坊虚拟机是一个图灵完备的256位虚拟机。这意味着以太坊虚拟机可以进行任何种类的计算。但为了防止恶意用户设计无限循环代码,使虚拟机的运行瘫痪,以太坊虚拟机中执行的代码严格受到一个参数的制约,这个参数就是Gas。这规定了可运行的计算指令的数量上限,以避免产生无限循环(无限循环最终会因 Gas 耗尽而中止)。
以太坊虚拟机的构架实际上是一个简单的堆栈式结构,每个堆栈项目为256位。即虚拟机的位宽为256位,其目的是使之能够方便地应用于256位的Keccak散列算法和椭圆曲线计算。堆栈的存储(storage)是一个基于字段地址的数组,其最大包含1024个元素。此外,虚拟机还包含一个独立的基于字段地址的内存,但不同于普通的内存模型,这个独立的内存是一个非易失性内存(non-volatile memory)。即,当虚拟机不运行时,其所存储的数据不会丢失。该内存中的记录作为整个以太坊系统状态记录的一部分。虚拟机的存储和内存在初始时都被设置为0。