第7天. Solidity 基础数据类型

4 阅读1分钟

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; 
} 

}