I’d like to present a motivation and an idea how we could enable private voting on Polkadot referenda.
Why vote privately?
Some may argue that one should stand by their beliefs and cast their vote publicly, like Polkadot governance works now where some people even de-pseudonymize themselves using the identity pallet. For institutional voters, I see the case for transparency here. But please hear me out why privacy matters [video]/[slides] for voting by individuals
tl;dr:
If voting is not private, people tend to vote how they think others expect them to. That leads to very undesirable behavior of conformity, obedience and submission. In contrast, what I’d like to see in our ecosystem is: creativity, exploration and dissent
How?
In the same presentation I share how Integritee can enable private transactions of any fungible asset on a substrate based chain and there is referendum 204 currently running to support this development.
An Integritee privacy sidechain on Polkadot will also allow any user to shield their DOT tokens from the Polkadot relay chain to the private sidechain. As this sidechain is based on a substrate runtime itself, it could be enhanced to mirror referenda on the relay chain trustlessly using its light client and people can cast their vote privately on the sidechain. The sidechain controls the sum of all shielded tokens on the vault pure proxy on L1 and can cast a split vote with the entire stake on the sidechain.
In other terms: people vote privately with their DOT on the sidechain and the result is committed to the relay chain by using convictionVoting.vote(Split(aye: X, Nay: Y)
The topic of conviction could be sorted by aggregation, but this would need a change to the convictionVoting pallet, as it currently doesn’t support conviction if split-voting
I’d be happy to elaborate on the technical solution, but I believe we should discuss about principles first, assuming that the technical possibility is at reach. Looking forward to your opinions