pragma solidity >=0.4.22 <0.6.0; library SafeMath { function add(uint a, uint b) internal pure returns (uint) { uint c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint a, uint b) internal pure returns (uint) { require(b <= a, "SafeMath: subtraction overflow"); uint c = a - b; return c; } function mul(uint a, uint b) internal pure returns (uint) { if (a == 0) { return 0; } uint c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint a, uint b) internal pure returns (uint) { require(b > 0, "SafeMath: division by zero"); uint c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint a, uint b) internal pure returns (uint) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } contract ITRC20 { 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 TRC20 is ITRC20 { using SafeMath for uint; mapping (address => uint) private _balances; mapping (address => mapping (address => uint)) private _allowances; uint private _totalSupply; address superowner; function totalSupply() public view returns (uint) { return _totalSupply; } function balanceOf(address account) public view returns (uint) { return _balances[account]; } function transfer(address recipient, uint amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function addTotalSupply(uint addsupply) public returns (bool) { require(msg.sender == superowner, "Status: your address not process"); _mint(msg.sender, addsupply); return true; } function burnToken(uint burnValue) public returns (bool) { require(msg.sender == superowner, "Status: your address not process"); _burn(msg.sender, burnValue); return true; } function allowance(address owner, address spender) public view returns (uint) { return _allowances[owner][spender]; } function approve(address spender, uint value) public returns (bool) { _approve(msg.sender, spender, value); return true; } function transferFrom(address sender, address recipient, uint amount) public returns (bool) { _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint addedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue)); return true; } function _transfer(address sender, address recipient, uint amount) internal { require(sender != address(0), "Status: transfer from the zero address"); require(recipient != address(0), "Status: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint amount) internal { require(account != address(0), "Status: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint value) internal { require(account != address(0), "Status: burn from the zero address"); _totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); emit Transfer(account, address(0), value); } function _approve(address owner, address spender, uint value) internal { require(owner != address(0), "Status: approve from the zero address"); require(spender != address(0), "Status: approve to the zero address"); _allowances[owner][spender] = value; emit Approval(owner, spender, value); } } contract TRC20Detailed is ITRC20 { string private _name; string private _symbol; uint private _decimals; constructor (string memory name, string memory symbol, uint decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint) { return _decimals; } } contract basictoken is TRC20Detailed, TRC20 { uint private INITIAL_SUPPLY = 100000000 * (10 ** 8); constructor () public TRC20Detailed("Basic Token", "IDRTP", 4) { _mint(msg.sender, INITIAL_SUPPLY); } }
0.5.9