claimThrone() Function Prevents All GameplayNormal Behavior: Players should be able to claim the throne by sending ETH >= claimFee, becoming the new currentKing. Previous king receives a payout, and the fee increases for the next claim.
Issue: Due to an inverted condition in claimThrone(), the contract rejects ALL claims because it incorrectly requires the caller to be the current king — which is logically impossible for new players, when currentKing is initially address(0).
Likelihood:
100% Reproducibility: Every claimThrone() call reverts until the contract is fixed. No edge cases.
Immediate Failure: The issue manifests on the very first interaction, preventing further gameplay.
Impact:
Game Bricked: Core functionality is completely broken. No throne claims possible.
User Trust & Reputation Damage: The project appears non-functional, which may erode user confidence even though funds remain safe.
Here’s a Foundry test script which can be run against a local Ethereum fork.
This test reverts 100% of the time due to incorrect require() logic.
Even after sending valid ETH, currentKing remains address(0) and no player becomes king.
Add explicit validation for currentKing != address(0) in payout logic.
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.