全局变量

全局变量是对于一个contract而言的,其值的生命周期会从合约创建一直到被销毁,即每次交易时不会重置,而是通过该合约实例的Storage储存区持久化。

可见性

  1. private:设计为在solidity层面不可被其他合约读取,但由于区块链内容实际上是完全公开透明的,在外部可以通过web3.js获取到变量内容。
  2. internal:默认的可见性,在继承概念上可被派生合约读取,安全性同上。
  3. public:对所有合约可见,而且实际上solidity会自动创建一个可被外部调用的同名函数,返回该函数的值。

关于各种类型的全局变量的实际内存布局,可以参考Storage


局部变量

首先

局部变量在栈上,通常

https://docs.soliditylang.org/en/v0.4.24/frequently-asked-questions.html#what-is-the-memory-keyword-what-does-it-do