The first open source, proof of concept demo of voting on the blockchain
We’ve built a fully working, open source demo of a presidential election running on the Proton Blockchain. You can try the demo here
Here’s how the voting works:
1. First step, you log in with your blockchain authenticated ID. In Proton, this is an @name, similar to a Twitter @name. Mine is @fred. Each @name has a public and private key pair associated with it. This key pair is created and stored on your mobile wallet. You can download one here.
2. Second step, you need to verify your ID to see if you are eligible to vote. To do this you submit a Drivers License and pass a Liveness Test. Ideally you would use a software such as persona for this, combined with manual review to see if you qualify. Proton chain is architected to store this KYC info on chain, which could help in the process, but there certainly would be a manual component.
3. If qualified, the ID server would generate a unique ID_KEY that would be user to generate a ballot. This is to ensure that the ballot server does not actually have any traceable user information. Once this ID_KEY has been determined as valid, the ballot server signs it with the user’s mobile wallet. This signature is passed to the ballot server, which can re-extract the public key.
4. The public ballot key together with the vote is recorded on chain. Every single participant can verify that their vote is accurately tabulated, but yet private. People cannot vote twice, and the system records no user-name vote combinations.
The source code is here: https://github.com/ProtonProtocol/ProtonVoting