Description:
The _setFinallizedVaultBalance() function contains a critical logic error. It checks if block.timestamp <= eventStartDate and reverts with eventNotStarted(), when it should actually verify that the event has ended (i.e., block.timestamp > eventEndDate or at minimum block.timestamp > eventStartDate).
This function is called from setWinner(), which already correctly checks that block.timestamp > eventEndDate. However, the internal check uses the wrong comparison, making the function unusable if the event start date is in the past (which it always will be when setting the winner).
Impact:
The setWinner() function will always fail if eventStartDate has passed
Winners cannot be determined and users cannot withdraw their funds
All funds become permanently locked in the contract
Complete denial of service for the core functionality
Proof of Concept:
Mitigation:
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.