Normally, any player who is not the current king should be able to claim the throne by sending the required claimFee
. This resets the grace period and makes them the new king.
However, the contract contains a faulty condition
require(msg.sender == currentKing, "Game: You are already the king. No need to re-claim.")
This only allows the current king to claim the throne again, which is the opposite of the intended behavior. As a result, no new players can ever participate after the first claim, and the game logic breaks entirely.
Likelihood:
The issue happens immediately after the first player claims the throne.
All future attempts to claim by any other player will revert.
The game gets stuck in a non-functional state with 100% certainty after the initial king is crowned.
Impact:
Core gameplay is broken; no one can dethrone the king.
The game becomes unplayable, requiring a manual reset.
Players may lose gas or funds due to misunderstood logic.
Loss of trust in the game as a fair or functioning contract.
Explanation:
The require(msg.sender == currentKing)
line ensures only the king can claim again, instead of preventing the king from reclaiming. This breaks the competition loop entirely.
Explanation:
This change flips the logic to the correct behavior: prevent the current king from reclaiming the throne, while allowing all other players to do so — restoring the intended gameplay flow.
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.