[ZKS-08][HackerOne-2289066] Make leader election tamper resistant #2378
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
This PR updates the leader election algorithm to be tamper resistant by removing mutable fields (
starting_round
andtotal_stake
) from the seed and changing the committee sorting to be based on the address x-coordinate.Leader election will now be more predictable (if the committee sets do not change), but should no longer be able to be manipulated by changing stake via
bond/unbond
s.Discussion can be found here: https://github.com/AleoHQ/snarkOS/issues/2986#issuecomment-1955791181
Test Plan
The current tests indicate that this approach is still stake weighted properly.
Audit Finding: [zksecurity 08] Potentially Biased Leader Election