Let’s first note that although there are plenty of DAO voting apps, including voting for block producers on Proton, EOS and other chains, this DOES NOT solve the problem, as all votes are public.
So let’s set down the requirements for blockchain voting
1. Voting needs to be limited to a set of QUALIFIED voters for each vote. For example, I should be able to vote in California, but not Texas.
2. Identity of voters needs to confirmed in the process. This is critical to make sure you don’t have vote fraud — people voting for other people, or voting multiple times.
3. The blockchain on which you are running must have free accounts. You can’t expect voters to pay for accounts. This eliminates EOS as a blockchain.
4. The voting process must be free. Voters can’t pay gas. This eliminates Ethereum and most other blockchains.
5. Voting must be SECRET. I must be able to secretly vote for the candidate of my choice.
6. Your vote must be CONFIRMABLE. If I vote for Trump, I want to see evidence that my vote has been recorded as Trump, not Biden.
7. The voting process must be AUDITABLE. After the vote, it must be very clear that the vote was done correctly.
These are the major elements. Now, as I write this (and point this out to me if I am wrong), there is no system out there which is:
- open source
- and running on a public blockchain.
I intend to build that system on Proton to show people / governments how it should be done.
The first element of this is KYC. This is being built into Proton as a chain level thing. NO CHAIN HAS THIS.
t’s very critical, from the voting administrator’s perspective, that every ballot goes out to a confirmed person. That means
- either Identities need to be confirmed for each vote (expensive) or
- identities are confirmed and can be verified on chain (Proton)
This doesn’t *solve* the ballot preparation problem, but it assists it. If I know that @fred is in fact Fred Krueger. And, if I provide additional proof of residence for example, then I can be deemed eligible in a local or state wide vote
Now, we get to the ballot preparation. Assuming that individuals apply for ballots, and are accepted, the ballot must go out to them in some form. We have a way for this to happen, with tokens, on the blockchain itself.
Because the blockchain has an immutable history, and because these ballots can be cryptographically tied to the user’s @name we can ensure that only people with accurate ballots vote.
We can also, with smart contracts (demo coming up in the near future, I assure you), record all votes in a cryptographic fashion on chain.
So that the chain will record JXKQ3Jo5kLezR62Jc1oke4JCWTCAnWm6PvyY6dyPD92LF2ysrm voted for Trump
I and only I can verify that @fred corresponded to JXKQ3Jo5kLezR62Jc1oke4JCWTCAnWm6PvyY6dyPD92LF2ysrm
All votes can be tallied in a perfectly rigorous way with timestamps, and a clear audit.
This can work on Proton, or any fork of Proton (should the government wish to fork Proton, it’s open source, and we can help with apps and wallets)
1. the technology is actually ready TODAY, and could be deployed for the next midterm election
2. Proton / Metal has unique technical understanding of these problems, as well as unique experience with Blockchain AND Wallets / Apps.
3. In the near future we expect to be able to DEMO everything discussed here.