Solidity数据存储

存储位置特点用途成本
Storage永久存储用于保存合约的状态变量,这些变量会存储在区块链上较高的 Gas 费用,因为写入区块链是昂贵的操作
Memory临时存储用于函数内部的临时变量,数据在函数调用结束后被销毁相对较低
CallData只读临时存储

用于函数参数,它的数据不可修改。通常用于外部函数的参数,以节省 Gas

最便宜,因为它是只读的,不需要存储在区块链上
Stack临时存储用于处理临时值和执行操作,数据存储在 EVM 的栈中非常低,因为数据只在执行期间存在

实践中的使用

根据实际需求选择合适的数据存储位置是编写高效 Solidity 合约的关键。以下是一些实践中的建议:

  • 状态变量:使用 storage 存储永久性数据。
  • 函数内部临时变量:使用 memory 存储在函数内部使用的数据。
  • 外部函数参数:使用 calldata 存储传递给外部函数的只读数据。
  • 临时计算:使用栈来处理短期的计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值