mellowmellow23/remitx-token
GitHub: mellowmellow23/remitx-token
一个采用 EIP-2612 与硬编码供应上限的跨境汇款奖励代币合约,结合 Foundry 的属性模糊测试以保障安全并降低全球汇费。
Stars: 1 | Forks: 0
# RemitX 代币 (RMX)




跨境支付的全球汇款费用对发展中国家汇款个人造成了沉重负担,
不成比例地影响了他们。传统金融渠道缺乏透明、自动化的机制来奖励忠实用户或抵消
这些高昂的运营成本。
RemitX 代币 (RMX) 是一个符合 EIP-20 的奖励代币,旨在通过以下方式解决此问题:
- **免 Gas 授权:** 利用 EIP-2612 `permit` 签名,允许用户在不持有原生 ETH 用于支付授权 Gas 的情况下与 DeFi 协议交互。
- **经济稀缺性:** 硬编码的 `MAX_SUPPLY` 为 5000 万个代币,确保可预测的代币经济学并防止协议所有者任意增发。
- **链上兑换:** 原生的 `redeemForDiscount` 燃烧机制,允许用户通过销毁代币来换取汇款费用减免,并发出可索引的链上事件。
## 合约架构
| 父合约 | 角色 |
|---|---|
| `ERC20` | 基础可替代代币 — 转账、余额、授权 (EIP-20) |
| `ERC20Burnable` | 允许代币持有者销毁自己的代币,减少总供应量 |
| `ERC20Permit` | 通过链下签名添加 EIP-2612 免 Gas 授权 |
| `Ownable` | 仅限制受信任的平台转账代理进行铸造 |
## 安全与测试
使用 Foundry 进行测试优先开发。该套件涵盖 18 个测试,涵盖单元测试、
边界情况、漏洞模拟和基于属性的模糊测试类别。
| 类别 | 数量 | 证明内容 |
|---|---|---|
| 单元测试 | 14 | 已知输入的正确行为 |
| 模糊测试 | 4 | 每个随机输入 256 次的不变量成立 |
| **总计** | **18** | **18 / 18 通过** |
**测试的关键安全属性:**
- 通过 256 次以上随机铸造金额模糊测试,确保 `MAX_SUPPLY` 上限被强制执行
- `permit()` 上的签名重放攻击 — 过期的随机数返回 `ERC2612InvalidSigner`
- 过期的授权截止时间 — 回滚并返回 `ERC2612ExpiredSignature`
- `renounceOwnership()` 永久禁用 — 不会意外破坏铸造功能
- 所有状态变更函数对零地址和零金额的保护
请参阅 [`TEST_REPORT.md`](./TEST_REPORT.md) 获取完整的覆盖范围图和 Gas 分解。
## EIP 引用
- [EIP-20: 代币标准](https://eips.ethereum.org/EIPS/eip-20)
- [EIP-2612: ERC-20 签名的 Permit 扩展](https://eips.ethereum.org/EIPS/eip-2612)
- [EIP-165: 接口检测](https://eips.ethereum.org/EIPS/eip-165)
## 实时部署
| | |
|---|---|
| 网络 | Sepolia 测试网 |
| 合约地址 | `0x04704a2d38378Cc084AF2604d7211C531b71163b` |
| 验证源码 | [在 Etherscan 上查看](https://sepolia.etherscan.io/address/0x04704a2d38378Cc084AF2604d7211C531b71163b) |
## 您可以在此基础上构建
此合约是一个生产就绪的基础层。客户端在上面集成的示例包括:
- 一个 **Node.js / Express 后端**,监听 Wise 或 Stripe 的 Webhook 确认汇款转账,然后调用 `mint()` 自动奖励发送者 RMX。
- 一个 **React 仪表板**(参见任务 10 — RemitX 门户),用户可以连接钱包、查看 RMX 余额,并调用 `redeemForDiscount()` 来申领下次转账的费用减免。
- 一个 **The Graph 上的子图**,索引 `DiscountRedeemed` 事件,以便平台可以离线显示用户的完整兑换历史。
## 如何本地运行
**先决条件:** 通过 WSL2 在 Windows 上安装 Foundry,或在 macOS / Linux 上原生安装。
请参阅 [Foundry 文档](https://book.getfoundry.sh/getting-started/installation)。
```
# 克隆仓库
git clone https://github.com/mellowmellow23/remitx-token.git
cd remitx-token
# 安装依赖
forge install
# 运行完整测试套件
forge test -v
# 仅运行模糊测试
forge test --match-test Fuzz -v
# 检查燃气快照
forge snapshot
# 生成燃气报告
forge test --gas-report
```
预期输出:
标签:Burnable, DeFi, EIP-20, EIP-2612, emit event, ERC20Burnable, Foundry, Fuzz tests, gasless, gasless approvals, MAX_SUPPLY, On-chain redemption, Ownable, property-based fuzzing, RemitX, RMX, Solidity, TDD, 代币, 供应上限, 单元测试, 可索引事件, 奖励代币, 安全测试, 属性测试, 攻击性安全, 智能合约, 权限控制, 测试驱动, 硬上限, 赎回机制, 跨境支付, 跨境汇款