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.