所有合约基于 OpenZeppelin 安全库开发,经过严格审计
使用 ReentrancyGuard 防止重入攻击,保护用户资产
所有智能合约代码公开透明,任何人可以审查
Pausable 功能允许在发现漏洞时紧急暂停合约
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
/**
* @title GMT Game Pool
* @dev 游戏池合约 - 管理宝箱开启、奖励分发、跑步结算
* @notice 游戏池资金来源:
* 1. 用户使用 BNB 开启宝箱
* 2. GMT 代币买卖税收
* 3. 游戏内消费(升级、修复)
* DEV 不预留任何代币,游戏池完全由用户行为驱动
*/
contract GMT_GamePool is Ownable, ReentrancyGuard, Pausable {
IERC20 public gmtToken;
// 宝箱价格: 0.05 BNB
uint256 public mysteryBoxPriceBNB = 0.05 ether;
// 稀有度掉落概率 (基于1000)
// 普通: 60%, 稀有: 25%, 史诗: 12%, 传说: 3%
uint16 public constant COMMON_RATE = 600;
uint16 public constant RARE_RATE = 250;
uint16 public constant EPIC_RATE = 120;
uint16 public constant LEGENDARY_RATE = 30;
// 累计统计
uint256 public totalDistanceRun;
uint256 public totalRewardsDistributed;
uint256 public totalBoxesOpened;
event MysteryBoxOpened(address indexed user, uint256 indexed tokenId);
event RunCompleted(address indexed user, uint256 distance, uint256 earnings);
// ... 完整代码请查看 GitHub
}