A smart contract does not need an overflow, reentrancy bug, or broken access-control check to lose money.

Sometimes, the exploit is hidden inside an ordinary division:

uint256 result = amount * rate / SCALE;

Enter fullscreen mode

Exit fullscreen mode