Raffle participants should have equal chances of winning, with no ability to manipulate outcomes based on advance knowledge.
The public mempool allows attackers to see pending selectWinner() transactions. Combined with predictable randomness, attackers can calculate the winner and front-run with refund() calls to exit losing positions.
Likelihood: Medium
Requires monitoring mempool and calculating outcomes, but tools exist for this
MEV bots routinely perform similar front-running attacks
Impact: High
Attackers gain risk-free participation by exiting losing raffles
Honest participants face unfair odds
Prize pool calculations become corrupted
Attacker enters the raffle with multiple addresses
Attacker monitors the mempool for selectWinner() transactions
Attacker calculates the winner using the same predictable randomness formula
Attacker determines their addresses will not win
Attacker submits higher-gas refund() transactions to front-run
Attacker exits the raffle before the winner is selected
Attacker repeats, only remaining in raffles they will win
Additionally, implement Chainlink VRF for unpredictable randomness.
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.