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 的区别,以及它们在函数参数和局部变量中的使用方式。是否继续?

相关推荐
磐链科技11 小时前
IM社交钱包开发成本是多少?影响项目报价、功能配置与开发周期的关键因素分析
区块链·智能合约
IvorySQL11 小时前
PostgreSQL 日报| PostgreSQL JDBC 安全更新(10 月 10 日)
数据库·postgresql·区块链
新新学长搞科研1 天前
【会议征稿】第三届数字经济与计算机科学国际学术会议(DECS 2026)
区块链·计算机科学·数字经济
梦帮科技1 天前
【3.0】上线与运维:节点监控、水龙头、区块浏览器与安全清单
运维·安全·web安全·金融·区块链·密码学·安全架构
kjmkq1 天前
区块链项目出海宣发,依托全球Web3垂直媒体快速建立行业背书
web3·区块链·媒体
梦帮科技2 天前
【3.0修订版】跨链中继与事件编排:Relayer 监听、多签验证与故障自愈
web安全·金融·区块链·密码学·智能合约·安全架构·信任链
ZDGJ60992 天前
如何判断国际期货交易品种的流动性
区块链
梦帮科技2 天前
【3.0修订版】钱包与安全:Web4 智能钱包、硬件隔离与后量子密码实践
安全·去中心化·区块链·智能合约·同态加密·共识算法·信任链