对智能合约里的storage 和 memory两个关键字的理解

本文探讨了智能合约在Solidity中如何存储数据,区分了storage和memory两种存储方式。storage作为成员变量,其数据持久存在于区块链账本中,可在函数间调用;而memory用于存储临时数据,仅在当前函数作用域内有效。实验分析展示了storage的引用传递和memory的值传递特性,强调了两者的使用场景和区别。
摘要由CSDN通过智能技术生成

它们的概念可以分为两种:

  1. 智能合约是怎么样存储数据的, 在memory里还是storage里存储

  2. solidity变量怎么样存储数据的, 在memory里还是storage里

智能合约的数据存储:

  • 以下面这段代码为例:
pragma solidity^0.4.17;

contract Funding{

    Request[] public requests;
    
    //请求的结构体struct
    struct Request{
        string name;
    }

    //内容返回到request[]数组中
    function createRequest(string _name) public{
        Request memory request = Request({
            name:_name     
        });
        requests.push(request);
    }

 Request[] public requests;  这个数组包含的内容就存到了storage里,也就是直接写到了所有的区块链账本里了

  • storage : 它是成员变量. 能够跨函数调用(比如说在A函数里一个有requests,那就可以在B函数中把它取出来)
  • memory: 是临时数据的存储, 它只能在当前的函数生效, 比如说在矿工挖矿的函数里有一个临时变量, 在矿工电脑上完成了计算, 挖矿成功后变量就消失了, 别的函数是拿不到这个临时变量的. 函数的参数可以理解为memory类型

solidity变量的数据存储

实验一:

pragma solidity^0.4.17;

contract test{
    uint[] 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值