Description
The withdraw() function currently allows only participants who selected the winner country to withdraw rewards.
However, users who deposited assets but never joined the event (i.e., userToCountry[msg.sender] is unset) have no way to retrieve their deposited tokens once the event ends.
These users remain permanently locked out of their funds.
Impact
Loss of funds for users who accidentally deposited but didn’t call the join function.
Causes user dissatisfaction and potential trust issues.
Contradicts expected UX behavior — deposits should be refundable if participation was never completed.
Proof of Concepts
Recommended mitigation
Add a branch allowing users who deposited but never joined to withdraw their assets after event ends.
For example:
This ensures:
Depositors who never joined can still get refunds.
Participants follow the winner/loser withdrawal logic.
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.