You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
pragma solidity ^0.4.4;
|
|
|
|
import './ERC20.sol';
|
|
import '../SafeMath.sol';
|
|
|
|
/**
|
|
* ERC20 token
|
|
*
|
|
* https://github.com/ethereum/EIPs/issues/20
|
|
* Based on code by FirstBlood:
|
|
* https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
|
|
*/
|
|
contract StandardToken is ERC20, SafeMath {
|
|
|
|
mapping(address => uint) balances;
|
|
mapping (address => mapping (address => uint)) allowed;
|
|
|
|
function transfer(address _to, uint _value) returns (bool success) {
|
|
balances[msg.sender] = safeSub(balances[msg.sender], _value);
|
|
balances[_to] = safeAdd(balances[_to], _value);
|
|
Transfer(msg.sender, _to, _value);
|
|
return true;
|
|
}
|
|
|
|
function transferFrom(address _from, address _to, uint _value) returns (bool success) {
|
|
var _allowance = allowed[_from][msg.sender];
|
|
|
|
balances[_to] = safeAdd(balances[_to], _value);
|
|
balances[_from] = safeSub(balances[_from], _value);
|
|
allowed[_from][msg.sender] = safeSub(_allowance, _value);
|
|
Transfer(_from, _to, _value);
|
|
return true;
|
|
}
|
|
|
|
function balanceOf(address _owner) constant returns (uint balance) {
|
|
return balances[_owner];
|
|
}
|
|
|
|
function approve(address _spender, uint _value) returns (bool success) {
|
|
allowed[msg.sender][_spender] = _value;
|
|
Approval(msg.sender, _spender, _value);
|
|
return true;
|
|
}
|
|
|
|
function allowance(address _owner, address _spender) constant returns (uint remaining) {
|
|
return allowed[_owner][_spender];
|
|
}
|
|
|
|
}
|
|
|