KIP-50 - increase jurorsforcourtjump for General court

I propose to increase jurorsforcourtjump for General court from the current 511 to 2047. This enables cases that get appealed from lower courts to have several rounds in general if needed, which improves the game theory in scenarios where the lower court was attacked.


Agree with you there needs an update on this. Considering the current active jurors’ number: 782 (from it might be better to increase it to 1023 as of now.

That seems reasonable, can we get a snapshot with both numbers and a “no change” option?

Personally, I don’t have a strong opinion on 511 vs 1023 vs 2047. However, I’ll share some of the ways that I think about this parameter in case that can help people decide.

First, the possibility for further appeals gives a lot of game theoretic defenses against various attacks including bribes, p+epsilon attacks, and pre-revelation attacks. Some but not all of these game theoretic advantages are reduced when you get to the point of drawing such a large sample of jurors compared to the amounts people have staked that a subsequent draw is statistically very likely to just give you back the same people. Still it can be useful to err on the side of having the possibility for a few appeal rounds beyond what is typically reached so that one only has unappealable rounds in very rare occasions.

Second, even with a draw of 511 or more jurors there is some “sampling error” in the sense that if a case divides the community enough, the outcome can depend on exactly which jurors are randomly chosen. Specifically, imagine that a proportion of p of tokens staked in the general court correspond to people who would vote X on a case and 1-p correspond to people who would vote Y on a case. Then if p>.5, X represents the outcome you would get if you had a sufficiently large sample of jurors. One can see with calculators such as this that

p=.6 : P(Y wins|511 jurors)=.000002, P(Y wins|1023 jurors)<.000001, P(Y wins|2047 jurors)<.000001
p=.55 : P(Y wins|511 jurors)=.012, P(Y wins|1023 jurors)=.00067, P(Y wins|2047 jurors)=.000003
p=.53 : P(Y wins|511 jurors)=.087, P(Y wins|1023 jurors)=.024, P(Y wins|2047 jurors)=.0033

This gives a sense of how close an “edge case” needs to be for an extra round of voting to be likely to make a difference. This effect isn’t likely to make a difference in a “60-40” type case for any of the choices, but it can in a “55-45” or “53-47” type case.

Note that in v2 if there are enough appeals the plan is just to go to a module where there is no more random sampling and instead everyone votes (and at the same time expresses a preference on whether they think the court should fork if their side loses).

On the other hand, increasing this parameter can raise the threshold for how much the community needs to crowdfund to fend off “frivolous appeal” attacks. Note that the dapps with crowdfunding mechanisms have “stake multipliers” that determine the amounts that need to be raised on behalf of each side. These values are currently such that the appeal costs to fund the winning side of the previous round are typically 1.5 - 2 times the cost of juror fees in the following appeal round. (The extra .5-1 times the juror fees is used as a reward for the crowdfunders of the other side if they ultimately win.) The average per juror fee that I proposed in KIP-49 is .017 ETH in the general court.

So if you imagine funding an outcome that wins each round of its dispute against a frivolous appeal attack in the general court from 3 jurors all the way to 511 jurors this would require roughly 2*.017*(3+7+…+255+511)=34.4 ETH. If one can appeal to 1023 this becomes 2*.017*(3+7+…+511+1023)=69.2 ETH, and if one can appeal to 2047 the community needs to be able to crowdfund up to 2*.017*(3+7+…+1023+2047)=138.8 ETH.