Solidity
如何編寫契約為玩家設定獎勵並要求他們領取獎勵?
我想創建一個契約給玩家獎勵,他們要求他們的獎勵。
似乎一切正常!
// SPDX-License-Identifier: MIT pragma solidity ^0.8; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract Rewards is Ownable { IERC20 public rewardsToken; mapping(address => uint) public rewards; constructor(address _rewardsToken) { rewardsToken = IERC20(_rewardsToken); } function setReward(address account,uint256 amount) public onlyOwner { rewards[account] = amount; } function claimReward() public{ uint256 reward = rewards[msg.sender]; rewards[msg.sender] = 0; rewardsToken.transfer(msg.sender, reward*10**18); } }
但我不知道為什麼當我要求獎勵時沒有任何反應並且我有這個錯誤。
我有足夠的 ERC20 代幣
哦,男孩,我忘記將代幣發送到我的合約中!這就是為什麼它不起作用!
所以在我發送令牌後它工作正常