The if condition block.timestamp <= START_TIME + matchNumber * 68400 - 68400 is incorrect in the ScoreBoard::setPrediction function, preventing timely updates to the playersPredictions mapping and prediction made by players.
The incorrectly implemented if condition in ScoreBoard::setPrediction will permit players to update the prediction map at incorrect times, potentially after the match, leading to a violation of the protocol's intended functionality.
According to the contract logic, a player can only change their prediction until the match starts i.e upto 19:00:00 UTC on the day of that match. After this time, prediction changes are prohibited.
The calculation block.timestamp <= START_TIME + matchNumber * 68400 - 68400 produces an incorrect result.
Let's consider an example for the third match, scheduled for August 17, 2024, at 20:00:00. Players should be able to modify their predictions until this exact time.
Therefore, players will only be able to change their predictions until August 17, 2024, at 10:00:00 AM, which is incorrect.
Players will be unable to change their predictions, which will compromise the protocol's intended functionality, fair play and resulting in wasted prediction fees.
Manual Review
Change the condition as given below:-
In both contracts there is a similar error in the computation of the timestamps of the 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.