【问题标题】:Mint new ERC20 token from other smart contract从其他智能合约铸造新的 ERC20 代币
【发布时间】:2021-09-24 09:01:32
【问题描述】:

最近,我在开发具有 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);

【问题讨论】:

    标签: ethereum solidity smartcontracts erc20 openzeppelin


    【解决方案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);
      }
    

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2021-04-26
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多