以太坊智能合约存储变量的四种数据结构

北慕城南 提交于 2020-10-28 11:38:03

1. storage

合约中可以被所有函数访问的全局变量。storage的存储是永久存储,意味着以太坊会把它存到公链环境里的每一个节点上。

会永久保存合约状态变量,燃料消耗最大。

2. Memory

在合约中的内存变量,生命周期为合约开始到执行结束,执行结束后被销毁。

仅保存临时变量,函数调用之后释放,消耗燃料很少。

3. Calldata

所有函数调用的数据,包括函数参数的保存位置。是不可修改的内存位置。

它包含消息体的数据,其计算需要增加n * 68(n是calldata中的非零字节数)的gas费用

4. Stack

EVM为了导入变量和以太坊的机器/汇编指令代码,维护了一个栈,这个栈是EVM的内存工作空间。他有1024级深,也就是如果存储超过了1024级的数据,就会触发一个异常。

栈仅保存很小的局部变量,免费试用,数量限制在16个变量。

参考:以太坊solidity智能合约开发

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!