智能合约 - SafeMath
优质
小牛编辑
133浏览
2023-12-01
有安全检查的数学操作函数
原文地址:http://zeppelin-solidity.readthedocs.io/en/latest/safemath.html
源码地址:https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/math/SafeMath.sol
assert(bool assertion) internal
用来检查合约的要计算的数学表达式。如果传入的参数值为false
,将抛出异常。这个方法现在是Solidity的标准语法了。
mul(uint256 a, uint256 b) internal returns (uint256)
两个无符号整数的乘法。默认检查了结果是否有溢出。
function mul(uint256 a, uint256 b) internal constant returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
sub(uint256 a, uint256 b) internal returns (uint256)
检查了参数b
不能大于参数a
。
function sub(uint256 a, uint256 b) internal constant returns (uint256) {
assert(b <= a);
return a - b;
}
add(uint256 a, uint256 b) internal returns (uint256)
检查添加后的结果要大于a
和b
。
function add(uint256 a, uint256 b) internal constant returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
源代码只检查了c >= a
,不知道是不是个问题:https://github.com/OpenZeppelin/zeppelin-solidity/issues/365