How it works.

An output tells you the result. A proof lets you check how it relates to the agreed model and input, without seeing their private values.

From model output to verifiable evidence

Think of a sealed envelope. Before anything runs, the model owner seals their weights in one envelope and the input is sealed in another. Sealing produces a short code, called a fingerprint, that they hand out. The fingerprint reveals nothing about the contents, with cryptographic protection against substituting different contents.

Now the model runs and produces an answer. Along with it comes a proof: a small file that says the contents of envelope A, applied to the contents of envelope B, produce exactly this answer. You check that proof against the two fingerprints. Either the mathematics works out or it does not.

Verification requires the receipt, the approved verification key and the agreed fingerprints. You do not need the private weights or input values. The claim covers the specified computation; assessing the model’s quality is a separate task.

What is in a receipt

A receipt contains public evidence for verification. The private weights, input values and salts are not included:

Private random salts protect the fingerprints against guessing attacks. The published result can still reveal information about the model or input, especially across repeated queries.

The mathematics

The claim is expressed as an arithmetic circuit, written in Circom 2. The circuit takes the weights, the salts and the input features as private inputs, and the two fingerprints, the step and the challenge as public inputs. Inside, it enforces three things at once:

Because all three constraints live in one circuit, they cannot be satisfied separately. A proof exists only if the same weights that match the fingerprint are the weights that produced the answer.

The circuit is compiled to a constraint system and proved with Groth16. Verification is a pairing check against a verification key: constant-size, and fast regardless of how the proof was produced. All arithmetic happens in a prime field, so the model is fixed-point, not floating-point. Weights and features are integers scaled by 256, and the prediction is encoded with an offset so negative values survive the field encoding.

The current circuit proves a two-feature linear regression. A second circuit proves a weight update: given a previous checkpoint fingerprint and a data fingerprint, it enforces one step of gradient descent at rate 1/16 with floor rounding, and outputs the next checkpoint fingerprint. That is what makes a retraining step checkable instead of merely announced.

Recorded proofs versus live acceptance

The demo on the home page verifies a proof that was generated earlier on our machine. The pairing check runs in your browser and detects changes to the proved statement. It establishes a mathematical statement, not a fresh event. Replaying it tomorrow proves the same thing it proves today.

Freshness is a separate problem, and it is handled outside the proof. The command-line controller issues each task with a random challenge and an expiry, remembers which tasks it issued, rejects a receipt whose challenge it did not issue, rejects one that arrives late, rejects a replay of one it has already accepted, and advances its checkpoint only after accepting a valid update. The controller's accepted state determines which checkpoint is current. A single proof cannot establish that on its own.

The controller can reject expired or repeated submissions. These checks govern receipt acceptance; they do not prove the physical time of execution or that the computation ran only once.

What it does not prove

The proof is narrow on purpose. It does not establish:

Technology status

Inferstamp is a working research prototype from baz consulting. The demonstration uses real Circom circuits and Groth16 proofs. Production use requires further engineering and independent review:

Measurements

Measured on 17 September 2026, on one laptop, for the two-feature circuit on this site, a deliberately tiny model. Treat these as an order of magnitude, not a benchmark:

Verification cost is the number that stays flat as models grow. Proving cost is the one that does not, and it is the reason this technique fits small, high-stakes decisions long before it fits a chatbot.

Find out what verification would require for your model.

Talk to us