【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界面也没有直接查看的入口。

相关推荐
Richown5 分钟前
边缘计算:CDN与边缘函数实战
区块链·react
爱喝水的鱼丶14 分钟前
SAP-ABAP:数据类型与数据对象(8篇) 第七篇:进阶优化篇——基于类型与对象特征的性能优化技巧
运维·数据库·学习·性能优化·sap·abap·开发交流
Richown16 分钟前
云原生存储:对象存储与分布式文件系统
区块链·react
知识分享小能手26 分钟前
Flask入门学习教程,从入门到精通, 认识Flask路由 — 知识点详解 (2)
python·学习·flask
清平乐的技术专栏31 分钟前
【Flink学习】(六)Flink 三大时间语义 + 水位线 Watermark
大数据·学习·flink
楼兰公子39 分钟前
《深入理解Linux网络技术内幕》配套学习大纲 + 源码Demo + 进阶实战实例
linux·arm开发·学习
楼田莉子39 分钟前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习
AI算法沐枫1 小时前
大一学生如何入门机器学习,深度学习,学习顺序如何?
人工智能·python·深度学习·学习·线性代数·算法·机器学习
他们叫我阿冠1 小时前
实习前自我培训-Day2学习
学习
wuxinyan1231 小时前
工业级大模型学习之路020:LangChain零基础入门教程(第三篇):提示词工程与提示模板系统
人工智能·python·学习·langchain