Update StandardToken.sol
Added increaseApproval and decreaseApproval to increase / decrease the approval in 1 transaction.
This commit is contained in:
@ -64,4 +64,31 @@ contract StandardToken is ERC20, BasicToken {
|
|||||||
return allowed[_owner][_spender];
|
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)
|
||||||
|
onlyPayloadSize(2 * 32)
|
||||||
|
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)
|
||||||
|
onlyPayloadSize(2 * 32)
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user