|
|
|
@ -63,5 +63,30 @@ contract StandardToken is ERC20, BasicToken { |
|
|
|
|
function allowance(address _owner, address _spender) constant returns (uint256 remaining) { |
|
|
|
|
return allowed[_owner][_spender]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* approve should be called when allowed[_spender] == 0. To increment |
|
|
|
|
* allowed value is better to use this function to avoid 2 calls (and wait until |
|
|
|
|
* the first transaction is mined) |
|
|
|
|
* From MonolithDAO Token.sol |
|
|
|
|
*/ |
|
|
|
|
function increaseApproval (address _spender, uint _addedValue) |
|
|
|
|
returns (bool success) { |
|
|
|
|
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); |
|
|
|
|
Approval(msg.sender, _spender, allowed[msg.sender][_spender]); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function decreaseApproval (address _spender, uint _subtractedValue) |
|
|
|
|
returns (bool success) { |
|
|
|
|
uint oldValue = allowed[msg.sender][_spender]; |
|
|
|
|
if (_subtractedValue > oldValue) { |
|
|
|
|
allowed[msg.sender][_spender] = 0; |
|
|
|
|
} else { |
|
|
|
|
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); |
|
|
|
|
} |
|
|
|
|
Approval(msg.sender, _spender, allowed[msg.sender][_spender]); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|