Idea: Move to gasless voting

So say I want to vote “for” some proposal and have 3 tokens locked. I log in the “off-chain vote matching engine app” and identify myself by providing a signature with the private key that corresponds to my account (the account that staked the 3 tokens). Now the system recognizes that I’m an eligible voter with 3 tokens. I declare that I’m voting “for”. The matching engine then looks for eligible voters that are voting “against” and matches us. Basically, the app is telling me: You don’t have to vote because this and that accounts were planning to vote “against” and have committed not to vote, so that your votes cancel each other.

There are going to be 3 less “for” votes but also 3 less “against” votes such that the final result of the vote is not affected. (The matching engine might need to find multiple users on each side to make an exact match in terms of the number of tokens, but this logic is quite straightforward.)

In the case the voters I’m attached to are malicious and end up voting I can see that on the app and either rematch with another voter or just vote on-chain. In most cases we can assume that such behaviour would not occur as it does not achieve anything.

Does this make sense?

What service verifies the signatures and where are the vote intensions stored?

These are delicate issues, but from the top of my head, I’m thinking a P2P app that uses IPFS for storage. The really main concern here is “double-matching” (this is easier to mitigate than the double-spend problem as voting rights cannot be transferred), whereby a malicious user is matched multiple times and none of the accounts he is matched to is are aware that he had already been matched to other accounts.

To avoid this there has to be a mapping that is publicly available and everyone can see which accounts are matched to which accounts. All signatures and the mapping need to be on IPFS and there could be some UI that notifies the user incase his match has voted on-chain and violated their mutual-non-participation agreement.

I’m not for, we should keep votes on-chain

Can you explain why? Is it because there should be a permanent record of the vote?

Would vote yes. We need this.