Add safeDiv and min/max functions to SafeMath
This commit is contained in:
@ -11,6 +11,13 @@ contract SafeMath {
|
|||||||
return c;
|
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) {
|
function safeSub(uint a, uint b) internal returns (uint) {
|
||||||
assert(b <= a);
|
assert(b <= a);
|
||||||
return a - b;
|
return a - b;
|
||||||
@ -22,6 +29,22 @@ contract SafeMath {
|
|||||||
return c;
|
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 {
|
function assert(bool assertion) internal {
|
||||||
if (!assertion) throw;
|
if (!assertion) throw;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,12 +67,12 @@ contract GrantableToken is StandardToken {
|
|||||||
if (time < cliff) return 0;
|
if (time < cliff) return 0;
|
||||||
if (time > vesting) return tokens;
|
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;
|
vestedTokens = cliffTokens;
|
||||||
|
|
||||||
uint256 vestingTokens = safeSub(tokens, 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) {
|
function nonVestedTokens(TokenGrant grant, uint64 time) private constant returns (uint256) {
|
||||||
@ -102,12 +102,4 @@ contract GrantableToken is StandardToken {
|
|||||||
|
|
||||||
return super.transfer(_to, _value);
|
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