ошибка транзакции солидности, вызываемая функция должна оплачиваться, если вы отправляете значение, а значение, которое вы отправляете, должно быть меньше текущего баланса - PullRequest
0 голосов
/ 23 апреля 2020

Я изучаю основательность на ремиксе. Я читал видео-уроки на YouTube и застрял, пытаясь построить 2 контракта. Контракт ERC20Token имеет функцию, которая увеличивает остатки. И Mycontract создает экземпляры и вызывает функцию mint. Я сделал это так же, как парень на YouTube, но я столкнулся с ошибкой, говоря, когда я вызываю функцию buyToken. Ошибка говорит

транзакция к MyContract.buyToken с ошибкой: ошибка виртуальной машины: вернуться.

revert Транзакция была возвращена в исходное состояние.

Примечание: Вызванная функция должна быть платной, если вы отправляете значение, а значение, которое вы отправляете, должно быть меньше вашего текущего баланса. Отладка транзакции для получения дополнительной информации.

Пожалуйста, помогите мне.

Вот код.

pragma solidity 0.5.1;

contract ERC20Token{
   string public name;
   mapping(address => uint256) public balances;

   function mint() public {
       balances[tx.origin] ++;
  }
}

contract MyContract {
   address payable wallet;
   address public token;


   constructor(address payable _wallet, address _token) public {
    wallet = _wallet;
    token = _token;
}



   function buyToken() public payable {
       ERC20Token _token = ERC20Token(address(token)); 
       _token.mint();
       wallet.transfer(msg.value);

      }
  }

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...