在深入探讨以太坊虚拟机(EVM)的内部工作机制时,“内存”(Memory)是一个不可或缺的核心概念,它并非我们日常计算机中物理意义上的RAM,而是EVM为每个独立合约调用提供的一块临时、易失性的存储区域,理解以太坊的Memory,对于开发者编写高效、安全的智能合约,以及分析合约的执行成本至关重要。

以太坊Memory是什么?

以太坊Memory可以看作是EVM在执行智能合约函数时的一块“工作台”或“草稿纸”,它是一个线性的字节数组,其大小在合约执行过程中可以动态扩展,与EVM的另外两个存储区域——存储(Storage)和.calldata(调用数据)——相比,Memory具有以下显著特性:

  1. 临时性(Volatile):Memory的生命周期仅限于当前合约调用,当合约执行结束(无论是成功返回还是异常终止),Memory中的所有数据都会被清空,不会被持久化保存。
  2. 线性结构:Memory被组织成一个从0地址开始的连续的字节数组,访问Memory中的数据需要指定起始位置和长度。
  3. 动态可扩展随机配图