Skip to main content

Divide Before Multiply

What it detects

This detector flags expressions where integer division happens prior to multiplication. Dividing first truncates the result, often yielding zero and producing inaccurate outcomes.

Typical symptoms

  • Calculations unexpectedly return zero or a rounded-down value
  • Rewards or fees smaller than anticipated

Solidity snippet (v0.8.25)

pragma solidity ^0.8.25;

contract DivisionOrder {
function calc(uint256 amount, uint256 rate) external pure returns (uint256) {
// Precision lost because division occurs before multiplication
return amount / rate * 100;
}
}

Why it matters on EVM

Incorrect ordering of operations can silently reduce payouts or misprice assets, harming user balances and protocol economics.