Description: Standard integer division discards the remainder ("dust"), leaving small amounts of USDC stranded in the contract.
Impact: Tiny balances accumulate and are never distributed, breaking the invariant 'principalPay + teacherTotal == bursary'. Over time, those "lost" tokens can grow significant.
Proof of Concept:
Recommended Mitigation: Either use full-precision from OpenZeppelin:
or compute:
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.