The protocol expects users to deposit ETH when liking others. If the like is mutual, a match triggers and rewards are distributed. If not, the user's deposit should remain available.
There is no function allowing users to withdraw their userBalances for unmatched likes. The only ETH exit paths are matchRewards() (requires mutual match) and withdrawFees() (owner-only, fees only). If a user likes someone who never reciprocates, the deposited ETH is irrecoverable -- there is no unlike(), refund(), or withdrawBalance() function.
Likelihood:
This occurs whenever a user likes someone who does not reciprocate -- a common scenario in a dating application
The more users interact with the protocol, the more unmatched ETH accumulates with no exit path
Impact:
Users lose >= 1 ETH for every unreciprocated like with no way to recover it
This creates a significant disincentive to use the protocol, as every like is a gamble with no refund option
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.