https://github.com/davidweb3-ctrl/token-bank-demo
https://github.com/davidweb3-ctrl/token-bank-demo
Last synced: 22 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/davidweb3-ctrl/token-bank-demo
- Owner: davidweb3-ctrl
- Created: 2025-09-28T22:27:32.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-10-01T13:54:58.000Z (9 months ago)
- Last Synced: 2025-10-01T15:20:09.933Z (9 months ago)
- Language: Solidity
- Size: 34.2 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Token Bank Demo
这是一个基于 Foundry 的以太坊智能合约项目,实现了 ERC20 代币合约和代币银行功能。
## 项目结构
```
├── src/
│ ├── BaseERC20.sol # ERC20 代币合约
│ └── TokenBank.sol # 代币银行合约
├── test/
│ └── TokenBank.t.sol # 测试文件
├── script/
│ └── Deploy.s.sol # 部署脚本
└── foundry.toml # Foundry 配置文件
```
## 合约功能
### BaseERC20 合约
实现了标准的 ERC20 代币功能:
- **代币信息**:
- 名称:BaseERC20
- 符号:BERC20
- 小数位:18
- 总供应量:100,000,000 tokens
- **核心功能**:
- `balanceOf(address)`: 查询账户余额
- `transfer(address, uint256)`: 转账功能
- `approve(address, uint256)`: 授权功能
- `allowance(address, address)`: 查询授权额度
- `transferFrom(address, address, uint256)`: 代理转账
### TokenBank 合约
提供代币存取银行功能:
- `deposit(uint256)`: 存入代币到银行
- `withdraw(uint256)`: 从银行提取代币
- `getDeposits(address)`: 查询用户存款余额
- `getTotalBalance()`: 查询银行总余额
## 安全特性
1. **转账限制**:
- 转账金额不能超过余额
- 代理转账不能超过授权额度
- 所有错误都有明确的错误信息
2. **存取安全**:
- 存款前需要先授权银行合约
- 提取金额不能超过存款余额
- 使用 `require` 进行参数验证
## 使用说明
### 编译合约
```bash
forge build
```
### 运行测试
```bash
forge test
```
### 部署合约
```bash
forge script script/Deploy.s.sol --broadcast
```
## 测试覆盖
测试文件包含了完整的功能测试:
- ERC20 基础功能测试
- 转账边界条件测试
- 授权和代理转账测试
- 银行存取功能测试
- 多用户场景测试
- 错误处理测试
## 技术栈
- **Solidity**: ^0.8.19
- **Foundry**: 开发框架
- **Forge**: 编译和测试工具
## 许可证
MIT License