# 【Solidity 入门教学】一周搞定基础语法:每天 2 小时的实战学习指南
对于想入门区块链智能合约开发的同学,Solidity 是必须掌握的核心语言。今天给大家拆解一份 **“每天 2 小时、连续 6 天” 的 Solidity 基础语法学习计划 **—— 不仅讲知识点,更带大家一步步写代码,帮你从 “概念” 落地到 “实操”。
# 计划总览:用 6 天搭好 Solidity 基础框架
这张学习表是典型的 “从基础到整合” 的入门路径:先学变量、再学复杂数据结构、然后写函数、加逻辑控制、最后整合成完整合约。每天的 “学习内容” 是理论,“实操任务” 是落地,咱们逐个拆解。
# Day1:值类型变量 —— 智能合约的 “基础数据单元”
# 学习内容解读
Solidity 是强类型语言,变量必须先声明类型再使用。Day1 学的是 “值类型”(存储具体数值,而非引用地址),核心类型包括:
uint256:无符号整数(常用作金额、数量,比如代币数量)address:以太坊账户地址(相当于 “用户唯一 ID”)bool:布尔值(仅true/false,用于状态判断,比如 “账户是否激活”)string:字符串(存储文本,比如用户名)
# 实操任务教学(附代码)
目标:写一个存变量、赋值并打印的合约
新建合约文件
Variables.sol;写入代码(注意导入 Hardhat 的 console 工具):
1 | // SPDX-License-Identifier: MIT |
在 Remix 左侧的「SOLIDITY COMPILER」标签下:
- 确认编译器版本是
0.8.19左右(和代码里的pragma版本匹配); - 点击「Compile variables.sol」按钮,等待编译完成(如果没报错,按钮会变成绿色)。
# 步骤 3:部署合约
切换到左侧的「DEPLOY & RUN TRANSACTIONS」标签(小火箭图标):
- 「Environment」选择「Remix VM (London)」(Remix 的本地测试环境);
- 「CONTRACT」下拉框选择「Variables」;
- 点击「Deploy」按钮,等待部署完成。
# 步骤 4:测试变量
部署完成后,在「Deployed Contracts」区域会出现你的 Variables 合约:
- 点击
amount按钮:会显示100000000000000000000(这是 100 ether 对应的 wei 值); - 点击
userAddr按钮:会显示当前部署者的测试地址; - 点击
isActive按钮:会显示true。

完成这一步,你就搞定了 Day1 的实操任务
# Day2:引用类型 —— 管理复杂数据的 “容器”
# 学习内容解读
当需要存储 “一组相关数据”(比如用户的姓名、年龄、余额),或 “批量数据” 时,要用引用类型:
struct:自定义结构体(把多个字段打包成一个类型,比如User)mapping:键值对映射(类似字典,常用address → 结构体存用户数据)array:数组(存储多个同类型数据,比如 “所有用户的地址列表”)关键区分:
storage(合约的 “持久存储”,写在区块链上) vsmemory(函数的 “临时内存”,执行完就销毁)
# 实操任务教学(附代码)
目标:用 struct、mapping、array 存储用户数据
1 | // SPDX-License-Identifier: MIT |
# Day3:函数 —— 合约的 “功能操作入口”
# 学习内容解读
函数是合约的 “逻辑执行单元”,核心要掌握 3 点:
定义格式:
可见性 函数名(参数类型 参数名) returns(返回类型)返回值:
return(返回具体值)/returns(声明返回类型)可见性(控制谁能调用函数):
public:合约内外都能调用external:仅外部(比如其他合约、前端)能调用internal:仅当前合约 / 继承合约能调用private:仅当前合约能调用
# 实操任务教学(附代码)
目标:写 “查询用户” 和 “添加用户” 函数
1 | // 接上面UserData合约的代码 |
view 是 Solidity 中函数的只读修饰符 —— 给函数加了 view,就意味着这个函数只能读取合约的状态变量,不能修改任何区块链上的数据(比如不能改状态变量的值、不能触发事件、不能转账等)。
- 为什么要用 view?
节省 gas 费:区块链上 “读取数据” 不需要消耗 gas(因为不用写入区块),而 “修改数据” 需要消耗 gas(要记录到区块中)。加了 view 的函数,调用时不会产生 gas 费用(仅外部调用时,合约内部调用不影响)。
明确函数用途:告诉开发者 / 编译器,这个函数是 “查询用” 的,不会改变合约状态,避免误操作。
测试可见性:比如把 addUser 改成 private ,部署后外部调用会直接报错。
# Day4:控制流 + 修饰符 —— 让合约 “有逻辑、有权限”
# 学习内容解读
控制流:用
if-else做条件判断、for做循环(比如遍历数组)修饰符(
modifier):代码复用 + 权限控制的工具(比如onlyOwner仅让合约部署者调用函数)
# 实操任务教学(附代码)
目标:写 “转账函数”+“仅 owner 可用” 的修饰符
1 | // 接上面UserData合约的代码 |
onlyOwner修饰符加在函数后,调用函数前会先执行修饰符的逻辑。
# Day5:合约结构 + 事件 —— 让合约 “可监控”
# 学习内容解读
合约的核心组成:
状态变量:定义在合约内、函数外的变量(存在区块链上,持久存储)
局部变量:定义在函数内的变量(存在 memory,临时存储)
事件(
Event):合约 “状态变化的通知”—— 前端可以监听事件,实时获取合约数据(比如 “新用户添加了”)
# 实操任务教学(附代码)
目标:给 “添加用户” 函数加事件
1 | // 接上面UserData合约的代码 |
- 前端监听:比如用 Ethers.js 监听
UserAdded事件,就能实时收到新用户的地址和姓名。
# Day6:语法复盘 —— 写一个完整的 “用户管理合约”
# 学习内容解读
把前 5 天的知识点整合:写一个包含 “添加用户、查询信息、修改年龄(仅 owner)” 的完整合约,然后在 Remix(在线 Solidity 编译器)中验证。
# 实操任务教学(完整代码)
1 | // SPDX-License-Identifier: MIT |
- Remix 编译步骤:打开 Remix 官网 → 新建文件粘贴代码 → 选对应 Solidity 版本 → 点 “Compile” → 无报错即成功。
# 写在最后:这一周能收获什么?
跟着这个计划学完,你已经掌握了 Solidity 的核心基础:从变量、函数到合约结构,从逻辑控制到权限管理,甚至能写一个简单的 “用户管理合约”。