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