Midnight’s public launch in March 2026 changed the practical question facing privacy application developers. The network is no longer only a roadmap for selective disclosure and protected contract state. It is a production environment, initially operated with a federated validator set, where an application must turn a user’s private intent into a valid zero-knowledge proof before the network can accept the transaction. The Block reported that Midnight created its genesis block on March 17, 2026, then made its public debut later that month.

That makes the prover part of the application’s critical path.

A valid proof can establish that a user was entitled to make a state transition without publishing the underlying private inputs. It does not establish that the user can obtain proving capacity, that the relevant witness is current, that the request reaches a node, or that the wallet retains enough state to spend later. Those are separate engineering problems, and a private application that confuses them will eventually strand a user in front of a spinner.

2022 Crypto PO1 7525 (52475009129)
2022 Crypto PO1 7525 (52475009129) · Web Summit · via wikipedia · CC BY 2.0

Midnight’s design divides contract state between public on-chain state and local private state, with users proving their state changes before submitting transactions. A 2025 research feature published by The Block in collaboration with Midnight described a browser interface and extension communicating with a proof server, alongside an indexer and non-voting node for network updates. The important production question is not whether a proof server exists. It is who runs it, what it sees, and what the application does when it fails.

The transaction path, from intent to finality

Take a private transfer or a regulated credential check. A user presses confirm in a wallet. That is only the start.

First, the wallet or application constructs an intent: transfer this amount, call this contract function, present this credential, or update this private record. It identifies the contract version, expected public state, fee resources and transaction expiry.

Second, it gathers the witness. The witness is the private material needed to satisfy the circuit: secret keys, notes or local records, authentication paths, encrypted state, private inputs and possibly recent chain data needed to show that the state being spent or updated is still valid. The exact contents are circuit-specific. The key point is simpler: the witness is often more sensitive than the transaction itself.

Third, a prover executes the circuit against the intent, public inputs and witness. If every constraint holds, it emits a proof plus the public outputs that the network must see, such as a nullifier, commitment, state root reference or disclosed compliance result.

Fourth, the wallet packages those outputs into a transaction and signs whatever authorization the protocol requires. The transaction goes to a submission endpoint or node. Validators verify the proof against the circuit’s verification key and public inputs, then include the transaction if it also meets consensus and state-transition rules.

PRIVATE WITNESSkeys, notes, paths and private inputs
witness and private inputs
PROVERruns the circuit locally or as a service
proof and public outputs
PROOF PACKAGEproof plus public outputs
proof and disclosed outputs
SIGNED TRANSACTIONpackages the outputs for submission
signed transaction
VALIDATOR / VERIFIERchecks proof, inputs and state rules
Figure 1 - how a proof reaches the verifier without the witness

The crucial distinction is that proof verification is cheap enough to be a network function, while proof creation can be a device or service function. A validator does not need the witness. It needs only the proof, public inputs and the correct verification key. The prover has the expensive job and, depending on topology, may handle the user’s most private data.

PROVER ENVIRONMENTTRANSACTION INTENTWITNESS DATAPROOFSIGNED TRANSACTIONPROOF AND PUBLIC INPUTSWALLETINTENTuserrequests atransactionWITNESSCOLLECTIONprivate keysand notedataCIRCUITEXECUTIONconstructsprivatetransitionPROOFGENERATIONcreateszero-knowledgeproofTRANSACTIONASSEMBLYadds proofandsignatureNODESUBMISSIONbroadcaststransactionVALIDATORVERIFICATIONverifies andincludestransactionThe witness stays with the prover; the verifier uses the protocol-selected verification key.
Figure 2 - how a proof reaches the verifier without the witness

Validity is not availability

Zero knowledge answers a narrow question: did someone demonstrate that this transition obeys the circuit without revealing the witness?

It does not answer four operational questions:

  1. Availability: Can a user reach a prover now?
  2. Latency: Does proof generation finish before the user abandons the flow or the transaction expires?
  3. Freshness: Is the witness built from state that still matches the chain?
  4. Metadata privacy: Who learns that this user requested this circuit at this moment from this network address?

A proof service can be perfectly honest and highly available, yet still collect timing, IP address, circuit identifier, proof duration, request size, client version and retry behavior. For a private payroll app, a health credential workflow or an AI agent acting for a user, that pattern can be meaningful even if the service never reads a secret key.

CoinDesk’s 2025 Midnight overview described the early 2026 federated phase as a stable production environment run by a mix of IOG and external enterprise operators, before later decentralization steps. Federated validators may help the chain start reliably. They do not automatically make the proving path decentralized. An application can still introduce a single proving provider and thereby create a private data and uptime dependency outside consensus.

Three proving topologies

There is no universally correct model. The choice follows from the sensitivity of the witness, expected transaction volume, device class and tolerance for operational dependency.

Topology Who makes the proof What the operator can see Best fit Main cost
Browser-local User device Ideally nothing beyond normal RPC traffic High privacy, lower volume, technically capable users Slow devices, large artifacts, browser memory limits
Application-operated service The app’s own infrastructure Potentially intent, witness or encrypted witness, plus metadata Consumer products needing predictable UX The app becomes a privacy and uptime custodian
Outsourced prover Specialist provider At minimum metadata, potentially private proving inputs High volume applications with managed infrastructure needs Third-party concentration and contractual trust

Browser-local proving

Browser-local proving gives the cleanest privacy boundary. The witness stays in the wallet or browser. The app can download circuit artifacts, derive local state, create the proof and submit it through one or more nodes.

This is the better design when the application promises that it cannot inspect a user’s private financial, identity or agent data. It also improves resilience: a commercial prover outage does not stop a user who has a compatible wallet and a reachable RPC endpoint.

The costs are real. Proving can consume memory, CPU, battery and time. Large proving keys must be distributed safely and versioned precisely. Mobile browsers and hardware-constrained devices can turn a cryptographic guarantee into unusable software. Developers should benchmark median and tail proof times on the weakest supported device, not a developer laptop.

Application-operated proving

A hosted prover delivers the smoothest consumer experience. The application can cache artifacts, use optimized hardware, autoscale workers and observe failures centrally. It can also batch workloads where its architecture permits.

But “the witness is encrypted in transit” is not an answer to the privacy question. The question is whether the service decrypts or receives sufficient private material to make the proof. If it does, it is inside the confidentiality boundary. That calls for explicit retention rules, access controls, memory handling, logging redaction, incident response and an audit trail.

A more defensible middle ground is remote proving over an encrypted or split witness design, where the service receives less than a directly spendable secret. That reduces exposure, but does not erase metadata leakage or eliminate the need to trust the service implementation. Cryptography should reduce the blast radius, not become a marketing synonym for no trust.

Outsourced prover infrastructure

A dedicated prover provider can be the rational choice for a large application. It may run specialized hardware, manage artifact caching and expose capacity across regions. The downside is clear: the application inherits the provider’s outages, rate limits, telemetry policies, upgrade cadence and commercial risk.

For private workflows, use at least two independently operated providers or retain a local fallback for privileged users. A second endpoint on the same cloud account is redundancy theater.

WITNESS AND INTENTPROOF AND TRANSACTIONWITNESS, REQUEST, METADATAPROOF AND TRANSACTIONWITNESS, REQUEST, METADATAPROOF AND TRANSACTIONUSERWALLETholdsprivatewitnessBROWSERPROVERruns on userdeviceAPP PROVERoperated byapplicationPROOFSERVICEexternalprovingproviderMIDNIGHTNETWORKverifiessubmittedproofRemote proving can expose service metadata even when the proof hides private inputs
How private witnesses and metadata move through browser-local, application-operated, and outsourced proving architectures

Five failures that need a product decision

A stale local witness. Another transaction may consume a note, alter a contract root or invalidate an assumption while proof generation is running. Treat stale state as a normal retry path, not an exceptional error. Re-fetch state, rebuild the witness and re-prove. Never blindly resubmit an old proof.

A prover that learns request timing. Even if the witness never leaves the wallet, a remote endpoint can learn when a particular circuit is invoked. Minimize this through direct submission after local proving, relays where appropriate, coarse telemetry, short retention, request padding where practical and no user identifiers in prover logs.

A crash after proof creation but before broadcast. The proof may be valid while the wallet has no record of whether the transaction reached the network. Persist an encrypted transaction journal before broadcast. It should contain the signed transaction, proof artifact or reproducible proving inputs, submission time, idempotency identifier and current status. On restart, query for inclusion before generating a replacement transaction.

Incompatible artifacts after an upgrade. A proof is tied to a circuit and verification key. If the network or contract upgrades, cached proving keys can produce proofs that validators reject. Version every circuit artifact by immutable hash, require compatibility checks before proving and retain prior artifacts until all transactions using them have passed their expiry window.

Wallet restore without spendable state. A seed phrase may restore keys but not necessarily every local record, encrypted note or witness cache needed for efficient spending. Define precisely what backup restores: keys only, keys plus encrypted private state, or a recoverable history reconstructed from a trusted source. Test restoration on a new device before calling the wallet recoverable.

WALLETPROOF ROUTER / PROVER
Initial witness and proof requestwalletservice
Proof-service failure or stale-state responseservicewallet
6a · Refresh witness from current application and chain statewalletwallet
Updated proof request carrying the refreshed witnesswalletservice

At 6a, the wallet refreshes its own witness before retrying the proof request.

How proof-service failures trigger wallet recovery and reach the prover

Turn architecture into requirements

A useful design review should produce answers that can be tested:

  • Where does each class of witness material exist, in plaintext and at rest?
  • Can a user prove and submit if the primary prover is unavailable?
  • What is the maximum acceptable proof latency at the 95th percentile?
  • Which events are logged by the wallet, application, prover and RPC provider?
  • What metadata can each operator correlate?
  • How does the client discover, verify and roll back circuit artifacts?
  • Can a user determine whether an interrupted transaction was included?
  • What exact data is required to restore spending capability?

The recommendation is straightforward. Default to browser-local proving when privacy is the product and hardware permits it. Use an application-operated service when user experience requires it, but treat it as a security-critical system that may handle private data. Use outsourced proving only with a defined failover path, a metadata policy and an exit plan.

Midnight can verify a correct proof without seeing the witness. That is the cryptographic achievement. The application still has to make proof generation reachable, recoverable and private from the people operating it.