Root: The required next-bid calculation divides before multiplying, causing integer truncation.
Impact: Highest bidder can outbid with less than the intended +5% (even 0 extra in edge cases), breaking auction economics and fairness.
Normal behavior:
Subsequent bids should be at least 5% higher than the current highest bid to prevent tiny/nuisance increments and ensure fair price discovery.
Issue:
The code computes the required amount as (prev / 100) * (100 + 5). Because Solidity does integer division, prev / 100 truncates; for small prev, this becomes 0, and for larger values it underestimates the true 5%, allowing bids that increase by less than 5%.
Likelihood:
Reason 1 // Any common bid values not divisible by 100 produce truncation, regularly undercharging the 5% step.
Reason 2 // Early-phase bids (small amounts) often result in previousBidAmount / 100 == 0, permitting effectively 0 increment.
Impact:
Impact 1 // Auction revenue loss and unfair price discovery; strategic bidders can “creep” the price.
Impact 2 // Reputation/UX damage: rules say +5%, enforcement is weaker in practice.
below we have some explanation:
Use multiply-then-divide (or basis points), ensuring full precision before truncation:
Integer division in requiredAmount truncates fractions, allowing bids slightly lower than intended.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.