Omniscia 0xPhase Audit
BalancerCalculationsFacet Static Analysis Findings
BalancerCalculationsFacet Static Analysis Findings
BCF-01S: Ineffectual Usage of Safe Arithmetics
Type | Severity | Location |
---|---|---|
Language Specific | BalancerCalculationsFacet.sol:L85, L91 |
Description:
The linked mathematical operations are guaranteed to be performed safely by surrounding conditionals evaluated in either require
checks or if-else
constructs.
Example:
balancer/diamond/BalancerCalculationsFacet.sol
84if (yieldBalance >= targetBalance) {85 uint256 offset = yieldBalance - targetBalance;86
87 arr[i].isPositive = true;88 arr[i].offset = offset;89 totalPositive += offset;90} else {91 uint256 offset = targetBalance - yieldBalance;92
93 arr[i].isPositive = false;94 arr[i].offset = offset;95 totalNegative += offset;96}
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:
All referenced calculations are now safely performed within unchecked
code blocks optimizing their gas cost.