Description
Problem
For the 1 Human 1 Vote Dispute Kit, it is possible that some large staked jurors might not be registered on Proof of Humanity. In such a case, they would end up being drawn often from the sortition tree but later filtered out. It is highly inefficient and costly.
Proposed solution
Some team members have suggested that KlerosCore should allow a DisputeKit to unstake such ineligible jurors as follow:
kleros-v2/contracts/src/arbitration/dispute-kits/DisputeKitSybilResistant.sol
Lines 233 to 241 in 51ec1d2
kleros-v2/contracts/src/arbitration/KlerosCore.sol
Lines 481 to 487 in 51ec1d2
Analysis
A) If there are 2 Dispute Kits with different eligibility criteria using the same subcourt
Then one Dispute Kit might decide to unstake a juror while this juror is still eligible in the other Dispute Kit. It would be unfair to the juror as he would miss some opportunities. There is no easy way to prevent that.
B) Should unstaking ineligible jurors take place in the usual Staking phase?
- Yes because that's what phases are made for. But then the juror could re-stake immediately after.
- No and by-pass the DelayedStakes to prevent the juror from re-staking immediately after, but this might still happen if it takes more than maxDrawingTime to draw and KlerosCore cycles through the phases. In addition it breaks the design of the phases and creates a new path for unstaking.