Solidity——什么是状态变量

在以太坊(Ethereum)的智能合约中:


✅ 状态变量(State Variables)是指:

存储在区块链上的数据

它们的值保存在以太坊的永久存储(也叫 storage)中,而不是临时的内存(memory)或堆栈(stack)中。


📌 语法上怎么写状态变量?

在 Solidity 中,只要你在**合约作用域内(合约的最外层)**声明一个变量,它默认就是状态变量。

✅ 例如:
复制代码
pragma solidity ^0.8.0;

contract MyContract {
    uint public myNumber;  // 状态变量,写入链上 storage
}

这行 uint public myNumber; 就是一个状态变量。它的值将永久存储在链上,只要你部署了这个合约,myNumber 就存在于以太坊的存储中。


❌ 那下面这样的是不是状态变量?

复制代码
function foo() public {
    uint temp = 1;  // 局部变量,不是状态变量,只存在于内存
}

不是状态变量,这叫局部变量 ,仅存在于函数调用期间,不写入链上


总结判断标准:

变量位置 是否状态变量 是否写入链上状态
合约作用域定义 ✅ 是 ✅ 是
函数内部定义 ❌ 不是 ❌ 否(临时内存)

⚠️ 注意:

只有状态变量的写操作才会修改链上状态,读操作不会。

写操作:
复制代码
myNumber = 42;  // 修改了状态变量,写入链上
读操作:
复制代码
return myNumber;  // 只是读取,不改变链上状态

如果你需要,我可以讲解 memory、storage、calldata 的区别,以及它们在函数参数和局部变量中的使用方式。是否继续?

相关推荐
阿登林9 小时前
区块链技术在生产数据管理中的应用:Hyperledger Fabric与蚂蚁链智能合约设计
区块链·智能合约·fabric
Ashlee_code11 小时前
**新一代券商与机构专业交易系统开发:从国际金融变局到技术架构重构**
重构·架构·系统架构·区块链·私募·柜台·中资券商
CryptoRzz13 小时前
印度实时股票数据源接口对接文档-IPO新股、k线数据
java·开发语言·数据库·区块链
2501_9389639614 小时前
区块链跨链技术实践:使用 Polkadot 的 XCM 协议实现不同链间资产转移
区块链
Web3_Daisy17 小时前
从透明到可控:链上换仓与资产路径管理的下一阶段
人工智能·安全·web3·区块链·比特币
leijiwen19 小时前
信任的重构:S11e Protocol 如何以算法取代中介
重构·web3·区块链·生活·品牌·rwa
麻辣兔变形记1 天前
Solidity 中继承 vs external 拆分:合约大小与可升级性的权衡
人工智能·区块链·1024程序员节
LHminer 凡1 天前
阿瓦隆A16 282T:SHA-256算法矿机,282T算力与13.8J/T能效比
区块链·哈希算法·gpu算力
小树苗1932 天前
当流动性开始自我运转,Berachain 的故事才刚刚开始
区块链
2501_938780282 天前
NFT 版权保护技术:基于区块链的数字艺术品确权与二次交易追溯方案
区块链