Private vault
Never leave the client in the dual-state model. Teaching stand-in: values you type below.
- Voter secrets & eligibility salts
- Chosen option index
- Opening notes for ballot commits
Sealed polls · private votes
World-class educational studio for Midnight-style private ballots: publish a public question, seal votes + nullifiers in a vault, prove eligibility without revealing identity, then run a tally theater that certifies counts — without claiming on-chain settlement, Lace, or a real Compact runtime. By @kshot9000 · nightdream.xyz.
Labeled phases from idle → sealed → voting → tallying → certified. Double-vote reject is first-class.
Phase: idle — compose a ballot to begin.
Observers see the question, option labels, ballot commitments, and nullifiers. Choices and voter secrets stay local until (optionally) disclosed.
Never leave the client in the dual-state model. Teaching stand-in: values you type below.
What the simulated “ledger” / tally board is allowed to see.
How veiled individual choices stay after the last action.
100% veiled (no disclose)
How much the board learned from commits + tally.
0% public surface
Public question + options. Eligibility salt stays in the vault. Press B to focus.
Choice + voter secret → ballot commit + nullifier. Double nullifiers reject. Press V.
Awaiting cast…
Simulated stages only — no proof server. Tamper & double-vote fails are intentional teaching moments. Press T.
0% — idle
No tally yet
—
LOCAL STUB · simulated certification only.
Awaiting tally…
Local-only ballots + sealed votes in localStorage. Clear anytime — nothing left the browser.
Teaching sketches — not deployable Compact. Always verify against official docs.
// BAD: public ledger sees every choice
ledger {
voter: Bytes<32>; // identity leaked
choice: Uint<8>; // vote leaked
}
// BETTER (sketch): public commit + nullifier
ledger {
ballotCommit: Bytes<32>;
nullifier: Bytes<32>; // unique, no identity
tallies: Vector<Uint<64>>;
}
witness choice: Uint<8>;
witness voterSecret: Bytes<32>;
// prove eligible + one-vote without publishing who
These snippets are educational illustrations. Official Compact syntax, circuits, and Zswap commitments may differ — check Midnight docs before shipping.
Cardano donation address — always visible in the dock and here. No on-chain tip from this UI.
Built by @kshot9000 · creator of nightdream.xyz.