The intention of the Protocol is transfering remaining rewards to all claimants. However, the remaining rewards is a storage variable, which is calculated by using its own value instead of using the actual balance of the contest. If the actual remaining funds in the contest differ from that variable, it is possible that funds are stuck or not enough funds are available to be distributed to the claimants, which leads to failing transfers (insufficient funds of the Pot).
If somehow the calculation of Pot::remainingRewards
is messed up, the Pot::managerCut
and Pot::claimantCut
are not calculated correctly, which breaks the intended functionality of the protocol.
The distribution of the remaining rewards is not calculated correctly in Pot::closePot, which leads to stuck funds and incorrect distribution — either the manager and claimants receive smaller cuts, or they receive disproportionately large fractions of the pot, leaving the last claimants in the loop with nothing.
Manual Review
Don't update the storage variable to track the rewards in the pot by calculating the remaining rewards with the value itself.
Instead, use actual balance of the contest and calculate the cuts based on this value.
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.