Solidity 数据类型与可见性简明笔记
在 Solidity 中,数据类型决定变量能表示什么业务含义,可见性决定这些变量和函数应该暴露给谁使用。写合约不仅是在写逻辑,也是在设计数据和接口边界。
1. uint 的常见用途
- 表示非负整数
- 常用于:金额、数量、计数等业务场景
2. address 的常见用途
- 表示链上地址
- 典型应用:用户地址、owner 地址、合约地址等
3. bool 适合的业务状态
- 用于表示是/否、开/关等状态
- 示例:paused(暂停)、claimed(已领取)
4. 为什么 string 不适合存储大量文本?
- 链上存储成本高
- 不建议像数据库一样随意存储大量文本数据
5. public 的直观含义
- 对外可访问 / 可调用
- 适用于需要开放给其他合约或用户的接口
6. private 的直观含义
- 仅限当前合约内部使用
- 用于保护内部逻辑和数据不被外部访问
7. external 的粗略理解
- 主要作为外部调用的函数入口
- 通常用于只允许外部合约或账户调用的函数
8. 为什么要区分数据类型和可见性?
- 数据类型决定数据表达方式
- 可见性决定访问边界和接口设计
- 两者共同影响合约的安全性与可维护性
合约示例:SimpleClaimConfig
pragma solidity ^0.8.20; contract SimpleClaimConfig { address public owner; uint256 public rewardAmount; bool public paused; string public campaignName;
constructor() {
owner = msg.sender;
rewardAmount = 100;
paused = false;
campaignName = "Spring Airdrop";
}
function setRewardAmount(uint256 newAmount) public {
rewardAmount = newAmount;
}
function pause() public {
paused = true;
}
function unpause() public {
paused = false;
}
function getCampaignName() public view returns (string memory) {
return campaignName;
}
}