pragma solidity ^0.4.23; contract GoMoney { string public constant name = "GoMoney"; string public constant symbol = "GM"; uint8 public constant decimals = 18; uint256 public constant INITIAL_SUPPLY = 20000000000000 * (10 ** uint256(decimals)); mapping(address => uint256) balances; event Transfer(address _from, address _to, uint256 _value); event Approval(address _sender, address _spender, uint256 _value); mapping(address => mapping(address => uint256)) internal allowed; uint256 totalSupply_; constructor() public { totalSupply_= INITIAL_SUPPLY; balances[msg.sender] = INITIAL_SUPPLY; emit Transfer(0x0, msg.sender, INITIAL_SUPPLY); } function totalSupply() public view returns (uint256) { return totalSupply_; } function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] -= _value; balances[_to] += _value; emit Transfer(msg.sender, _to, _value); return true; } function balanceOf(address _owner) public view returns(uint256) { return balances[_owner]; } function transferFrom(address _from, address _to, uint256 _value) public returns(bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] -= _value; balances[_to] += _value; allowed[_from][msg.sender] -= _value; emit Transfer(_from, _to, _value); return true; } function approve(address _spender, uint256 _value) public returns(bool){ allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) public view returns (uint256){ return allowed[_owner][_spender]; } }
0.4.23