ThePredicter.sol::makePrediction()
and ScoreBoard.sol::SetPrediction()
Calculate the wrong maximum time to submit a prediction for the respective match.
The function lies in both smart contracts, which are ThePredicter.sol::makePrediction()
and ScoreBoard::SetPrediction()
has the wrong calculation for the maximum limit for submitting a prediction. In the documentation, it stated that
Every day from 20:00:00 UTC one match is played. Until 19:00:00 UTC on the day of the match, predictions can be made by any approved Player. Players pay prediction fee when making their first prediction for each match.
This means the time limit should be limit <= UTC 19:00:00
, the calculation on both smart contracts use
This is wrong since 1 day in epoch time equals to 86,400
and not 68,400
. Using only 86,400
is also not sufficient, since the maximum time for submitting a prediction is on 19:00 UTC not 20.00 UTC, so the correct calculation is
The Prediction for the match after day 1, has a shorter submission limit which starts from few hours earlier (match 2 is 5 hours earlier) to a day earlier (like match 9)
Manual Analysis
Remix
Change the Time Limist Check on both smart contract into this.
ThePredicter.sol::makePrediction()
ScoreBoard.sol::SetPrediction()
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.