The conversion from int8 score to uint256 shares in the withdraw
function of ThePredicter.sol could lead to precision loss.
The line uint256 shares = uint8(score);
first converts int8 to uint8, then to uint256. Negative scores are lost in this conversion.
Players with negative scores see their score up to 0. As it is not a critical vuln since they can't withdraw, the scoreboard would not reflet the real score of the players.
Add a check to the reward calculation to handle negative scores correctly:
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.