Users can call joinEvent() multiple times for the same or different teams, causing their shares to be counted multiple times in totalWinnerShares. This inflates the denominator in withdrawal calculations, reducing payouts for all other winners.
Likelihood: High
Exploitability: Trivial
Impact: High
Direct theft of funds from legitimate winners
Complete breakdown of fair payout distribution
Attacker can amplify their payout arbitrarily
Attack Scenario:
Alice deposits 10 ETH and calls joinEvent(10) twice
Bob deposits 10 ETH and calls joinEvent(10) once
Team 10 wins
_getWinnerShares() counts Alice's shares TWICE (once per duplicate entry)
totalWinnerShares becomes 30 ETH equivalent (should be 20 ETH)
Bob receives 33.3% instead of 50% of the prize pool
Alice can withdraw and take 66.6% of the pool
Track if the user already has joint an event and revert
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.