/** * Source Code first verified at https://etherscan.io on Monday, April 15, 2019 (UTC) */ pragma solidity ^0.5.1; contract transferable { function transfer(address to, uint256 value) public returns (bool); } contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes memory _extraData) public; } contract ElectricToken { string public name = "Electric Token"; string public symbol = "ETR"; uint8 public decimals = 8; address public owner; uint256 public _totalSupply = 30000000000000000; mapping (address => uint256) public balances; mapping (address => mapping (address => uint256)) public allowances; event Transfer(address indexed _from, address indexed _to, uint256 _value); event Burn(address indexed from, uint256 value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); constructor() public { balances[msg.sender] = _totalSupply; owner = msg.sender; emit Transfer(address(0x0), msg.sender, _totalSupply); } function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } function allowance(address _owner, address _spender) public view returns (uint256 remaining) { return allowances[_owner][_spender]; } function totalSupply() public view returns (uint256 supply) { return _totalSupply; } function transfer(address _to, uint256 _value) public returns (bool success) { if (_to == address(0x0)) return false; if (balances[msg.sender] < _value) return false; if (balances[_to] + _value < balances[_to]) return false; balances[msg.sender] -= _value; balances[_to] += _value; emit Transfer(msg.sender, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns (bool success) { allowances[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function approveAndCall(address _spender, uint256 _value, bytes memory _extraData) public returns (bool success) { tokenRecipient spender = tokenRecipient(_spender); if (approve(_spender, _value)) { spender.receiveApproval(msg.sender, _value, address(this), _extraData); return true; } } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { if (_to == address(0x0)) return false; if (balances[_from] < _value) return false; if (balances[_to] + _value < balances[_to]) return false; if (_value > allowances[_from][msg.sender]) return false; balances[_from] -= _value; balances[_to] += _value; allowances[_from][msg.sender] -= _value; emit Transfer(_from, _to, _value); return true; } function burn(uint256 _value) public returns (bool success) { if (balances[msg.sender] < _value) return false; balances[msg.sender] -= _value; _totalSupply -= _value; emit Burn(msg.sender, _value); return true; } function burnFrom(address _from, uint256 _value) public returns (bool success) { if (balances[_from] < _value) return false; if (_value > allowances[_from][msg.sender]) return false; balances[_from] -= _value; _totalSupply -= _value; emit Burn(_from, _value); return true; } function transferAnyERC20Token(address tokenAddress, uint tokens) public returns (bool success) { return transferable(tokenAddress).transfer(owner, tokens); } }