1. 前言

以太坊网络的存在仅是为了保持以太坊区块链状态机的单一、连续、不间断和不可变的操作。它是所有以太坊账户、智能合约和数据所在的环境。在任何给定的区块中,以太坊都有一个也是唯一一个全球公认的“状态”。以太坊虚拟机 (EVM) 定义了从区块到区块之间计算新的有效状态规则。

理解 EVM 需要对字节内存堆栈有一些基本的了解。

熟悉一些密码学(如散列函数)也可能会有所帮助。

2. 以太坊状态机

像比特币这样的区块链通常被描述为“分布式账本”,它使用密码学的基本工具来实现去中心化货币的存在。

加密货币的行为可以像“正常”货币一样,因为规则规定了人们可以做什么和不可以做什么来修改这个分类帐。例如,一个比特币地址不能花费比它之前收到的更多的比特币。这些规则支持在比特币以及类似的其他区块链上发生的所有交易。

虽然以太坊也有其原生加密货币以太币,但它还支持我们已经看到的更强大的功能——智能合约。对于这个更复杂的功能,我们需要一个比“分布式账本”更强大的类比。

以太坊可以描述为分布式状态机,而不是分布式账本。状态机本质上是可以响应某些输入而从一种状态变为另一种状态的任何机器。

简单的状态机是一种投币式旋转闸门,常见于地铁或火车站,他们使用硬币支付或持有车票,才可以进入。

66Mee9k.png

旋转门的初始状态是锁定的。在锁定状态下,如果你继续推动它,它会保持锁定状态。如果您放入硬币,它会进入解锁状态。如果您继续插入硬币,它会保持解锁状态。一旦您进入解锁状态(有人通过),它就会再次锁定。

对于以太坊来说,状态要复杂得多。它使用包含区块链所有状态的大型数据结构来描述。状态如何从一个块到另一个块的变化的具体规则由 EVM 定义。

evm.png

EVM 的行为类似于数学状态转换函数。给定当前状态和一组新的有效交易,它会产生一个新状态。输出是确定性的,这意味着对于相同的输入,它总是会产生相同的输出。

Y(S, T) = S'

给定旧的有效状态**S和一组新的有效交易T,状态转换函数Y产生新的有效状态S'**。