When phases transition, users should get fresh swap limits to ensure fair trading conditions.
The _resetPerAddressTracking() function only resets address(0) instead of actual users. Phase 1 swapped amounts carry over to Phase 2, causing users to pay unfair penalties.
Likelihood:
Affects every user who swapped in Phase 1 when Phase 2 starts
Guaranteed to happen on every phase transition
Impact:
Users' Phase 1 amounts carry over to Phase 2 unfairly
If Phase 1 amount > Phase 2 limit, users pay penalties on EVERY Phase 2 swap
Worst case: User cannot trade in Phase 2 without constant penalties
Breaks core design where each phase should give fresh limits
Run: forge test --mt test_PhaseResetCausesUnfairPenalties -vv
Test shows user swaps 0.3 ETH in Phase 1, then in Phase 2 (limit 0.1 ETH), even tiny swaps trigger penalties because 0.3 ETH > 0.1 ETH.
Use epoch-based tracking:
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.
The contest is complete and the rewards are being distributed.