The year 2020 has proved to be a challenging one to say the least. There are a multitude of things that we need to focus on as a society if we want to solve the challenges of modern times. The one question I am deeply concerned about is How do we fix our democracy? I don’t know the answer yet but I believe our first step should be to engage every voice in the country, and that starts with voting.
We do not have government by the majority. We have government by the majority who participate.Thomas Jefferson, Third President of the United States
Ancient, is a subtle way to describe our existing voting systems. With the massive digital transformations underway in each sector and industry, consumers are not habitual to standing in lines anymore. Be it ordering a burger, buying tickets to a concert or even a car, we expect to do it online. While voting is a more involved process as compared to ordering a burger, digitalizing it will make it a human right rather than the privilege that it is today. The good news is that we have the technology to make it happen. As a curious PM, I dig deeper into understanding how we can use Blockchain to revolutionize the way we vote.
What is blockchain?
In its literal sense, it is a chain of blocks held together in a specific order. Each block stores information about a transaction (date, time, amount, digital signature). The entire blockchain is decentralized, which means that it is stored on multiple computers called nodes. In short, blockchain is a decentralized public ledger that can be used to store transactional data.
The first block in a blockchain is called the genesis block. Each block following this will have a reference to the previous block (think of this as a pointer). All blocks are split into two parts – a header and a body. The body stores a series of transactions which are hashed using cryptography to create a string called the merkle root. The merkle root is stored in the header of the block. A block only gets added to the blockchain when it is verified by a majority of the nodes.
To create the chain, each block contains the header (merkle root) of the previous block. This ensures that the data cannot be modified. Altering even a single transaction would change the merkle root of that block and it would no longer match the header of the following blocks. In such a scenario, every other node that has a copy of the blockchain will realize that a block has been tampered with. This results in an automatic rejection of the change and the old blockchain is retained. This makes blockchains immutable and secure.
Online voting has been riddled with security breaches since their inception. Researchers easily breached the voting machines to be used in the 2020 elections. To democratize digital voting, it has to be tamper proof, easy to use and accessible. This is where blockchain apps come into picture.
A number of private companies and researchers have published their versions of digital voting with blockchain technology. The ideas below are an aggregation of the best recommendations from all the whitepapers I have read. I will link all of the resources I have used for this article below.
There is a common misconception that voting cannot be done online in a secure way. However, the introduction of blockchain technology is changing the conversation.Adam Ernest, CEO of FollowMyVote
The idea of blockchain voting is based on digital assets called Tokens. One of the most popular blockchains out there is Ethereum. This is a currency similar to bitcoin but also blockchain. Ethereum based blockchain apps can issue any number of tokens to its users. The movement of these tokens between addresses can be tracked on the blockchain. To vote, the government would simply issue a single token to each authorized voters. On election day, the voters would send this token to an address that would represent their candidate of choice. At the end, the government would tally up the number of tokens each address (candidate) has and the one with the most wins. This is the simplistic version of the system.
Researchers at Plymouth have published a whitepaper detailing each process. They suggest digital voting should be integrated with the current voting systems such that voting becomes more accessible to all people. Here is a summary with my enhancements to it:
How will the users register to vote online?
Verifying the identity of the voter is essential. This is done during the registration process. A voter can register for online voting using an app. All mail-in registrations will automatically be enrolled for offline voting to maintain the security of the system.
To register using the app, a user has to keep their camera turned on and provide their SSN, full address, contact details and upload copies of documents such as passport or driving license. Submission of this data will create a hashed transaction on the Voter_Details blockchain. An automated miner will look at this transaction and based on the information provided, it will decide whether the user should be granted a vote or not. If the user is verified and granted a vote then another transaction is recorded on the Voter_Details blockchain.
On approval, the government will ship out a smart voter registration card that will incorporates NFC technology. This will be useful at the time of voting. All mail-in registrants will also receive the smart card so that they have the option of voting online in the future. At any point, a mail-in registrant can use the app to provide additional details required for security and proceed with online voting. Once registered, users will have to go through a series of authentications every time they access the app. Government officials can constantly audit the systems to improve the security features.
How will users vote once polls are open?
On the day of voting, the user first need to authenticate to the app through an ID and password, SSN and zip code. Next, the user taps the NFC smart card to the phone. The voter card contains the Vote (token) that will be used for voting. The token can be replenished for each election the user is eligible to participate in. If the token on the smart card exists i.e the user has not yet voted either online or offline, then the user is allowed to proceed. Depending on the type of polls, local or national, the user is shown appropriate candidate options based on the constituency they live in. This will enable citizens across the globe to participate in every election.
Once the user has voted for a candidate, the transaction is recorded on a Vote_Submitted blockchain which is different from the Voter_Details blockchain. This is done to preserve the anonymity of the voter. The token is then removed from the smart card. Similar process can be followed at the booth wherein the user has to use the smart card to vote and the token expires once the vote is submitted.
How will the votes be stored?
As per the Plymouth researchers, storing and counting the vote will require the network to be divided into 3 tiers. Simply put, there will be local nodes, constituency nodes and national nodes as shown in the diagram below.
Before we look at the significance of each node, the 3 tiers allows for increased security. No one person will be able to determine the full outcome of the election even if they manage to hack into a few nodes.
Each polling booth can be thought of as the local node. Every N number of votes from a polling booth will form a block of transactions. The transactions will be encrypted using the public key of the constituency node. All local nodes within a constituency can communicate with each other and the constituency node they are associated with.
Each county can be thought of as a constituency. Each constituency node will have a different public/private key. The public keys are published to the local nodes associated to the constituency while the private keys are held back until the day of the results. In case a hacker gets the private key of the constituency node, they will only be able to determine the results of that county and not the entire election.
The government can designate various organizations to be the national node. The job of the national node is to constantly mine each blocks to the Vote_Submitted blockchain. The government can create regulations for national nodes to ensure maximum security.
Counting the votes and publishing election results
On the day of the results, constituency nodes will publish the private keys to their respective national nodes. Each national node can then decrypt the votes on each blockchain. Once decrypted, the system will have to calculate how many tokens each candidate has received. The candidate with the highest number of tokens wins the election
Since Vote_Submitted is a public blockchain, after the election day, any person could audit the blockchain to make sure the results published are accurate. As we know, the blockchain is immutable and decentralized which means no hacker, not even the government themselves will be able to fraud the system. The Voter_Details blockchain should be a private blockchain to maintain the anonymity of each voter.
- Voters are tech savvy, have personal smartphones with internet connections that support NFC technology
- Polling booths have internet connections
- Accessibility is not a concern
- Once a vote has been cast, no voter will want to re-cast the vote or dispute it
Rounding it up
While it will not be easy to implement blockchain technology for voting, great leaders with the right vision can make it possible. It will require prioritization at the highest levels of the government, collaboration with the various democracies of the world and above all, the belief that this can work.