Я изучаю основательность на ремиксе. Я читал видео-уроки на 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);
}
}