pragma solidity ^0.5.0; import "@openzeppelin/contracts/math/SafeMath.sol"; import "./Ktoken.sol"; contract KErc20 is KToken { using SafeMath for uint256; constructor (address tokenAddress, address invokerAddress, string memory name, string memory symbol, uint8 decimals) public KToken(tokenAddress, invokerAddress, name, symbol, decimals) { } function mint(uint256 tokenAmount) external returns (bool) { IERC20 token = IERC20(_tokenAddress); require(token.transferFrom(msg.sender, address(this), tokenAmount), "KErc20: token transferFrom failed"); return mintInternal(tokenAmount); } function isKEther() public view returns (bool) { return false; } function totalReserve() public view returns (uint256) { return IERC20(_tokenAddress).balanceOf(address(this)); } function transferUnderlyingInternal(address to, uint256 amount) internal returns (bool) { return IERC20(_tokenAddress).transfer(to, amount); } }