What if we ran a national election on Nostr?
- The problem with normal Nostr polls
- The fix: Blinded IDs + Sealed Ballot Box
- The full process looks like this:
- Why would anyone actually want this?
- Is this perfect?
Not a Twitter poll.
Not a Discord reaction.
An actual election — with real voters, sealed ballots, and results that anyone can verify.
NIP-88 already gives us the tools. We just need two small upgrades.
The problem with normal Nostr polls
NIP-88 is beautiful in its simplicity:
-
You publish a
kind:1068poll -
People reply with
kind:1018votes -
One vote per pubkey
-
Latest vote before the deadline wins
But if you try to run something serious with it, two things break immediately:
-
Everyone can see the votes arrive in real time (bandwagon effect + timing attacks)
-
The voting keys are usually just throwaway npubs that someone handed out — meaning there’s still a human who knows who got which key
That’s fine for “pineapple on pizza?”
It’s not fine for choosing a government.
The fix: Blinded IDs + Sealed Ballot Box
Here’s how you actually run an election on Nostr.
1. The Blinded ID Issuer
Instead of asking people to make their own throwaway keys (or having some admin hand them out), you run a disposable program:
-
It takes the official voter list
-
Generates a fresh keypair for every single person
-
Securely delivers the private key to that person (encrypted DM, physical letter, whatever)
-
Publishes only the public keys
-
Then permanently deletes the private keys and any mapping
What remains is just a list of anonymous voting credentials.
No one — not even the issuer — can link a key back to a real identity after the program is gone.
To make this verifiable, the issuer can run inside a Trusted Execution Environment (TEE). The TEE can produce an attestation proving that the correct open-source code ran, that it generated the keys, published only the public keys, and then wiped the private material. Anyone can check the attestation instead of just trusting the operator.
2. Relays that keep the box closed
The poll still uses normal NIP-88.
But the relays you point it at agree to one extra rule:
> Do not serve any vote events until the official endsAt timestamp.
Until the deadline hits, the ballot box is sealed.
No intermediate results. No last-minute swings. No real-time surveillance of who is voting.
After the deadline, the relays open the box. Anyone can download every vote, filter by the published list of allowed public keys, apply the normal one-vote-per-pubkey rule, and get the exact same result.
The full process looks like this:
-
Finalize the voter roll
-
Run the blinded issuer (ideally inside a TEE) → get a clean list of public keys
-
Publish that list
-
Create a normal NIP-88 poll pointing at the sealed relays
-
People vote with the private keys they received
-
After the deadline, the results become public and fully verifiable
That’s it.
No new event kinds.
No special cryptography beyond what Nostr already has.
Just better key hygiene and better relay policy.
Why would anyone actually want this?
Because it gives you properties that almost no current election system has at the same time:
-
Public verifiability
Anyone in the world can download the votes and recompute the exact same result. No “trust the election commission’s spreadsheet.” -
Strong privacy
There is no lasting link between a real person and their vote. Once the issuer is gone, even the people who ran the election cannot prove how any individual voted. -
Sealed ballot box
Results stay hidden until the official close. No exit polls leaking early. No momentum swings in the final hours. -
Censorship resistance
Votes live on multiple independent relays. There is no single server that can be taken offline or ordered to delete ballots. -
Extremely low cost
No special voting machines, no proprietary software licenses, no national biometric database. Just keypairs and relays. -
Works with tools people already use
Any NIP-88 compatible client can create the poll and display the final results. Voters only need a normal Nostr key.
In short: you get cryptographic auditability and real privacy and resistance to interference, without inventing a new blockchain or forcing citizens to install experimental apps.
Is this perfect?
You tell us?
coercion/vote-selling is still a human problem, not a protocol problem.
But compared to every other “blockchain voting” scheme that requires new tokens, zero-knowledge circuits, or trusted hardware… this is almost offensively simple.
And it already works with the clients people use today.
So yeah.
What if we actually ran a national election on Nostr?
The tools are already here.
We just have to use them properly.
Write a comment