【Solidity学习】合约基本结构与状态变量

合约基本结构与状态变量

题目名称:简单数值存储合约(StorageBasic)
练习目标
  1. 掌握Solidity合约的基本文件结构和声明规范
  2. 学会定义不同访问权限的状态变量
  3. 理解public修饰符会自动生成getter函数的特性
  4. 熟悉Remix中合约的部署与状态变量的查看操作
核心知识点
  • SPDX许可证声明、pragma版本声明的作用
  • 合约的定义语法(contract关键字)
  • 状态变量的类型(以uint256为例)与访问权限修饰符(public/private/internal)
  • public状态变量的自动getter函数机制
功能要求

请编写一个Solidity合约(适配^0.8.20版本),实现以下功能:

  1. 声明必要的许可证和版本信息(许可证使用MIT)。
  2. 定义3个状态变量:
    • 一个public 的uint256类型变量publicNumber(用于存储公开的数值);
    • 一个private 的uint256类型变量privateNumber(用于存储私有数值);
    • 一个internal 的string类型变量internalMessage(用于存储内部消息,内容初始化为"Hello Solidity")。
  3. 不需要编写任何自定义函数,仅通过状态变量的修饰符实现基础的访问功能。
额外要求

在代码中添加清晰的注释,说明每个状态变量的作用和访问权限。


根据上述要求在Remix中编写代码:

solidity 复制代码
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

contract StorageBasic {

    //一个public的 uint256 类型变量publicNumber(用于存储公开的数值);
    uint256 public publicNumber;
    
    //一个private的 uint256 类型变量privateNumber(用于存储私有数值);
    uint256 private privateNumber;
    
    //一个internal的 string 类型变量internalMessage(用于存储内部消息,内容初始化为 "Hello Solidity")。
    string internal internalMessage = "Hello Solidity";
}

知识点补充

  1. 关于publicNumber能被查看 :

    除了public的可见性范围(外部、自身、子合约),更关键的是**public修饰符会让Solidity自动生成一个同名的view类型getter函数**(比如function publicNumber() public view returns (uint256)),这也是你能在Remix界面直接点击查看的原因。

  2. 关于privateNumber看不到 :

    即使在Remix中,外部也无法直接访问private变量,甚至连合约的子合约也不能访问。注意:private的不可见是逻辑层面的,因为以太坊区块链是公开的,数据本身仍存储在链上,只是无法通过合约接口直接读取。

  3. 关于internalMessage看不到 :

    外部账户/合约无法直接访问,只有当前合约内部的函数,或者继承它的子合约能访问,所以Remix界面也没有直接查看的入口。

相关推荐
Nuanyt2 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
叼烟扛炮3 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
叼烟扛炮3 小时前
Linux 学习笔记(四十四):HTTP 协议解析与极简 Web 服务器实战
linux·服务器·学习
songyuc4 小时前
【Manskill3】TableSceneBuilder学习笔记
pytorch·笔记·学习
代码方舟4 小时前
零信任架构实战:基于天远企业法人四要素高级版构建自动化电子印章授权与签约准入网关
人工智能·架构·自动化·区块链
外收内放4 小时前
Python基础语法练习题(75)
开发语言·python·学习
kyrie_sakura6 小时前
大模型学习20 大模型学习 - LangChain3 - Agents
人工智能·学习·langchain
zroooo6 小时前
计算机学习-知识庞大而繁杂
笔记·学习
坤坤子吖7 小时前
算法学习——单调队列
开发语言·c++·笔记·学习·算法
乌暮8 小时前
请求进门先安检:Spring 拦截器与统一功能实战指南
java·开发语言·后端·学习·spring