solidity数据位置

    技术2022-07-12  73

    solidity数据位置

    solidity一般有三种类型,memory,storage,calldata,一般只有外部函数的参数(不包括返回参数)被强制指定为calldata,这种数据位置是只读的,不会持久化到区块链。

    memory与storage

    storage变量 永久存储在区块链中的变量,有点类似于全局变量是在在函数变量之外声明的变量,同时被称为状态变量;此变量默认为storage类型,将永久写入区块链能拿到的内容是引用/句柄/指针 memory变量 是临时的,当外部函数对合约调用完毕以后,memory变量就会被移除,类似于局部变量在函数内部声明的变量默认为memory类型,在函数调用结束后消失拿到的是一份拷贝

    总结

    强制指定的数据位置:

    外部函数的参数(不包括返回参数):calldata,效果与memory差不多状态变量:storage

    默认数据指定位置:

    函数参数(包括返回参数):memory所有其他局部变量的存储方式

    其他位置:

    映射只能存储在storage中数组/结构体可以被声明为storage/memory
    Processed: 0.018, SQL: 10