目录
-
- [1. 项目概述](#1. 项目概述)
- [2. 初始合约代码](#2. 初始合约代码)
- [3. 合约功能完善](#3. 合约功能完善)
-
- [3.1 增加显式存款函数](#3.1 增加显式存款函数)
- [3.2 重新部署合约](#3.2 重新部署合约)
- [4. 环境准备与部署](#4. 环境准备与部署)
-
- [4.1 配置 Remix 和 MetaMask](#4.1 配置 Remix 和 MetaMask)
- [5. 合约部署实战](#5. 合约部署实战)
-
- [5.1 部署过程](#5.1 部署过程)
- [5.2 部署成功确认](#5.2 部署成功确认)
- [5.3 合约地址与验证](#5.3 合约地址与验证)
- [6. 合约测试与验证](#6. 合约测试与验证)
-
- [6.1 钱包余额测试](#6.1 钱包余额测试)
- [6.2 Remix 存款操作](#6.2 Remix 存款操作)
- [6.3 MetaMask 直接发送](#6.3 MetaMask 直接发送)
- [6.4 提取功能测试](#6.4 提取功能测试)
- [6.5 合约信息查看](#6.5 合约信息查看)
- [7. 总结与资源](#7. 总结与资源)
-
- [7.1 项目总结](#7.1 项目总结)
- [7.2 学习资源](#7.2 学习资源)
- [7.3 下一步建议](#7.3 下一步建议)
1. 项目概述
本文将带领大家从零开始,使用 Solidity 语言开发一个简单的 PiggyBank(存钱罐)智能合约。通过这个实战项目,你将学习到:
- Solidity 智能合约的基本结构
- 状态变量、事件、函数的定义与使用
- 合约部署到 Sepolia 测试网络的完整流程
- 使用 Remix IDE 和 MetaMask 进行合约交互
- 合约功能的测试与验证
2. 初始合约代码
首先,我们创建一个基础的 PiggyBank 合约,包含以下核心功能:
solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract PiggyBank {
// 状态变量:记录存钱罐的主人
address public immutable owner;
// 事件:记录存款和取款操作
event 存款(address indexed sender, uint amount);
event Withdraw(uint amount);
// 构造函数:初始化时设置合约部署者为主人
constructor() {
owner = msg.sender;
}
// 存款函数:允许任何人发送ETH存入存钱罐
receive() external payable {
emit Deposit(msg.sender, msg.value);
}
// 提现函数:只允许主人将存钱罐里的所有ETH取出并销毁合约
function withdraw() external {
require(msg.sender == owner, "Only the owner can withdraw");
emit Withdraw(address(this).balance);
selfdestruct(payable(owner));
}
// 查看余额函数:允许任何人查看当前存钱罐的总额
function getBalance() external view returns (uint) {
return address(this).balance;
}
}

3. 合约功能完善
3.1 增加显式存款函数
为了让 Remix IDE 界面生成更友好的交互按钮,我们增加一个显式的存款函数:
solidity
// 增加了一个显式的存款函数,会在 Remix 界面生成一个漂亮的橙色按钮
function deposit() external payable {
require(msg.value > 0, "Must send some ETH");
emit Deposit(msg.sender, msg.value);
}
3.2 重新部署合约
添加新功能后,需要重新编译并部署合约:

4. 环境准备与部署
4.1 配置 Remix 和 MetaMask
- 选择测试网络:在 Remix 中配置 MetaMask,选择 Sepolia 测试网络

- 连接钱包:成功连接到 MetaMask 钱包地址

5. 合约部署实战
5.1 部署过程
部署合约到 Sepolia 测试网络:


备注:可以到https://zan.top/faucet/ethereum 领取免费的SepoliaETH
5.2 部署成功确认

5.3 合约地址与验证
合约地址 :0xbb2a85522909c9161Ed5615E32cecAFeE8277770
6. 合约测试与验证
6.1 钱包余额测试
首先检查钱包余额,确保有足够的测试 ETH:

6.2 Remix 存款操作
通过 Remix IDE 向合约存款:

6.3 MetaMask 直接发送
也可以通过 MetaMask 直接向合约地址发送 ETH:

6.4 提取功能测试
合约所有者可以提取所有资金并销毁合约:

6.5 合约信息查看
https://testnet.routescan.io/address/0xbb2a85522909c9161Ed5615E32cecAFeE8277770

7. 总结与资源
7.1 项目总结
通过本实战项目,我们完成了:
- ✅ 编写了一个完整的 PiggyBank 智能合约
- ✅ 实现了存款、提现、查询余额等核心功能
- ✅ 使用 Remix IDE 进行合约开发和测试
- ✅ 部署到 Sepolia 测试网络
- ✅ 通过多种方式测试合约功能
7.2 学习资源
- Solidity 官方文档:https://docs.soliditylang.org/
- Remix IDE:https://remix.ethereum.org/
- MetaMask 钱包:https://metamask.io/
- Sepolia 测试网水龙头:获取测试 ETH
- Etherscan/Routescan:合约验证和查询
7.3 下一步建议
- 功能扩展:添加存款记录、设置提现限额、多签提现等功能
- 前端集成:使用 Web3.js 或 Ethers.js 开发前端 DApp
- 安全审计:学习智能合约安全最佳实践
- 主网部署:在充分测试后部署到以太坊主网
提示:本文所有操作均在 Sepolia 测试网络进行,请勿在主网使用真实 ETH 进行测试。开发过程中请确保理解每行代码的含义,智能合约一旦部署将无法修改。