The game relies entirely on an external caller to invoke declareWinner
after the grace period expires.
If no one ever calls this function, the game remains in a "pending" state indefinitely, the prize pot is locked, the current King never receives winnings, and the contract cannot progress to the next round.
This introduces a liveness issue, where funds are inaccessible and the game becomes unusable.
Likelihood:
This will happen in inactive rounds or when players are unaware of the need to finalize the game.
Impact:
The prize pot remains trapped in the contract.
The owner is blocked from resetting the game, halting future rounds.
A player claims the throne and no other player joins.
Time passes and grace period expires.
No one calls declareWinner
.
The pot remains locked, gameEnded = false
, and resetGame()
cannot be called.
Use an automated mechanism like Chainlink Automation to ensure the game concludes reliably
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.