As a software developer, I routinely get asked this question and frequently see it being asked online too; it seemed like a great question to pose for the wonderful StackExchange community.

For a quick bit of context, the general idea of public ledgers is everybody can see anonymous information (the votes cast, in this case), and they can also be cryptographically validated so anyone can guarantee it's all correct too.

So, essentially, do you think it's possible to use a digital public ledger system (like, for example, Blockchain) in major democratic elections? Would it meet the requirements we expect a democratic election to satisfy?

On the face of it, it seems like it would be perfect for voting; after all, it should make the process far more transparent , faster, far less prone to corruption and may ultimately turn around those declining voter turnouts because you can vote from anywhere. Or does it?

  • 9
    Important. People validating their own votes is a bad thing by itself. It sounds nice until you realice that, if you have any kind of way to prove which way you voted, someone can say you before the election day: "In a couple of days I'll go to your home with a $10 bill and a wrench, if you can prove that you voted the right way you'll get the note, if you cannot you'll get the wrench on your head" (or just the note part, or just the wrench part). For people that are used to functional democracies this might sound extreme, but in other parts of the world that is how it could work. – SJuan76 Nov 18 '16 at 13:53
  • @SJuan76 I completely agree; a lot of people paint it as something they want and should be able to do, but it has this major bribery flaw (mentioned in my answer below). – Luke Briggs Nov 18 '16 at 13:57
  • 3
    @SJuan76 - US was (arguably) a functional democracy - or at least a democratic republic if you want to be technical - for 200+ years and this wasn't unheard of 100 years ago, and for that matter, still happens to people stupid enough to admit voting for Trump. So no, not even extreme in a functioning democracy. – user4012 Nov 18 '16 at 15:06
  • @SJuan76 - having made that nitpick, your argument against ability to confirm your own vote post-election is 100% spot on, and any proposed solution that doesn't respect it is majorly flawed. – user4012 Nov 18 '16 at 15:14
  • I had this exact question and postulated the exact same kind of solution right after the US election. It would be interesting to see if you could make voting as easy as sending a text message that it would make people more likely to vote. I don't know if it would, but it would be interesting to see the results. – Rizowski Nov 18 '16 at 18:57

No, it's not possible.

At least, not without violating multiple fundamental principles of democracy or making it seriously vulnerable. This is primarily because of the authenticity vs. voter anonymity problem. Consider this:

  • A voter must be a citizen (Authentic)
  • Their voting choices must not be known, especially not on a public ledger (Anonymous)
  • The vote they cast isn't tampered with (Valid)
  • A voter shouldn't be able to prove who they voted for (Bribery)
  • A public final count so multiple people can validate the system as a whole.

Ledger systems are supposed to guarantee validity - nobody can cook the numbers - but watch what happens when authenticity and anonymity are involved in this example voting system:

  1. I create a cryptographic "key pair" - a private key that only I know and a public key that everybody can see. The Government signs my public key as proof that I'm a citizen using a Government private key.
  2. I place my vote. I sign my choice using my private key and add it along with the Government signature to the public ledger for everybody to see.

It has these properties:

  • Nobody knows the Government private key so they can't place non-authentic votes.
  • Nobody should know my private key so they can't tamper with my vote either.
  • The Government signature provides authenticity and no other information is on the ledger, so it's anonymous too.
  • The final count is public because anybody can add together the votes.

Nice, right? Nope! It actually scores 1/5:

  • The Government can use the signature to identify me and my vote. After all, the signature originated from them when they verified me as a citizen and it's also right there on the ledger next to my choices.
  • The Government can create as many "citizens" as they want, completely undermining both authenticity and validity. Anybody looking at the ledger won't be able to notice anything.
  • Verifying a signature gives a cryptographic guarantee of exactly who I voted for; it's valid, sure, but it also opens up easy ways for people to bribe me.

So, anonymity is in contention with authenticity and validity is at odds with the ability to be bribed. Yikes.

However, notice that two signatures are involved. This can define a "chain of trust" between the Government and my vote. Maybe adding a few extra 'links' in the chain would at least separate the Government from being able to interfere quite that much? Unfortunately, this too is flawed - you can make the chain infinitely long and some entity along that chain will always be able to identify the voter and their vote. At some point, authenticity has to swap for anonymity. At the swap point, both your vote and identity are available.

Why is a public final count important?

Firstly, a quick side track: As mentioned in Hopelessn00b's answer, it is possible if you have a secret final count. The public ledger contains encrypted data effectively becoming a little useless to anybody but the Government. Estonia's e-Voting system currently has a secret final count - it's not a public ledger but the principle is the same. A public count is particularly important if, as seen in Estonia, the final vote counter is a single server that has been shown to be compromisable remotely. This means their entire democracy depends on a tiny group of people who make a series of rookie mistakes.

What about some kind of hybrid? Surely we can use something?

Don't get me wrong here; I'd love to see a system like this. Maybe someday a breakthrough will happen. A great digital boost to democracy everywhere - democracy so personal that it enters our homes. Let's just entertain the idea with a mixture of physical voting and see what happens.

So, we need to break the link between authenticity and anonymity and we can do that by flipping the voting process around - instead of dropping off your vote into a randomising pile, you pick up something from a randomising pile. Specifically, you pick up a pre-signed citizen ID. Next, in order to make it usable, you build a chain of trust relative to other citizens - for example, your parents could sign your new ID.

We're building trust chains of citizens here. It's still completely flawed however - the Government can still create as many fake citizens as it secretly wants and it'll always be easy to bribe, but at least it requires multiple people (2..) to pull off.


In order to list out votes in a public ledger, so anyone can count them up to conclude the results and confirm their vote was included, we have to give up the secret ballot. Alternatively we give up the public count but in doing so we make the public ledger useless. We also make ourselves vulnerable to fake citizens being created by the Government with ease, major digital security threats and admin failures due to the layers of complexity. Note that many of these also apply to e-voting in general.

It makes for an interesting concept none the less, but it doesn't come close to beating the simplicity and effectiveness of paper.

| improve this answer | |
  • 3
    Of course most of these objections apply to existing paper based systems, with the important proviso that it's more expensive and involves more people to hijack the system. – origimbo Nov 18 '16 at 15:39
  • 1
    @origimbo Exactly - postal voting violates anonymity, but at least being bribed is harder because they can't be verified. Flooding the system with lots of fake paper ballots would be tricky if not outright obvious due to the large amounts of people involved. – Luke Briggs Nov 18 '16 at 15:51
  • 1
    Note that your critique applies to blockchain models which rely on a public ledger syetem that is not anonymized. Some newer cryptocurrenies, such as Monero, are designed to anonymize transactions and could, in theory, be adapted for voting purposes as a result of this design consideration. – HopelessN00b Nov 18 '16 at 22:13
  • 2
    Your claim is valid only if we assume that nobody can be trusted. However it would be possible to use something like a threshold encryption scheme which guarantees validity+anonymity as far as no more than k entities are corrupted (and you could choose k as big as you like...). – Bakuriu Nov 18 '16 at 22:53
  • 1
    @RedOculus I think that would only work out if everywhere had high voter turnouts - there are always large chunks of the population who simply don't bother voting, so that gives a nice large margin to fit fake voters. E.g. a 1% swing in the US election - likely enough to flip the outcome - would make a 55% turnout appear to have been 56-57% instead. – Luke Briggs Sep 22 '17 at 22:04


It all depends on the protocol. Luke Briggs' answer does a great job of stating the requirements for such a protocol and shows a protocol that wouldn't work. The question is whether there is a protocol that could meet the requirements.

I don't believe one has been found but one can get quite close by adding indirection. Below is a protocol that I've just thought up (I doubt it is original) which comes quite close but fails on one stage. Can this failure be closed? I'm not sure but one can do very interesting things with cryptography, such as zero knowledge proofs, so I am hopeful.

Example protocol

Every registered voter has a private/public key pair (only they know the private key) as does the government.

For each vote, the voter generates a private/public key pair and sends the generated public key to the government signed with their personal private key (they send their personal public key too). They encrypt the message using the governments public key.

The government decrypts the message, verifies the signature and checks that the person hasn't previously sent a key for this election. It does this by maintaining a list of registered voter's personal public keys with a boolean flag that it flips when it has received a verified key.

The government then publishes the generated key on a public blockchain ledger signed by the government. The published key may include metdata e.g. state, county, to help with statistics, questionable over/under voting etc. Note, the government does not store or publish the relationship between the personal and generated keys.

Once the generated public key is published, the voter votes by creating an entry on a public ledger with the vote and the generated public key both signed by the generated private key.

The votes can then be checked by anyone by a) confirming that the vote was indeed signed by the respective key and b) that no-one has voted already with that key.

Once validated, the voter then throws away their generated private key.

Advantages of this system:

  1. Only registered voters can vote and only once
  2. The voting portion of the scheme is fully public and publicly verifiable
  3. The voting part cannot be tied back to an individual voter
  4. It's public how many voters will vote


  1. An unscrupulous government can know the relationship between the voter and their vote by storing the relationship between the personal and generated public keys.
  2. An unscrupulous government can "create voters" by adding generated keys that aren't tied to voters and votring with them. This can be mitigated with metadata as described or publshing the (voter, flag) list which has other issues.
| improve this answer | |
  • 2
    Unfortunately this one is the "chain of trust" approach (or at least it appears to be!) where you've got Gov - Person - Vote. In general, if the Government can store something, assume they probably will. The hard part is the Government can hit a "generate zombie hoard" button and create as many signed "citizens" as they want - that's still possible here too. – Luke Briggs Nov 18 '16 at 13:39
  • 1
    @LukeBriggs I do not get the "generate zombie hoard" claim, because from what I understood from both answers you could just mandate that each key pair must be linked to a particular individual in the polling rolls, making it easy to spot "zombies". Anyway, the lack of anonymity is not a "disadvantage", it is a fatal flaw because it negates a basic principle that ensures that voters are free to cast their ballot. – SJuan76 Nov 18 '16 at 13:46
  • @Luke Briggs I agree with you on the first part and I mention this as the main limitation. Less so on the second part. As the keys are published, especially if they're published with some metadata, gross count issues will be more difficult to hide, much more than today. – Alex Nov 18 '16 at 13:49
  • @SJuan76 The "zombie hoard" problem comes about if you can't, independently, tie a vote directly to a person, which you can't (deliberately) in my scheme. So an unscrupulous government could generate a bunch of keys and vote with them. In Luke's scheme this is much harder as you can tie the vote directly to the voter (so they would need to fake the voter register) but, well, it means everyone knows who you voted for. – Alex Nov 18 '16 at 13:54
  • 1
    As long we're talking about zombies, it's probably worth being pedantic and talking about a zombie horde. – BrenBarn Nov 19 '16 at 7:44


First off, in simplest implementation, there is no reason that even a public ledger system would be unsuitable to replace paper ballots or current e-voting systems. The general flow of voting under current systems involves a voter showing up to a polling place, the officials at the polling place verifying their eligibility to vote, and then the voter being permitted to cast their vote on a ballot or computer voting system. Paper ballots and/or usage of e-voting machines in this scenario could easily be replaced by a single-use blockchain address, and a person would not be any more easily linked to their vote than under the current system. Instead of picking up a paper ballot that you insert into a mechanical voting machine, you could pick up a smartcard that you insert into blockchain-linked voting machine, or instead of making selections from a touch screen on an e-voting machine that records a vote onto a local database, you could make selections from a touch screen on an e-voing machine that records votes to a blockchain.

Additionally, not all blockchains are the same, or even similar.

The oldest and currently most popular crypto currencies (such as BitCoin) use a relatively simple blockchain design that is essentially a public ledger. The self-answer to this question does a good job of laying out why this type of system is problematic to voting in elections, but this is not the only type of blockchain in existence.

For example, Etherium uses a slightly different model which allows voting and certain types of contract enforcement, and is, in fact, being trialed for certain types of elections and voting by the Ukrainian government.

There are also cryptocurrencies utilizing blockchain technologies and featuring anonymous transactions, Monero being the prime example.

Using a blockchain based on ring-signature cryptography could, in theory, allow people to have a re-usable voting blockchain address that could be authenticated, with the transactions/votes being anonymous, but also verifiable, fulfilling all the the basic requirements of a voting system, and we know it's possible to include voting mechanisms into a blockchain because Etherium does it. We're a long ways off from actually seeing something like this in practice, but it is at least, theoretically possible.

| improve this answer | |
  • 2
    There's actually major flaws with this kind of setup - all the surrounding infrastructure is extremely vulnerable (a voting machine which isn't actually doing what its interface says, for example). The final count is only possible in secret too, which ultimately undermines the added complexity. – Luke Briggs Nov 18 '16 at 23:10
  • 1
    @LukeBriggs That's a problem with but analog voting systems, and the current implementations of digital voting too, so I don't see why it's relevant to the discussion of using blockchains for voting. The question you asked isn't whether blockchains are a silver bullet to allow perfect voting systems, but whether or not they can be used for the purpose of public voting. They can (and in fact, even are). – HopelessN00b Nov 18 '16 at 23:16
  • E-voting is a lot more vulnerable though, simply because of how widespread a small software change can get. Currently though they're not being used for public voting; researched yes - e-vox is essentially a smart contract system which doesn't seem to currently have a solution for a wider general election. Chamber voting of course has very different requirements. – Luke Briggs Nov 18 '16 at 23:30
  • 1
    @LukeBriggs I'm well aware. Those vulnerabilities (and the costs of a public, remote voting system) are answers to the question of why no one's built such a system yet, but not answers to the question you posed, which is whether or not it's possible to build such a system using blockchain or public ledger technologies. – HopelessN00b Nov 18 '16 at 23:35
  • Very true; I would still argue that it "Isn't possible without violating fundamentals" however on the basis of the secret final count; I'll update my answer to address that one. – Luke Briggs Nov 18 '16 at 23:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .