Election Night · Results Incoming
The Votes
Are In.
January 2026

THE GLASS
BALLOT BOX

Transparency where it matters.
Privacy where it counts.

If democracy runs on trust, what happens when trust runs out? An election is not just counting. It's evidence.

—
Elections
—
Ballots Cast
—
Open Now

The Black Box
Problem

In a traditional election—paper or digital—you hand your ballot to a "black box." Once it leaves your hands, you lose all visibility. You are forced to trust that:

  • The machine recorded it correctly.
  • It wasn't lost in transit.
  • It wasn't replaced by a fake ballot.
  • The final count was not manipulated.

"Trust us" is not a security model. It is a security failure.

Step 1 — Commit

Your choice is combined with a secret nonce and hashed: SHA256(id|choice|nonce). This commit is published. Nobody can reverse it.

Step 2 — Chain

Every ballot's chain hash links to the previous one. Altering any ballot invalidates every hash that follows — an tamper-evident ledger anyone can audit.

Step 3 — Reveal

After the election closes, the nonce is revealed. Anyone can recompute SHA256(id|choice|nonce) and confirm the tally is honest.

Simulation Mode
Reveal vote choices after election closes (for learning)

Cast Your Vote

Use the secure booth below. Unlike a standard machine, this system will issue a cryptographic receipt.

Secure Booth

Open

Select Candidate

Candidate names are public. Your selected vote stays hidden inside the commit until the reveal phase.

Loading slate…

Loading candidates

Fetching the public slate and booth configuration.

🛡️
Zero-Knowledge Proof: This receipt mathematically proves your vote was counted without revealing who you voted for.

The Public Record

Every vote appears here instantly. An append-only, immutable ledger. Anyone can audit this.

Live Chain Feed

LIVE
# Timestamp Commit Hash Status
Waiting for first ballot block...
Records: 0 Height: 0
Chain Head GENESIS

Verify Your Receipt

Don't just trust. Verify. Paste your receipt token below to mathematically confirm your vote is on the chain.

Independent Verification

You don't need permission to audit this election.
Download the ledger. Run the code. Check the math.

root@audit-terminal:~
glass-ballot-box v2.0
Welcome to the Independent Audit Verification Tool v2.1.0
Running locally in browser. No server trust required.

> Ready to initiate chain verification protocol...
Open
Live Chain Structure
GENESIS
#000
prev∅ null
hash"GENESIS"
Chain origin. No prior block exists.
BALLOT
#001
prev"GENESIS"
commitSHA256(id|★|nonce)
chaina3f9b2c1…
★ = vote, sealed inside SHA256
BALLOT
#002
preva3f9b2…
commitSHA256(id|★|nonce)
chainb7c2d4e5…
prev = BLOCK #001 chain hash
SEALED
CLOSE
headb7c2d4…
countN ballots
snapSHA256(head|N|t)
Final seal. Tally is immutable.
◈
Alter any field in any block → its chain_hash changes → every block after it has a broken prev_hash → the entire chain is instantly invalidated. No partial tampering possible.
1 — Commit

Your choice is hashed with a secret nonce. Commits are public. Choices are private. Nobody can reverse SHA256.

2 — Chain

Each ballot's chain_hash includes the previous one. Alter any ballot and every hash after it becomes invalid.

3 — Reveal

After close, nonces are revealed. Anyone can recompute SHA256(id|choice|nonce) to verify the tally independently.

Open API

API Reference

The Glass Ballot Box API is free and open. Any developer, researcher, or organisation can use it to run cryptographically verifiable elections.

# Create an election and cast a ballot in two commands
curl -X POST https://glass-ballot-box.abhnv.workers.dev/api/elections \
  -H "Content-Type: application/json" \
  -d '{"title":"My Election","candidates":[{"name":"Alice"},{"name":"Bob"}],"mode":"demo"}'
GET /api/stats Platform statistics
// Response
{
  "ok": true,
  "total_elections": 3,
  "open_elections": 1,
  "total_ballots": 47
}
POST /api/elections Create a new election
// Request body
{
  "title": "2026 Presidential Election",
  "description": "Optional description",
  "mode": "safe"  // "safe" | "demo"
  "candidates": [
    { "name": "Alice Chen", "party": "Reform Party", "platform": "..." },
    { "name": "Bob Nair" }
  ]
}

// Response (201)
{ "ok": true, "election_id": "uuid", "url": "/e/uuid" }
POST /api/cast Cast a cryptographic ballot
// Commit is SHA256(election_id + "|" + candidate_id + "|" + nonce)
// receipt_hash is SHA256(receipt_token) — the token never leaves the client

{
  "election_id": "...",
  "commit": "SHA256(...)",
  "receipt_hash": "SHA256(token)"
}
GET /api/verify?election_id=&receipt_hash= Full chain verification
{ "chain_valid": true, "ballot_count": 12, "receipt_found": true, "receipt_index": 7 }
GET /api/chain/export?election_id=
Returns complete ballot chain as downloadable chain.json. Attach to academic papers. Verify offline without touching the UI.
GET /api/audit/proof?election_id=
Server-side chain recomputation. Returns machine-readable proof.json with every block's validity status and final hash comparison.

Share this Research

Help spread awareness about verifiable voting architectures.

Abhinav Raj

Author / Researcher · 17