| pragma solidity ^0.8.0; | |
| import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; | |
| contract RewardSystem { | |
| IERC20 public immutable token; | |
| mapping(address => uint256) public rewards; | |
| constructor(address _token) { | |
| token = IERC20(_token); | |
| } | |
| function addReward(address user, uint256 amount) external { | |
| rewards[user] += amount; | |
| } | |
| function claimReward() external { | |
| uint256 amount = rewards[msg.sender]; | |
| require(amount > 0, "No rewards to claim"); | |
| rewards[msg.sender] = 0; | |
| require(token.transfer(msg.sender, amount), "Transfer failed"); | |
| } | |
| } |