Private witnesses
Never leave the client in the dual-state model. Teaching stand-in: values you type below.
- Secret amounts, salts, identities
- Opening notes for commitments
- Intermediate gate wires
Visual ZK · circuit explainer
World-class educational studio for Midnight’s zero-knowledge intuition: pick a circuit, set private witnesses, watch the graph light from gates → public outputs, then run a simulated prove / verify theater — without claiming a real proof server or Compact runtime. By @kshot9000 · nightdream.xyz.
Labeled phases from idle → witnesses → circuit lit → proven → verified. Reject / fail is first-class.
Phase: idle — choose a circuit to begin.
Observers see public outputs + a proof. Witnesses stay local. The circuit constrains what those witnesses are allowed to imply.
Never leave the client in the dual-state model. Teaching stand-in: values you type below.
What the simulated “ledger” / verifier is allowed to see.
How veiled your private inputs stay after the last run.
100% private (no disclose)
How much the verifier learned from public outputs.
0% public surface
Five teaching circuits. Each redraws the playground graph and witness form. Press C to focus.
Witnesses on the left · animated graph in the center · public preview on the right. Edges pulse during prove.
Select a circuit above.
Simulated stages only — no proof server. Fail paths are intentional teaching moments.
0% — idle
No proof yet
—
LOCAL STUB · simulated proof blob only.
Awaiting prove…
| Gate | Role | Public? |
|---|---|---|
| Select a circuit… | ||
Session history + witness presets · schema v2 localStorage · BroadcastChannel sync · JSON export/import. LOCAL-TRUE ≠ on-chain / ≠ proof server.
Teaching sketches — not deployable Compact. Always verify against official docs.
// BAD: public ledger sees the secret
ledger {
amount: Uint<64>; // observers learn the tip
salt: Bytes<32>;
}
// BETTER (sketch): public commitment only
ledger {
commit: Bytes<32>;
thresholdMet: Boolean;
}
witness amount: Uint<64>;
witness salt: Bytes<32>;
// prove amount >= T without publishing amount
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.