区块链知识分享——虚拟机(1)

虚拟机是什么?

这个图是以太坊的智能合约的部署和调用结构,EVM 就是虚拟机。简单来说,以太坊虚拟机是建立在以太坊区块链上的一个代码运行环境,但虚拟机本身并没有存储在区块链内,而是和区块链一样同时存储于各个节点计算机上。每个参与以太坊网络中的校验节点都会运行虚拟机,并将其作为区块有效性校验协议的一部分。每个节点都会对合约的部署和调用进行相同的计算,并存储相同的数据,以确保将最权威(最真实)的结果记录在区块链内。

以太坊虚拟机是一个图灵完备的 256 位虚拟机,这说明以太坊虚拟机可以进行任何种类的计算。但为了防止恶意用户设计无限循环代码使虚拟机的运行瘫痪,以太坊虚拟机中执行的代码严格受到一个参数的制约,这个参数就是 Gas。

这规定了可运行的计算指令的数量上限,从而不会产生无限循环(无限循环最终会因耗尽 Gas 而中止)。以太坊虚拟机的构架实际上是一个简单的堆栈式结构,每个堆栈项目为 256 位,即虚拟机的位宽为 256 位,其目的是使之能够方便地应用于256位的Keccak散列算法和椭圆曲线计算。堆栈的存储(storage)是一个基于字段地址的数组,其最大包含 1024 个元素。此外,虚拟机还包含一个独立的基于字段地址的内存,但不同于普通的内存模型,这个独立的内存是一个非易失性内存(non-volatile memory),即当虚拟机不运行时,其所存储的数据不会丢失。该内存中的记录作为整个以太坊系统状态记录的一部分。虚拟机的存储和内存在初始时都被设置为 0。

你可能感兴趣的:(blockchain)