87 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
pragma solidity 0.4.24;
 | 
						|
 | 
						|
 | 
						|
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 max64(uint64 a, uint64 b)
 | 
						|
        internal
 | 
						|
        pure
 | 
						|
        returns (uint256)
 | 
						|
    {
 | 
						|
        return a >= b ? a : b;
 | 
						|
    }
 | 
						|
 | 
						|
    function min64(uint64 a, uint64 b)
 | 
						|
        internal
 | 
						|
        pure
 | 
						|
        returns (uint256)
 | 
						|
    {
 | 
						|
        return a < b ? a : b;
 | 
						|
    }
 | 
						|
 | 
						|
    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;
 | 
						|
    }
 | 
						|
}
 |