2
Every program has a fingerprint.
Run the code through a fingerprint formula and you get a short code. Change anything, even one character, and the fingerprint comes out completely different.
Try it. This is real math, running in your browser right now.
count.js · public
function countBallot(ballot) {if (ballot.mark === "A") totals.A += 1;if (ballot.mark === "B") totals.B += 1;}
Fingerprint (SHA-256)
…
4
Every machine reports its fingerprint.
Before accepting a single ballot, every machine proves which fingerprint it’s running, for its hardware, firmware, operating system, and software.
Precinct 12 · opening checkApproved 91a0…5c3e
- Scanner 1checking…
- Scanner 2checking…
- Scanner 3checking…
- Scanner 4checking…
6
What happens next.
The machine can’t take ballots. Everyone is alerted. It’s swapped for a certified spare, and the investigation is public.
If a mismatch shows up at closing instead, every paper ballot that machine read gets counted by hand.
- 1Machine can’t accept ballots
- 2Alert sent to every watchdog
- 3Swapped for a certified spare
- 4Investigated in public