The claimThrone
function is intended to allow users to become the new king by fulfilling certain conditions.
However, due to flawed logic in the require
statement, once a user becomes the king, no other user can claim the throne, effectively breaking the contract's core functionality.
Likelihood:
Everytime a non-zero address claims the throne, the king
variable is set to that address.
On the next call, same required condition is evaluated. since msg.sender != king
fails(if the caller is the same or inappropriately evaluated), it reverts for all subsequent users.
Impact:
The core functionlity of the game is lost - The throne becomes unclaimable after the first successful call.
No new players can participate, leading to a denial-of-service for the contract’s main feature.
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.