In multi-turn games, if both players fail to reveal their moves within the revealDeadline
for any turn, the timeoutReveal
function allows either player to call _cancelGame
, which cancels the entire game and refunds the bets (ETH or tokens). This behavior discards all previous turns’ scores allowing a losing player to force a cancellation and recover their bet instead of conceding a loss.
The affected code is the following:
This undermines the fairness of multi turn games by allowing a losing player to mitigate their loss, though it requires specific conditions such as both players not revealing.
I would recommend to modify timeoutReveal
to award the win based on current scores if some turns have been completed, rather than cancelling the game outright, like so:
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.