Conversation

In today's implementations of on-chain governance, transactions are signed with a voter's private key and a contract uses this signature to authorize the action. Alternatively, the SC could authorize the voter by verifying a ZK proof of inclusion in a Merkle tree.
1
4
Critically, the transaction bearing the ZK proof does not need to be signed by the original sender. So the original sender can forward their proof to a relayer network to propagate the proof. Which, given a large set of participants, anonymizes the user.
1
3
The smart contract maintains a Merkle tree of identity commitments that users can only insert if they are in possession of an NFT in the collection. Then at the time of the vote, the user builds a proof of inclusion in a browser before forwarding it to the network.
Image
1
4
Why tho?? Beyond the importance of privacy in general, voting systems are particularly sensitive. A contrarian voter may have their decision swayed if they feared social backlash from the community. Proposals are tied to the user's reputation, an anonymous prop has no baggage.
1
4
Next steps: A more complete implementation would also hide the vote totals while the vote is ongoing, the set of owners should be snapshotted at the time of proposal, the contract should support ERC20 style governance, and should be able to manage a real treasury. Soon...
4
Show additional replies, including those that may contain offensive content
Show