Our take on blockchainizing elections

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:

  1. Only eligible voters can cast a vote;
  2. Every voter can only vote once;
  3. Counting officials cannot associate a vote with a person;
  4. Nobody can see how each person voted;
  5. Everyone can check if a given person voted or not;
  6. The voter can invalidate a vote if they detect that someone else voted with their credentials, and re-cast a vote under notarial supervision;
  7. The voter cannot prove how he or she voted (to prevent vote buying);
  8. The tally cannot be spoofed or compromised;
  9. 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.

Telegram: cc32d9, EOS account: "cc32dninexxx"

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store