Protecting privacy in token voting #2614
Replies: 3 comments 5 replies
-
Idea from @ctrlc03: imo that might be possible by doing this: Do offchain census of who is elegible. For example I want to start a proposal, I take a snapshot of chain at this time, make a merkle tree of elegible addresses, call You can already see that this becomes prone to censoring as I could just decide to not include certain users. Sure you can see later that user come to you saying they have been censored, but maybe the proposal is already completed or there's no way to stop it by the time they realise. You come to register and you provide a zk proof of owning the wallet part of that census tree without revealing which wallet (need to be able to prove ECDSA in a circuit which is not efficient AFAIK), then submit your already packaged state leaf = { MACIKey, token balance } Or you can create bands of voice credits: But then you gotta convince people that this is a good idea - why do i get same credits for holding more tokens than someone else |
Beta Was this translation helpful? Give feedback.
-
Example of onchain logic where token balance would currently be revealed |
Beta Was this translation helpful? Give feedback.
-
^ Above was based on incorrect assumptions about how MACI works Or we have other options, such as voting bands/levels. E.g. 10 tokens, 20 tokens, 30 tokens etc. As mentioned, this could prove controversial as it would be deemed unfair for unequal token holders to be grouped together. cc @ctrlc03 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
One point on token voting with MACI raised by Aragon is that if there is a signup that corresponds exactly to my token balance, it is easy enough to see onchain which way I voted. Given that token voting is still so ubiquitous for DAO governance, and we want to support DAO voting - do we need to think about the privacy implications of this in V4?
Even if there is no link between an account and a maci vote, the set of all token holders would be small enough, that if you could see the voice credits on signup, you could just search for the account with that balance. Or if it was not full credits voting for each token, calculate what the voice credit amount equals in token amount based on the onchain logic that defines this.
Individual voice credits amounts are already combined into yes, no, or abstain. The public outputs are just those 3 numbers, and then we have a zkp of correct computation - you only see the tally (sum of votes for an option which in full credits mode is the sum of voice credits spent for an option), not individual votes.
Beta Was this translation helpful? Give feedback.
All reactions