Solidity

如何編寫契約為玩家設定獎勵並要求他們領取獎勵?

  • January 25, 2022

我想創建一個契約給玩家獎勵,他們要求他們的獎勵。

似乎一切正常!

// 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 代幣

在此處輸入圖像描述

哦,男孩,我忘記將代幣發送到我的合約中!這就是為什麼它不起作用!

在此處輸入圖像描述

所以在我發送令牌後它工作正常

在此處輸入圖像描述

引用自:https://ethereum.stackexchange.com/questions/119707