The revealDeadline
is set only after both players have committed their moves. This creates a race condition where the player committing second dictates the reveal window duration.
Exploit Scenario:
Player A commits a move.
Player B waits until near the end of Player A's reasonable reveal time, then commits.
The revealDeadline
is set based on block.timestamp
at Player B's commit, effectively giving Player A a much shorter time to reveal than intended.
Player A, who committed first, is unfairly disadvantaged
Games may be lost due to artificially shortened reveal periods
Set Initial Deadline: Set revealDeadline
when Player A commits first
Two-Stage Timeout: Split the reveal timeout into two stages:
Initial Reveal Window: Set when the first player commits.
Extended Reveal: Start the full timer only when both players commit, but apply it to both players.
These changes remove the timing exploit and restore fair reveal windows in multi-turn matches.
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.