Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: high
Invalid

Even if players have the same score, the rewards will not be distributed equally among them.

Summary

In the scenario present in the PoC, three players have the same score of 4 and should receive the same reward. In the PoC, we will demonstrate that this is not the case.

Impact

Equitable distribution of rewards among winners.

PoC

function test_isRewardDistributionCorrect() public {
address stranger2 = makeAddr("stranger2");
address stranger3 = makeAddr("stranger3");
//////////// REGISTRATION /////////////////
vm.startPrank(stranger);
vm.deal(stranger, 1 ether);
thePredicter.register{value: 0.04 ether}();
vm.stopPrank();
vm.startPrank(stranger2);
vm.deal(stranger2, 1 ether);
thePredicter.register{value: 0.04 ether}();
vm.stopPrank();
vm.startPrank(stranger3);
vm.deal(stranger3, 1 ether);
thePredicter.register{value: 0.04 ether}();
vm.stopPrank();
//////////// APROVING PLAYESR BY ORGANIZER ///////////////////
vm.startPrank(organizer);
thePredicter.approvePlayer(stranger);
thePredicter.approvePlayer(stranger2);
thePredicter.approvePlayer(stranger3);
vm.stopPrank();
/////////////// MAKING PREDICTIONS ////////////////////////////
vm.startPrank(stranger);
thePredicter.makePrediction{value: 0.0001 ether}(
1,
ScoreBoard.Result.First
);
thePredicter.makePrediction{value: 0.0001 ether}(
2,
ScoreBoard.Result.First
);
vm.stopPrank();
vm.startPrank(stranger2);
thePredicter.makePrediction{value: 0.0001 ether}(
1,
ScoreBoard.Result.First
);
thePredicter.makePrediction{value: 0.0001 ether}(
2,
ScoreBoard.Result.First
);
vm.stopPrank();
vm.startPrank(stranger3);
thePredicter.makePrediction{value: 0.0001 ether}(
1,
ScoreBoard.Result.First
);
thePredicter.makePrediction{value: 0.0001 ether}(
2,
ScoreBoard.Result.First
);
vm.stopPrank();
vm.startPrank(organizer);
scoreBoard.setResult(0, ScoreBoard.Result.First);
scoreBoard.setResult(1, ScoreBoard.Result.First);
scoreBoard.setResult(2, ScoreBoard.Result.First);
scoreBoard.setResult(3, ScoreBoard.Result.First);
scoreBoard.setResult(4, ScoreBoard.Result.First);
scoreBoard.setResult(5, ScoreBoard.Result.First);
scoreBoard.setResult(6, ScoreBoard.Result.First);
scoreBoard.setResult(7, ScoreBoard.Result.First);
scoreBoard.setResult(8, ScoreBoard.Result.First);
vm.stopPrank();
///////////////// OGANIZER WITHDRAW PREDICTION FEES ////////////////////
vm.startPrank(organizer);
thePredicter.withdrawPredictionFees();
vm.stopPrank();
vm.startPrank(stranger);
thePredicter.withdraw();
vm.stopPrank();
/////////////// PLAYERS SCORE /////////////////////
console.log(scoreBoard.getPlayerScore(stranger)); //4
console.log(scoreBoard.getPlayerScore(stranger2)); //4
console.log(scoreBoard.getPlayerScore(stranger3)); //4
console.log("Stranger:",stranger.balance); //999800000000000000
console.log("Stranger2:",stranger2.balance); //959800000000000000
console.log("Stranger3:",stranger3.balance); //959800000000000000
console.log("ThePredicter:",address(thePredicter).balance); //80000000000000000
}
Updates

Lead Judging Commences

NightHawK Lead Judge 11 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Appeal created

elprofesor Submitter
11 months ago
NightHawK Lead Judge
11 months ago
NightHawK Lead Judge 11 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.