以太坊存储和执行
在过去的几个轨道上,我们一直在编写智能合约,并简要地提到,以太坊智能合约在这个叫做以太坊虚拟机(EVM)的东西中运行。
我们还顺便简单地提到,EVM 能够运行某些 OPCODES,并处理堆栈或堆中存在的数据。如果你有正式的计算机科学背景,这对你来说可能是有意义的,但对其他人来说,这实际上意味着什么?
在这一层面,我们将深入挖掘 EVM 执行引擎,以及数据在整个事务过程中是如何存储、操作和运行的。
总结
在继续前进之前,让我们回顾一下我们在先前的轨道中所教授的一些东西。
回顾一下 Ethereum 作为一个基于交易的状态机工作。从某个状态 s1 开始,一个交易操作某些数据,将世界状态转移到某个状态 s2。
为了把事情组合在一起,交易被打包成块。一般来说,每个区块都会将世界状态从状态 s1 改变到 s2,而转换是根据区块内每个事务的状态变化来计算的。
当我们想到这些状态变化时,以太坊可以被认为是一个状态链。
但是,这个世界的状态是什么?
世界状态
以太坊的世界状态是地址和账户状态之间的映射。以太坊的每个地址都有它自己的状态,这可能是一个用户账户(EOA)或一个智能合约。
每个区块基本上都会操纵多个账户状态,从而操纵以太坊的整体世界状态。