In the current implementation of claimThrone(), the contract enforces that msg.sender must be equal to currentKing. However, upon deployment, currentKing is initialized to address(0), meaning only address(0) can call claimThrone() initially — which is impossible on-chain. This condition permanently locks the function and prevents any player from claiming the throne, effectively breaking the core gameplay.
HIGH
Likelihood:
Occurs immediately upon deployment, on the first ever claimThrone() attempt.
Will always trigger in production unless manually initialized via a privileged function (which is not ideal for fairness or decentralization).
Impact:
Game halts entirely — no user can become king.
Game logic becomes unreachable, and the contract becomes unusable without redeployment or admin intervention.
Deploy the contract.
Try calling claimThrone() from any EOA:
Fails with:
Because currentKing == address(0) and no valid address can ever be msg.sender == address(0).
Fix the require check
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.