2

最近,我在开发具有 Staking 功能的智能合约时遇到了一个问题。通过 IERC20 接口,我设法与另一个合约中的 Erc20 代币进行交互,但仍然存在一个困惑。我正在开发一个智能合约,用户可以在智能合约中质押我的代币(代币已经部署在网络中),当质押期限结束时,利益相关者可以获得他们的质押金额以及奖励代币。对于奖励代币,我想铸造新代币,以在我的智能合约中向利益相关者提供奖励。如何在另一个智能合约中使用 mint 功能?我想在我的 Staking 智能合约中使用 Erc20 mint 功能。等待您的积极回应。

IERC20 private _token;
constructor(IERC20 token) {
    _mytoken = token;

  }

转移和批准工作正常,但在 IERC20 中没有薄荷选项

 _mytoken.approve(address(this),quantity);
 _mytoken.safeTransferFrom(msg.sender,address(this),quantity);
4

1 回答 1

1

IERC20 不包含_mint,但 ERC20 包含,因此您从 ERC20 继承

contract RewardToken is ERC20 {
    constructor() public ERC20("Reward Token","RWD"){
        // give initial supply 1million + 18 zeros
        _mint(msg.sender,1000000000000000000000000);
    }

您的 RewardToken 具有 _mint 功能,它仍然可以从 IERC20 继承。但是您的构造函数中有一个初始化错误:

constructor(IERC20 token) {
    // you have to initialize with IERC20
    _mytoken = IERC20(token);
  }
于 2022-02-07T12:03:41.333 回答