The Associated Press has recently announced that they would publish the US election progress on EOS and Ethereum blockchains. At EOS Amsterdam, we quickly built a tool that collects this information from EOS in real time and stores in a MySQL database, which we opened up for public access.
The blockchain data is being collected using Chronicle software. Its development was first co-sponsored by 15 teams on EOS in 2018 (12 EOS block producers, Telos launch team, Worbli, and Lynx wallet), and later funded by two Telos WPS grants.
It’s a good step toward transparency in elections. We have now a timestamped and irreversible information about ballot counting for every district. Still it doesn’t eliminate the human factor in ballot delivery and counting.
In July 2020, I wrote a design draft for on-chain voting. It guarantees anonymity of votes, and delivery of every vote to the counting service. It has a few drawbacks though:
- It does not provide the information that a particular person has cast a vote (such information is required by law in many countries);
- It depends on third-party entities performing the vote counting and vote validation.
Still we hope that this draft can ignite the engineering effort in designing the future on-chain voting system. And we’ve got EOSIO, a high-performance blockchain software and smart contract execution environment. It’s difficult to imagine a better platform for such an important application.
After discussing it with EOSIO engineers, here’s a list of functional requirements for an election protocol:
- Only eligible voters can cast a vote;
- Every voter can only vote once;
- Counting officials cannot associate a vote with a person;
- Nobody can see how each person voted;
- Everyone can check if a given person voted or not;
- The voter can invalidate a vote if they detect that someone else voted with their credentials, and re-cast a vote under notarial supervision;
- The voter cannot prove how he or she voted (to prevent vote buying);
- The tally cannot be spoofed or compromised;
- After the counting is finished, it must be transparent and auditable by anyone.
EDIT2: the rule #7 is probably impossible. But the system needs to make vote buying impractical or too expensive.
I started a telegram group for further discussions.