Private Voting on Referenda

I’d like to follow up here because of the recent launch of Incognitee for DOT.

Once OpenGov has moved to Asset Hub we could make private voting a reality pretty quick along these rough lines:

Susie holds 100’000 DOT and she wants to use them to vote in OpenGov. However, she wants her vote to be private.

  1. Susie shields 1 DOT to Incognitee to have an account on L2
  2. Susie delegates her voting power to Incognitee vault account on L1 (controlled by the sidechain validateer enclaves via proxy)
  3. Susie casts her vote on incognitee instead of L1
  4. Incognitee tracks referenda and delegations and their voting power in order to count votes internally on L2 and cast a vote on behalf of the vault account by a deadline relative to the referendum progress

Assuming that 15 others have delegated 100’000 DOT to Incognitee, Susie would enjoy a k-anonymity of k=16 with her vote.

Advantages:

  • minimally invasive: no change to Polkadot runtimes.
  • no funds at risk as only small amounts must be shielded to L2. The stash stays on L1.
  • pretty low hanging fruit for Incognitee.
  • non-exclusive approach: Can coexist alongside other privacy enhancements (pluralism!) as long as some voters chose to use it

Thanks for the update Brenzi. Couple of questions for you. To clarify, when someone submits a vote on Integritee is it not immediately cast? Votes are collected until a deadline is met and then submitted on-chain? Can one not vote on Integritee after that first deadline? Or how does that work?

Also, Is the delegated vault account that used to vote unique to each delegator? Or how do you reconcile the votes given you can’t control a delegators size/conviction?

Thanks in advance!

@0xTaylor my suggested design is a sketch to show what would be possible. The details still need to be designed carefully

Anonymity is better if individual votes do not change the vault vote on L1 immediately but are aggreagated first. Depending on the activity, the vote of the vault (pool) could be updated daily or weekly or just once at the end (or a reasonable time before the end of the decision/confirmation period)

It is pooled. Incognitee uses a single vault account for each shard (for each sidechain). Every voter would delegate to that same account and all individual votes would need to be aggregated on L2 to define the vote of the vault on L1. Delegations need to be constantly tracked by Incognitee for accurate aggregation and representation of voting power.

btw. has anyone heard progress from “project glove” which got treasury funding in March '24 to develop private voting? Project Glove: Introducing Capital Efficiency and Pseudo-Anonymity on top of OpenGov | Polkassembly

Haven’t heard any updates - might be worth reaching out to OG Tracker @Cris_Pap to see if he’s had any luck getting updates from them

This is their repo afaik:

1 Like

The developments slowed down a bit but the service seems to be in a good state with latest commits being tested on Rococo.
By following the provided guidelines to run it you get few errors at this stage.
However, its important to note that the proposal’s duration has still ~2 more months to go.
We are monitoring their progress and expecting team’s final update by then.

3 Likes