I would like to do a function create contract with ERC-20 interface. But I have a few problems.
If anyone help me I’ll be appreciated.
Here’s the code :
pragma solidity ^0.5.0; import 'https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol'; /* library SafeMath { function add(uint a, uint b) internal pure returns (uint c) { c = a + b; require(c >= a); } function sub(uint a, uint b) internal pure returns (uint c) { require(b <= a); c = a - b; } function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b); } function div(uint a, uint b) internal pure returns (uint c) { require(b > 0); c = a / b; } } */ contract SubToken{ function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); //function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success) ; function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } contract MainContrat is SubToken { mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowed; mapping(address => address[]) public created; mapping(address => SubToken) public tokenlist; address[] public contracts; address owner = msg.sender; using SafeMath for uint; string public symbol; string public name; uint8 public decimals; uint _totalSupply; constructor(string memory _name,string memory _symbol,uint8 _decimals,uint256 _totalSupply) public{ name = _name; symbol = _symbol; decimals=_decimals; balances[msg.sender]=_totalSupply; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { emit Transfer(_from, _to, _value); return true; } /* function createNew(string memory _name,string memory _symbol,uint8 _decimals,uint256 _totalSupply) public returns(address newToken){ SubToken newSubToken = (new SubToken(_name,_symbol,_decimals,_totalSupply)); created[msg.sender].push(address(newSubToken)); newSubToken.transfer(msg.sender, _totalSupply); return address(newSubToken); } */ /* function createNewContract() public returns(address){ SubToken st = new SubToken(); contracts.push(st); address(st); } */ event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } contract factory{ address[] public contracts; mapping(address => address[]) public created; function createNewContract(string memory _name,string memory _symbol,uint8 _decimals,uint256 _totalSupply) public returns(address){ MainContrat st = new MainContrat(_name,_symbol,_decimals,_totalSupply); contracts.push(address(st)); return address(st); } } I have errors at my createContract functions. Errors is :
TypeError: Trying to create an instance of an abstract contract. SubToken st = new SubToken(); ^----------^ browser/crtcont2.sol:29:5: Missing implementation: function approve(address spender, uint tokens) public returns (bool success); ^---------------------------------------------------------------------------^ browser/crtcont2.sol:26:5: Missing implementation: function balanceOf(address tokenOwner) public view returns (uint balance); ^------------------------------------------------------------------------^ browser/crtcont2.sol:25:5: Missing implementation: function totalSupply() public view returns (uint); ^------------------------------------------------^ browser/crtcont2.sol:28:5: Missing implementation: function transfer(address to, uint tokens) public returns (bool success); ^-----------------------------------------------------------------------^ browser/crtcont2.sol:30:5: Missing implementation: function transferFrom(address from, address to, uint tokens) public returns (bool success); ^-----------------------------------------------------------------------------------------^