Last active
January 12, 2018 01:53
-
-
Save kyriediculous/aeb58ac01eb93aaafbe78977a33d29f9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.10; | |
import 'browser/SafeMath.sol'; | |
import 'browser/ERC20.sol'; | |
contract StandardToken is ERC20 { | |
using SafeMath for uint; | |
string internal _name; | |
string internal _symbol; | |
uint8 internal _decimals; | |
uint256 internal _totalSupply; | |
mapping (address => uint256) internal balances; | |
mapping (address => mapping (address => uint256)) internal allowed; | |
function StandardToken(string name, string symbol, uint8 decimals, uint256 totalSupply) public { | |
_symbol = symbol; | |
_name = name; | |
_decimals = decimals; | |
_totalSupply = totalSupply; | |
balances[msg.sender] = totalSupply; | |
} | |
function name() | |
public | |
view | |
returns (string) { | |
return _name; | |
} | |
function symbol() | |
public | |
view | |
returns (string) { | |
return _symbol; | |
} | |
function decimals() | |
public | |
view | |
returns (uint8) { | |
return _decimals; | |
} | |
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] = SafeMath.sub(balances[msg.sender], _value); | |
balances[_to] = SafeMath.add(balances[_to], _value); | |
Transfer(msg.sender, _to, _value); | |
return true; | |
} | |
function balanceOf(address _owner) public view returns (uint256 balance) { | |
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] = SafeMath.sub(balances[_from], _value); | |
balances[_to] = SafeMath.add(balances[_to], _value); | |
allowed[_from][msg.sender] = SafeMath.sub(allowed[_from][msg.sender], _value); | |
Transfer(_from, _to, _value); | |
return true; | |
} | |
function approve(address _spender, uint256 _value) public returns (bool) { | |
allowed[msg.sender][_spender] = _value; | |
Approval(msg.sender, _spender, _value); | |
return true; | |
} | |
function allowance(address _owner, address _spender) public view returns (uint256) { | |
return allowed[_owner][_spender]; | |
} | |
function increaseApproval(address _spender, uint _addedValue) public returns (bool) { | |
allowed[msg.sender][_spender] = SafeMath.add(allowed[msg.sender][_spender], _addedValue); | |
Approval(msg.sender, _spender, allowed[msg.sender][_spender]); | |
return true; | |
} | |
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { | |
uint oldValue = allowed[msg.sender][_spender]; | |
if (_subtractedValue > oldValue) { | |
allowed[msg.sender][_spender] = 0; | |
} else { | |
allowed[msg.sender][_spender] = SafeMath.sub(oldValue, _subtractedValue); | |
} | |
Approval(msg.sender, _spender, allowed[msg.sender][_spender]); | |
return true; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment