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 10 months 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!