A faulty require check in the Game::claimThrone() function that prevents anyone including non-kings from claiming the throne.
No one can become the king the core functionality of the game is blocked permanently.
Normal Behavior:
Any user should be able to claim the throne by sending the required claimFee()
and become the currentKing
. Only the currentKing
should be restricted from calling claimThrone()
again to avoid redundant updates.
Bug:
In the current implementation, even the first user to call claimThrone()
gets blocked by the require
condition because the contract incorrectly assumes currentKing == msg.sender
before the first successful claim. As a result, no one can claim the throne, making the game unplayable.
Likelihood: HIGH
This bug always occurs on the first claim, preventing anyone from participating.
The game becomes immediately unusable on deployment.
Impact: HIGH
No player can ever become the currentKing
.
Game flow is completely broken; users are blocked from interacting even if the fee is correct.
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.