Add safeDiv and min/max functions to SafeMath
This commit is contained in:
@ -11,6 +11,13 @@ contract SafeMath {
|
||||
return c;
|
||||
}
|
||||
|
||||
function safeDiv(uint a, uint b) internal returns (uint) {
|
||||
assert(b > 0);
|
||||
uint c = a / b;
|
||||
assert(a == b * c + a % b);
|
||||
return c;
|
||||
}
|
||||
|
||||
function safeSub(uint a, uint b) internal returns (uint) {
|
||||
assert(b <= a);
|
||||
return a - b;
|
||||
@ -22,6 +29,22 @@ contract SafeMath {
|
||||
return c;
|
||||
}
|
||||
|
||||
function max64(uint64 a, uint64 b) internal constant returns (uint64) {
|
||||
return a >= b ? a : b;
|
||||
}
|
||||
|
||||
function min64(uint64 a, uint64 b) internal constant returns (uint64) {
|
||||
return a < b ? a : b;
|
||||
}
|
||||
|
||||
function max256(uint256 a, uint256 b) internal constant returns (uint256) {
|
||||
return a >= b ? a : b;
|
||||
}
|
||||
|
||||
function min256(uint256 a, uint256 b) internal constant returns (uint256) {
|
||||
return a < b ? a : b;
|
||||
}
|
||||
|
||||
function assert(bool assertion) internal {
|
||||
if (!assertion) throw;
|
||||
}
|
||||
|
||||
@ -67,12 +67,12 @@ contract GrantableToken is StandardToken {
|
||||
if (time < cliff) return 0;
|
||||
if (time > vesting) return tokens;
|
||||
|
||||
uint256 cliffTokens = safeMul(tokens, (cliff - start) / (vesting - start));
|
||||
uint256 cliffTokens = safeMul(tokens, safeDiv(safeSub(cliff, start), safeSub(vesting, start)));
|
||||
vestedTokens = cliffTokens;
|
||||
|
||||
uint256 vestingTokens = safeSub(tokens, cliffTokens);
|
||||
|
||||
vestedTokens = safeAdd(vestedTokens, vestingTokens * (time - cliff) / (vesting - start));
|
||||
vestedTokens = safeAdd(vestedTokens, safeMul(vestingTokens, safeDiv(safeSub(time, cliff), safeSub(vesting, start))));
|
||||
}
|
||||
|
||||
function nonVestedTokens(TokenGrant grant, uint64 time) private constant returns (uint256) {
|
||||
@ -102,12 +102,4 @@ contract GrantableToken is StandardToken {
|
||||
|
||||
return super.transfer(_to, _value);
|
||||
}
|
||||
|
||||
function max64(uint64 a, uint64 b) private constant returns (uint64) {
|
||||
return a >= b ? a : b;
|
||||
}
|
||||
|
||||
function min256(uint256 a, uint256 b) private constant returns (uint256) {
|
||||
return a < b ? a : b;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user