Solidity中,变量类型有:
因为这些类型涉及到的数据量比较大,复制他们可能会消耗大量的Gas费,所以要考虑清楚他们的存储位置。
在合约中声明和使用的变量都有一个数据位置,指明变量值应该存储在哪里。合约变量的数据位置将会影响Gas消耗量。
存储区(storage)存储永久数据,可以被合约中的所有函数访问,以合约的状态存储,并在函数调用之间保持持久性。成本较高
内存位置是临时数据,比storage便宜,只能再函数中访问
不可修改的非持久性数据位置,所有传递给函数的值,都存储在这里。此外,Calldata是外部函数的参数(而不是返回参数)的默认位置。
堆栈是由EVM (Ethereum虚拟机)维护的非持久性数据。EVM使用堆栈数据位置在执行期间加载变量
本文作者:硝基苯
本文链接:https://www.c6sec.com/index.php/archives/838/
最后修改时间:2023-06-02 17:09:59
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!