I am new to Ethereium Block Chain and have been trying some code written in solidity as follows.
pragma solidity ^0.5.0;
import "./MyERC20Token.sol";
import "./ERC20Burnable.sol";
contract MyERC20TokenSale {
address payable admin;
MyERC20Token public tokenContract;
uint256 public tokenPrice;
uint256 public tokensSold;
event Sell(address _buyer, uint256 _amount);
constructor(MyERC20Token _tokenContract, uint256 _tokenPrice) public {
admin = msg.sender;
tokenContract = _tokenContract;
tokenPrice = _tokenPrice;
}
function multiply(uint x, uint y) internal pure returns (uint z) {
require(y == 0 || (z = x * y) / y == x);
}
function buyTokens(uint256 _numberOfTokens) public payable {
require(msg.value == multiply(_numberOfTokens, tokenPrice));
require(tokenContract.balanceOf(address(this)) >= _numberOfTokens);
require(tokenContract.transfer(msg.sender, _numberOfTokens));
tokensSold += _numberOfTokens;
emit Sell(msg.sender, _numberOfTokens);
}
function endSale() public {
require(msg.sender == admin);
require(tokenContract.transfer(admin, tokenContract.balanceOf(address(this))));
admin.transfer(address(this).balance);
}
}
I wish to return all the raised tokens to the admin and burn the unused tokens. But when I am doing endSale(), I am getting Error : invalid opcode.
It will be a really helping if someone can go through this code.