72 lines
1.2 KiB
Solidity
72 lines
1.2 KiB
Solidity
pragma solidity ^0.5.5;
|
|
|
|
|
|
contract SafeMath {
|
|
|
|
function _safeMul(uint256 a, uint256 b)
|
|
internal
|
|
pure
|
|
returns (uint256)
|
|
{
|
|
if (a == 0) {
|
|
return 0;
|
|
}
|
|
uint256 c = a * b;
|
|
require(
|
|
c / a == b,
|
|
"UINT256_OVERFLOW"
|
|
);
|
|
return c;
|
|
}
|
|
|
|
function _safeDiv(uint256 a, uint256 b)
|
|
internal
|
|
pure
|
|
returns (uint256)
|
|
{
|
|
uint256 c = a / b;
|
|
return c;
|
|
}
|
|
|
|
function _safeSub(uint256 a, uint256 b)
|
|
internal
|
|
pure
|
|
returns (uint256)
|
|
{
|
|
require(
|
|
b <= a,
|
|
"UINT256_UNDERFLOW"
|
|
);
|
|
return a - b;
|
|
}
|
|
|
|
function _safeAdd(uint256 a, uint256 b)
|
|
internal
|
|
pure
|
|
returns (uint256)
|
|
{
|
|
uint256 c = a + b;
|
|
require(
|
|
c >= a,
|
|
"UINT256_OVERFLOW"
|
|
);
|
|
return c;
|
|
}
|
|
|
|
function _max256(uint256 a, uint256 b)
|
|
internal
|
|
pure
|
|
returns (uint256)
|
|
{
|
|
return a >= b ? a : b;
|
|
}
|
|
|
|
function _min256(uint256 a, uint256 b)
|
|
internal
|
|
pure
|
|
returns (uint256)
|
|
{
|
|
return a < b ? a : b;
|
|
}
|
|
}
|