-
Notifications
You must be signed in to change notification settings - Fork 321
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
Implement delegator voting #1795
Comments
A delegator vote should consist of a spend proof from the current state commitment tree root to a note commitment for a delegation token that was unspent as of the start height of voting. The vote proof is like a spend proof, but additionally proves the position of the note is strictly less than the start height of voting. The stateful verification in consensus checks that the submitted nullifier is either (a) currently unspent, or (b) has been spent, but was spent after or at the start height of voting. This together with the vote proof shows that the delegation token was unspent at voting period start. In order to do the stateful verification, we need to record the spend height of a nullifier. Currently we only record the struct SpendInfo {
note_source: NoteSource,
spend_height: u64,
} To facilitate this check, we should also add another getter to the note manager that returns |
The default behavior of the planner should be to "roll over" delegation tokens during voting, to minimize linkability. Doing this means that a vote transaction will be |
In order to be able to produce vote proofs, clients should not forget delegation tokens when they are spent. As a first cut, they should never forget delegation tokens. Later, we can add scheduled cleanup for sufficiently old spent delegation tokens. |
The planner needn't permit fine-grained "vote with this note" functionality; it should vote with all the applicable voting weight for the proposal, for all validators at once. |
This ticket tracks delegator voting in the v1 of governance, which does not incorporate flow encryption. However, design discussion here should try to hew to what will later be compatible with flow encryption. Should we use mock flow ciphertexts here?
The text was updated successfully, but these errors were encountered: