Normal behavior:
Any user can claim the throne by sending at least claimFee ETH to the contract. The previous king is dethroned, the claimFee is updated, and the pot increases.
Problem:
The contract incorrectly checks:
This rejects any user who is not already the current king, which completely blocks new players from ever participating in the game.
This is a logic inversion: it should reject the current king from re-claiming, not block everyone else.
Likelihood:
The bug triggers immediately on the first user interaction.
Anyone attempting to claim the throne (except address(0) king) will fail.
No user will be able to claim the throne and no round can progress.
Impact:
The game cannot proceed, core logic is entirely blocked.
Pot cannot grow, winner can never be declared.
All user interactions with the contract (claims, prize accumulation, rotation) are permanently disabled.
Essentially renders the contract unusable.
Deploys the Game contract.
Alice (not the king) tries to claim the throne with the exact required fee.
Despite being eligible, she fails due to the faulty require(msg.sender == currentKing) check.
The revert proves that nobody can ever successfully claim the throne unless they are already the king, which defeats the whole game logic.
Fix the inverted logic condition by rejecting the current king, not everyone else:
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.