1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| function createTokenPool( address token, // RWA 代币地址 address admin, // 池管理员 uint256 minLockDuration, // 最小锁仓期(秒) uint256 maxLockDuration // 最大锁仓期(秒) ) external onlyOwner { require(token != address(0), "Invalid token address"); require(admin != address(0), "Invalid admin address"); require(!tokenExists[token], "Token pool already exists"); require(supportedTokens.length < MAX_TOKENS, "Max tokens reached"); require(minLockDuration >= MIN_LOCK_DURATION, "Lock duration too short"); // >= 1 day require(maxLockDuration <= MAX_LOCK_DURATION, "Lock duration too long"); // <= 365 days require(minLockDuration <= maxLockDuration, "Invalid lock duration range");
tokenPools[token] = TokenPool({ admin: admin, totalDeposited: 0, totalRevenue: 0, revenuePerShare: 0, minLockDuration: minLockDuration, maxLockDuration: maxLockDuration, isActive: true, lastRevenueTime: block.timestamp });
supportedTokens.push(token); tokenExists[token] = true;
emit TokenPoolCreated(token, admin, minLockDuration, maxLockDuration); }
|