以太坊虚拟机介绍
近期打算写一些关于以太坊虚拟机(后面简称EVM)的文章,这是其中的第一篇。这一系列文章想站在EVM指令集的角度,带领读者逐步理解EVM工作原理,进而理解以太坊区块链技术细节。由于网上介绍以太坊的文章也比较多,所以这一系列文章将最大程度减少不必要的废话,直接提供文章想要表达的信息。
EVM基本信息
编程语言虚拟机一般有两种类型,基于栈,或者基于寄存器。大部分我们所熟知的语言都采用基于栈的虚拟机,比如最著名的Java虚拟机。在游戏领域非常流行的Lua语言则采用了基于寄存器的虚拟机。和JVM一样,EVM也是基于栈的虚拟机。
既然是支持栈的虚拟机,那么EVM肯定首先得有个栈。为了方便进行密码学计算,EVM采用了32字节(256比特)的字长。EVM栈以字(Word)为单位进行操作,最多可以容纳102