智能合约 / 主题阅读

智能合约数据存储位置:Storage与Memory的生命周期差异

智能合约数据必须分配到存储或内存位置。存储变量永久保存在区块链上,而内存变量仅在函数执行期间存在,两者在生命周期和成本上存在显著差异。

展示数据存储架构的示意图,包含数据库、缓存和文件系统等存储层级结构。
主题资料配图,非新闻现场照片 · 配图:架构设计系列(五):数据存储

Storage与Memory的定义与生命周期

智能合约中的数据必须分配到存储或内存位置。存储变量代表持久数据,其值永久存储在区块链上,通常作为状态变量声明。内存变量仅在函数执行期间存在,函数执行结束后即被销毁,不占用区块链永久存储空间。

Storage与Memory的成本与使用场景

由于存储数据需要写入区块链,修改存储变量的成本极高。因此,开发者需要仔细考虑数据应存储在何处。内存变量因为不需要永久保存,使用成本远低于存储变量,适合临时计算或中间结果。

数据类型与声明规范

在Solidity中,存储变量通常声明为状态变量,如uint storedData。内存变量则需要在函数内部声明,例如string memory value。地址类型用于存储以太坊地址,占用20字节,并以0x前缀的十六进制表示。

资料与延伸阅读

你可以通过以下原始资料核对文中概念,并继续深入阅读。

  1. Anatomy of smart contracts | ethereum.org ↗
  2. 配图:架构设计系列(五):数据存储 ↗
← 更多智能合约文章返回顶部 ↑