Omniscia 0xPhase Audit
MathLib Code Style Findings
MathLib Code Style Findings
MLB-01C: Ineffectual Usage of Safe Arithmetics
| Type | Severity | Location |
|---|---|---|
| Language Specific | ![]() | MathLib.sol:L66, L68, L86, L89 |
Description:
The linked mathematical operations are guaranteed to be performed safely by surrounding conditionals evaluated in either require checks or if-else constructs.
Example:
lib/MathLib.sol
58function scaleAmount(59 int256 amount,60 uint8 fromDecimals,61 uint8 toDecimals62) internal pure returns (int256) {63 if (fromDecimals == toDecimals) {64 return amount;65 } else if (fromDecimals < toDecimals) {66 return amount * int256(uint256(10) ** uint256(toDecimals - fromDecimals));67 } else {68 return amount / int256(uint256(10) ** uint256(fromDecimals - toDecimals));69 }70}Recommendation:
Given that safe arithmetics are toggled on by default in pragma versions of 0.8.X, we advise the linked statements to be wrapped in unchecked code blocks thereby optimizing their execution cost.
Alleviation (3dd3d7bf0c2693b2f9c23bacedfa420393f7ea84):
The unchecked calculations are safely applied to the decimal deltas as advised, optimizing the code's gas cost.
