-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reconcile differences between threshold calculation here and in paper. #23
Comments
Could you elaborate on the tradeoff between safety and liveness? I mean, for n < 4 where f = 0, we have n = 1 ==> threshold >= (n + f + 1) / 2 = (1 + 0 + 1) / 2 = 1 and for n > 3 where f >= 1, we have n >= 3f + 1 ==> (n + f + 1) / 2 >= (4f + 2) / 2 = 2f + 1 so >= (n + f + 1) / 2 is always a safe threshold for a supermajority, isn't it? Using n - f seems to unnecessarily require one more vote for a supermajority than necessary whenever n is a multiple of 3. |
Well, you're probably right, but I don't think it makes much difference in practice. If you get that 1 extra misbehaving validator, Liveness failures in GRANDPA are easier to recover from than safety failures. We could make this configurable, for those who'd like to make a different trade-off. |
I see, thanks. So to summarise: Both I'm not sure that distinction is really worth deviating from the paper, mainly because any deviation that is not very prominently documented is a potential cause of confusion for anyone reviewing the code, but if |
The paper uses (n+f+1)/2 and we use n-f -- for small authority sets this is
a tradeoff in safety and liveness.
cc @AlistairStewart
The text was updated successfully, but these errors were encountered: