Issuer / Operator
Operators verify once
Deploy a gate, generate a private credential, and enroll only its commitment on Midnight Preprod.
Enrolls hash(credential) into the gate's Merkle tree without revealing raw entropy.
Initializing Vault
Initializing Vault

Verify membership with a trusted issuer, then prove access to any app on Midnight. Privora returns only the result an application needs — never your name, credential, or wallet history.
Interactive Pipeline
Observe how secrets stay shielded on-device while generating cryptographically binding proofs for Midnight.
Off-chain secret
Midnight Compact
Zero disclosure
App Sees
valid_member
0 bytes identity
Ledger Sees
0x8f3c...null
Preprod proof
Built for private access
Local ZK-SNARK Prover · Midnight Preprod Network
Off-chain storage on your device. Never transmitted over HTTP or RPC.
Zero-knowledge proof calculated in your browser proof engine.
Target applications receive a single boolean confirmation with zero leaks.
Auditable Compact smart contract primitive deployed on Preprod testnet.
How it works
Privacy is load-bearing, not decorative. Privora keeps the credential private while Compact makes every value that reaches the chain explicit.
Issuer / Operator
Deploy a gate, generate a private credential, and enroll only its commitment on Midnight Preprod.
Enrolls hash(credential) into the gate's Merkle tree without revealing raw entropy.
Member / User
Members keep the raw credential off-chain and generate their proof locally.
The wallet proof server synthesizes a witness and runs the Compact circuit on-device.
Application / Verifier
Applications consume a narrow verified result without receiving the underlying credential or identity.
Access gates read the confirmed proof state and unlock session data without storing PII.
Selective disclosure
The contrast is structural. Applications get mathematical certainty without holding your sensitive keys, identifiers, or wallet history.
Client-side & off-chain memory
Raw entropy generated during issuance. Retained exclusively in your browser or local wallet.
Cryptographic blinding factor that prevents rainbow-table correlation or pattern matching.
No wallet address, ENS name, email, IP, or previous transaction logs are attached to the proof.
Tier levels, expiration dates, or membership claims are computed inside the ZK circuit, not revealed.
Zero-knowledge witness data stays inside the local browser proof engine.
Midnight chain & consuming app
Merkle tree root and leaf hashes on Midnight Preprod confirming membership in the gate.
Deterministic proof tag that prevents reuse if the gate enforces a one-time proof policy.
The application receives a single narrow assertion: access authorized or denied.
Only parameters explicitly declared with disclose() in Compact smart contracts reach the chain.
Verification provides mathematical certainty without transferring ownership of secrets.
Why Midnight
The Privora contract is deployed once and becomes a shared primitive. Membership is proven against a Merkle root, so a proof never reveals which credential it used.
Raw credentials never appear in public transaction payloads or indexer logs.
Nullifiers prevent double-spend or proof reuse under single-use proof policies.
UX unlocks instantly on confirmed proof while secret keys remain shielded in client memory.
Midnight explorer links verify that constraints and Merkle roots check out transparently.
1 2 3 4 5 6 7 8 910111213141516// 1. Operator connects to Midnight Preprod & deploys gateconst admin = await privora.connectWallet('preprod');const gate = await admin.deployCredentialGate({ oneTimeProof: true });// 2. Issuer generates secret off-chain & enrolls commitmentconst credential = generateSecret();await gate.enroll(hash(credential));// 3. Member generates zero-knowledge proof locallyconst member = await privora.connectWallet('preprod');const isVerified = await member.verify(credential);// 4. Consuming app confirms access; session unlocks locallyif (isVerified) { vault.unlockForSession();}Install
A small, typed Preprod demo. Deploy the contract, enroll a commitment, and ship a private access gate.
CLI / Core Package
Compile Compact contracts, deploy gates to Midnight Preprod, and enroll cryptographic commitments directly.
npm install privoraReact Integration
Pre-built React hooks and UI primitives for Midnight dApp connector, wallet sessions, and client-side proof orchestration.
npm install privora-reactResources & Environments
Midnight Preprod Network (ID: preprod)
Configure gate parameters, set one-time proof policies, and commit credential hashes to Midnight.
Connect Lace or 1AM wallet, load an issued credential, and watch local proof generation in action.
Explore the Compact programming model, private state transitions, and Midnight dApp connector.
Any application can consume the verified result without receiving the raw credential.