What if we ran a national election on Nostr?

Run real elections on Nostr: private ballots, public proof, zero new infrastructure.
What if we ran a national election on Nostr?

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:1068 poll

  • People reply with kind:1018 votes

  • One vote per pubkey

  • Latest vote before the deadline wins

But if you try to run something serious with it, two things break immediately:

  1. Everyone can see the votes arrive in real time (bandwagon effect + timing attacks)

  2. 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:

  1. Finalize the voter roll

  2. Run the blinded issuer (ideally inside a TEE) → get a clean list of public keys

  3. Publish that list

  4. Create a normal NIP-88 poll pointing at the sealed relays

  5. People vote with the private keys they received

  6. 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