QuantAMM

QuantAMM
49,600 OP
View results
Submission Details
Severity: low
Invalid

Division before multiplication leads to unnecessary precision loss

Summary

Division before multiplication leads to unnecessary precision loss.

Vulnerability Details

locals.newWeights[locals.i] = ONE.div(locals.denominator).mul(locals.newWeights[locals.i]);
This line of code is introduced in quite a few points in the codebase and will incur minor, but still unnecessary, precision loss.

Instances:
https://github.com/Cyfrin/2024-12-quantamm/blob/main/pkg/pool-quantamm/contracts/rules/AntimomentumUpdateRule.sol#L81C12-L81C63

https://github.com/Cyfrin/2024-12-quantamm/blob/main/pkg/pool-quantamm/contracts/rules/ChannelFollowingUpdateRule.sol#L134

https://github.com/Cyfrin/2024-12-quantamm/blob/main/pkg/pool-quantamm/contracts/rules/DifferenceMomentumUpdateRule.sol#L105

https://github.com/Cyfrin/2024-12-quantamm/blob/main/pkg/pool-quantamm/contracts/rules/MomentumUpdateRule.sol#L82

https://github.com/Cyfrin/2024-12-quantamm/blob/main/pkg/pool-quantamm/contracts/rules/PowerChannelUpdateRule.sol#L96

Impact

Minor inaccuracies in weight calculations.

Tools Used

Manual review

Recommendations

Follow the common practise of multiplication before division.

Updates

Lead Judging Commences

n0kto Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Known issue
Assigned finding tags:

invalid_Rules_getWeights_precision_loss_div_mul

## [Low-24] Divide before multiply

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!