From a66f5f8f033789f501e163ee3b2f185b6494911a Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Sun, 2 Jul 2017 13:00:23 -0300 Subject: [PATCH 1/5] format SafeMath documentation as NatSpec --- contracts/{ => math}/SafeMath.sol | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename contracts/{ => math}/SafeMath.sol (93%) diff --git a/contracts/SafeMath.sol b/contracts/math/SafeMath.sol similarity index 93% rename from contracts/SafeMath.sol rename to contracts/math/SafeMath.sol index 76e46b784..4f6861c20 100644 --- a/contracts/SafeMath.sol +++ b/contracts/math/SafeMath.sol @@ -2,7 +2,8 @@ pragma solidity ^0.4.11; /** - * Math operations with safety checks + * @title SafeMath + * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal returns (uint256) { From ba383a6d204bba3e910d011e29b7ab4c5bb4fadf Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Sun, 2 Jul 2017 13:01:55 -0300 Subject: [PATCH 2/5] refactor max and min out of SafeMath --- contracts/math/Math.sol | 24 ++++++++++++++++++++++++ contracts/math/SafeMath.sol | 17 ----------------- 2 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 contracts/math/Math.sol diff --git a/contracts/math/Math.sol b/contracts/math/Math.sol new file mode 100644 index 000000000..fa89c371f --- /dev/null +++ b/contracts/math/Math.sol @@ -0,0 +1,24 @@ +pragma solidity ^0.4.11; + +/** + * @title Math + * @dev Assorted math operations + */ + +contract Math { + 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; + } +} diff --git a/contracts/math/SafeMath.sol b/contracts/math/SafeMath.sol index 4f6861c20..dc05ba280 100644 --- a/contracts/math/SafeMath.sol +++ b/contracts/math/SafeMath.sol @@ -29,21 +29,4 @@ library SafeMath { assert(c >= a); 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; - } - } From 759f8de81f901a3cf544c1db7ba76c3111ceffee Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Sun, 2 Jul 2017 17:52:44 -0300 Subject: [PATCH 3/5] fix import directories --- contracts/payment/PullPayment.sol | 2 +- contracts/token/BasicToken.sol | 2 +- test/helpers/SafeMathMock.sol | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/payment/PullPayment.sol b/contracts/payment/PullPayment.sol index 2c9210004..ba710b531 100644 --- a/contracts/payment/PullPayment.sol +++ b/contracts/payment/PullPayment.sol @@ -1,7 +1,7 @@ pragma solidity ^0.4.11; -import '../SafeMath.sol'; +import '../math/SafeMath.sol'; /** diff --git a/contracts/token/BasicToken.sol b/contracts/token/BasicToken.sol index 1f347a38a..5618227a1 100644 --- a/contracts/token/BasicToken.sol +++ b/contracts/token/BasicToken.sol @@ -2,7 +2,7 @@ pragma solidity ^0.4.11; import './ERC20Basic.sol'; -import '../SafeMath.sol'; +import '../math/SafeMath.sol'; /** diff --git a/test/helpers/SafeMathMock.sol b/test/helpers/SafeMathMock.sol index f2b6d81e9..a9edd02c4 100644 --- a/test/helpers/SafeMathMock.sol +++ b/test/helpers/SafeMathMock.sol @@ -1,7 +1,7 @@ pragma solidity ^0.4.11; -import '../../contracts/SafeMath.sol'; +import '../../contracts/math/SafeMath.sol'; contract SafeMathMock { From 0b1f08043b51a23680f091f182071c5e718d0f79 Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Sun, 2 Jul 2017 17:56:10 -0300 Subject: [PATCH 4/5] change Math to a library instead of a contract --- contracts/math/Math.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/math/Math.sol b/contracts/math/Math.sol index fa89c371f..3d016c0ac 100644 --- a/contracts/math/Math.sol +++ b/contracts/math/Math.sol @@ -5,7 +5,7 @@ pragma solidity ^0.4.11; * @dev Assorted math operations */ -contract Math { +library Math { function max64(uint64 a, uint64 b) internal constant returns (uint64) { return a >= b ? a : b; } From 421ed4f8ab8f7666da1ca52f61bd4b5785a5f7b9 Mon Sep 17 00:00:00 2001 From: Francisco Giordano Date: Sun, 2 Jul 2017 17:56:34 -0300 Subject: [PATCH 5/5] fix references to max and min functions --- contracts/token/VestedToken.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/token/VestedToken.sol b/contracts/token/VestedToken.sol index df2d1f4b4..b7748b09e 100644 --- a/contracts/token/VestedToken.sol +++ b/contracts/token/VestedToken.sol @@ -1,5 +1,6 @@ pragma solidity ^0.4.11; +import "../math/Math.sol"; import "./StandardToken.sol"; import "./LimitedTransferToken.sol"; @@ -121,7 +122,7 @@ contract VestedToken is StandardToken, LimitedTransferToken { // Return the minimum of how many vested can transfer and other value // in case there are other limiting transferability factors (default is balanceOf) - return SafeMath.min256(vestedTransferable, super.transferableTokens(holder, time)); + return Math.min256(vestedTransferable, super.transferableTokens(holder, time)); } /** @@ -241,7 +242,7 @@ contract VestedToken is StandardToken, LimitedTransferToken { date = uint64(now); uint256 grantIndex = grants[holder].length; for (uint256 i = 0; i < grantIndex; i++) { - date = SafeMath.max64(grants[holder][i].vesting, date); + date = Math.max64(grants[holder][i].vesting, date); } } }