The contract exposes the exact time remaining in the gracePeriod using the public getRemainingTime() view function.
Combined with public variables like lastClaimTime and gracePeriod, this allows external actors to precisely predict when the game state will change, removing any uncertainty in timing.
This leads to automated sniping, where a bot or MEV agent can claim the throne just before declareWinner() becomes callable — defeating the game’s intent.
Likelihood: High
The grace period timer is fully observable and deterministic.
Any external bot with mempool access can calculate optimal sniping windows in real-time.
Impact: Medium
Funds are not directly at risk.
However, game integrity is undermined, and human players are at a systemic disadvantage compared to automated bots.
This logic can be wrapped in a loop, scheduled off-chain, or embedded in MEV bots to monitor the mempool and submit a
claimThrone()just before the grace period ends.
Additional improvements:
Randomize Grace Period Expiry
Use blockhash or VRF to add jitter to the grace period end time.
Commit-Reveal System
Require users to commit a claim, then reveal it later — increasing fairness.
Anti-Sniping Extension Logic
Automatically extend the grace period if a claim happens too close to expiry.
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.