The phase transition reset function is completely broken, only resetting tracking for address(0) instead of all users.
Note: This issue is interconnected with H-02 (Router vs User Address). Both must be fixed together - see Combined Fix section below.
Location: src/TokenLaunchHook.sol:189-192
The function name suggests it should reset per-address tracking on phase transitions, but it only clears data for address(0), which is never a valid swapper address.
Likelihood:
Every phase transition (Phase 1 to Phase 2, Phase 2 to Phase 3) triggers _resetPerAddressTracking()
All users who swapped in previous phases will have their limits carried over
This happens automatically at block boundaries defined by phase1Duration and phase2Duration
Impact:
Per-address swap limits accumulate across phases instead of resetting
Users who swapped 0.5% in Phase 1 can only swap 2.5% in Phase 2 (instead of full 3%)
The entire phase-based limit system is fundamentally broken
Anti-bot protection is severely compromised
Important: Any fix for H-01 that uses
senderwill NOT work becausesenderis the router address (see H-02). Both issues must be fixed together.
Implement proper tracking reset. Options:
Use a phase-indexed mapping: mapping(uint256 => mapping(address => uint256))
Store a phase number with each user's data and reset on mismatch
Use a nonce that increments on phase change
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.