Erc-20

ERC20 Mint 函式返回“未擷取(承諾中)錯誤:交易已被 EVM 還原”

  • August 27, 2021

我想在使用者執行操作時允許外部應用程序鑄造令牌。我有一個單獨的合約,它為 ERC20 代幣呼叫“mintTo”函式。這是代幣合約。

contract myToken is ERC20Mintable {

   constructor() public {
   
      symbol = "MYT";
      name = "My Token";
      decimals = 18;
      _totalSupply = 50*10**18;  //initial supply of 50 tokens
      balances[msg.sender] = _totalSupply;
      emit Transfer(address(0), msg.sender, _totalSupply);
    }

    /* Mint function from ERC20Mintable */
   function mintTo(address _to, uint _amount) public 
   {
      _totalSupply = safeAdd(_totalSupply, _amount);
      balances[_to] = safeAdd(balances[_to], _amount);

      emit Mint(msg.sender, _to, _amount);
 }
}

這是“鑄幣廠”契約。

contract Minter {
   
myToken token;

function mintToken() private {
   address addr = msg.sender;
   
   uint _reward = 100 * (10**18);
   
   token.mintTo(addr, _reward);
 }
}

為了確保它不是 web3 應用程序,我在 Remix 上測試了“mintToken”函式呼叫並得到以下錯誤:

氣體估計錯誤並顯示以下消息(見下文)。事務執行可能會失敗。

我嘗試了幾種不同的方法,但一直碰到同一堵牆。任何指導將不勝感激!

function mintToken() private private意味著該函式只能從合約本身中呼叫,嘗試將其更改為publicorexternal並且它應該可以工作

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