ThePredicter
does not properly guard functions that should only be used by Players, and not Users. This allows non-Players to particiapte without paying the registration fee, and leads to incorrect reward
calculations.
The management of the approved players list is implemented, but there is no logic to actually control what functions players and non-players can interact with (such as makePrediction
).
Include the following test case in ./test/ThePredicter.t.sol
:
Run the test:
Non-Players can participate in the game without paying the registration fee, which leads to incorrect reward
calculations in ThePredicter::withdraw
. This happens since the prize pool is inherently zero-sum, meaning that one Player's win is another Player's loss (in the case of a non-Draw across the board). Therefore, non-registered Users effectively claim shares that are intended for registered Player's.
Manual Review
Enforce the approved players list. There are multiple ways to do this, but one such way would be through the use of a modifier on functions that should be guarded, such as:
makePrediction has no access controls and any unapproved user can make predictions causing an incorrect calculation and distribution of rewards.
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.