System design: Preventing/detecting vote fraud

I've seen a lot of evidence of vote fraud in the US 2020 election, that is now the subject of Federal and State lawsuits (see: Hammer / Scorecard / Dominion) [NY Post][1]

[More Links][2]

I wondered how I might put together a decent voting system. It really doesn't seem that difficult.

I present the following skeleton outline of such a system.

A Central Govt could issue Hashes of a people's Dob + Name plus a random 4 digit. (or other identifying information)

This database is held centrally by Govt, (possibly blockchain)

The hash of this information is sent to the voter via post, email or SMS.

Voter then takes this to the polling station,

If the hash presented match a centrally recorded hash, # your vote choice is recorded against your centrally held Hash.

Such a system could form the basis of a pretty decent voting mechanism.

If a Hash is 100 Characters in length, and there are 30 million voters (in the UK) that would mean a database of around 3Gb.

The whole thing could be run on a very small platform.

Very little human involvement is needed and the whole thing could be run in the open (read only) for transparency. Voter ID is protected because only hashes and the choice are publically available, so observers can check population numbers, tally votes etc. Possibly, the entire thing could be automated, so little human involvement is needed.

The code could be written so you can only vote once, eg if Vote = False then Vote Allowed = True

The vote could be recorded as 2 (or more) Bytes allowing 4 nibbles for 4 choices etc etc etc.

You can't vote twice because once your vote is registered against your personal hash, once you vote, it can't be altered can't be altered.

Your identifying hash must match a centrally held hash to be allowed to vote.

I'm only presenting a bare bones skeleton outline of how a system might be put together that seems reasonably robust.


The problem is that just about any system you can create can be gamed, and good luck trying to figure out how it can be gamed before hand. Of course, the other problem is that us "Type A" personalities attach far too much weight to something that is essentially meaningless, so you get people exerting vast amounts of time and effort to maximizing their rep or minimizing somebody else's.

(And because I'm a big hypocrite but am trying not to be, I'll make this CW)


There is a whole lot in the literature on voting systems, and a good bit of game theory can be applied. The issue that's difficult is that it's inherently probabilistic; you pick certain patterns as indicating probable fraud, and detect or exclude them; by doing so, you also exclude the possibility that someone is voting that way for innocent, or at least non-fraudulent reasons.

Consider, eg, someone who reads my deathless prose, develops an instant man-crush on me, and goes through all my answers voting each one up. I've got more than 30 answers so it would take a few days. Now, by assumption, this isn't my reputation-whoring sock-puppet, it's a person who for their own reasons, however unwise, has devoting all their voting to me for days at a time.

Is this fraud? No, but it would be detected as, and probably treated as, fraud.