-
Notifications
You must be signed in to change notification settings - Fork 997
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
Replace committee exponential backoff with max progress #808
Conversation
Removes the mechanism that only rotates committees if blocks have been finalized and every shard has been crosslinked or at exponentially decreasing intervals, and replaces it with a rule that shard committees can only progress a maximum of 64 epochs at a time to preserve the invariant that maximum possible work required per epoch for a validator is O(1).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
I don't think you can just get rid of |
Your validator set needs to stay stable (at least until I write the withdrawal queue -> exit queue change), but the shuffling does not. |
Right, but your validator set won't stay stable in this method. EDIT: You are also going to run into issues doing the randomness dynamically. If there are short range forks, then your shuffling could be different which would lead to unslashable attestations across forks. |
This is why slashing uses SlashableAttestations (possibly being renamed StandaloneAttestations) instead of using regular attestations; that solves this problem. Note that the need to use SlashableAttestations is unavoidable anyway because even in the current system, we reshuffle with exponential backoff even if we don't finalize, and you can get finality breaks from equivocations between two different epochs. Shuffling is relevant only to crosslinks and slot selection; it has near-zero relevance to the Casper finalization mechanism, which treats all active validators in each epoch identically (not exactly zero because if you're close to the end of an epoch it's more likely your attestation will have to wait an extra epoch to be processed, but that's a small detail...) So I think it's good to treat (i) justification/finality and (ii) shuffling as completely separate mechanics. |
…into vbuterin-patch-18
Removes the mechanism that only rotates committees if blocks have been finalized and every shard has been crosslinked or at exponentially decreasing intervals, and replaces it with a rule that shard committees can only progress a maximum of 64 epochs at a time to preserve the invariant that maximum possible work required per epoch for a validator is O(1).
This also fixes a bug in
process_crosslink
regarding the use ofprevious_epoch
.