Normal Behavior: A user should be able to become the currentKing by sending at least the claimFee. Each successful claim increases the claimFee, and updates the currentKing state to the caller.
Specific Issue: The contract uses the following logic in Line #176 of ClaimThrone() function:
This logic is reversed — it allows only the current king to claim again, which makes no sense in this context. More critically, when the game starts, currentKing is address(0), and since no user can be address(0), the very first call to claimThrone() will revert, permanently disabling the game.
Likelihood:
This occurs immediately after deployment, since currentKing == address(0).
Any address calling claimThrone() will fail the check, so no one can start the game.
Impact:
Total denial-of-service — the game is non-functional from the start.
No user can ever become king or interact with core functionality.
Platform cannot earn fees, pot remains empty, and user funds are locked if sent.
This test shows that the very first claim always reverts.
This ensures:
The game can start properly with the first player.
Only non-kings can claim the throne again.
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.