1. storage
合约中可以被所有函数访问的全局变量。storage的存储是永久存储,意味着以太坊会把它存到公链环境里的每一个节点上。
会永久保存合约状态变量,燃料消耗最大。
2. Memory
在合约中的内存变量,生命周期为合约开始到执行结束,执行结束后被销毁。
仅保存临时变量,函数调用之后释放,消耗燃料很少。
3. Calldata
所有函数调用的数据,包括函数参数的保存位置。是不可修改的内存位置。
它包含消息体的数据,其计算需要增加n * 68(n是calldata中的非零字节数)的gas费用
4. Stack
EVM为了导入变量和以太坊的机器/汇编指令代码,维护了一个栈,这个栈是EVM的内存工作空间。他有1024级深,也就是如果存储超过了1024级的数据,就会触发一个异常。
栈仅保存很小的局部变量,免费试用,数量限制在16个变量。
参考:以太坊solidity智能合约开发
来源:oschina
链接:https://my.oschina.net/u/4407242/blog/4692153