pragma solidity ^0.4.17; contract IssueTokens { uint public totalSupply; string public name; string public symbol; uint public decimals; address private owner; mapping (address => uint) allowed; function IssueTokens(uint _amount, string _name, string _symbol, uint _decimals) public { owner = msg.sender; totalSupply = _amount; name = _name; symbol = _symbol; decimals = _decimals; } modifier ownerOnly() { require(owner == msg.sender); _; } event EtherDeposit(uint indexed _deposited); event Approval(address indexed _spender, uint256 _value); event Transfer(address indexed _from, address indexed _to, uint _value); event Suicide(address indexed _contract, uint indexed _sentAmount); event Burnt(uint indexed _burnt, uint indexed _totalSupply); function () public ownerOnly payable { EtherDeposit(msg.value); } function balanceOf(address _owner) public view returns (uint balance) { return allowed[_owner]; } function approve(address _spender, uint _value) public ownerOnly returns (bool success) { require(totalSupply >= _value); totalSupply -= _value; allowed[_spender] += _value; Approval(_spender, _value); return true; } function kill() public ownerOnly { Suicide(msg.sender, this.balance); selfdestruct(owner); } function transfer(address _to, uint _amount) public returns (bool success) { require(allowed[msg.sender] >= _amount); allowed[msg.sender] -= _amount; allowed[_to] += _amount; return true; } function transferFrom(address _from, address _to, uint _value) public ownerOnly returns (bool success) { require(allowed[_from] >= _value && allowed[_to] > 0); allowed[_from] -= _value; allowed[_to] += _value; return true; } function burn(uint _amount) public ownerOnly { require(totalSupply >= _amount); totalSupply -= _amount; Burnt(_amount, totalSupply); } }
0.4.17