Proof of Inference

How verification works

Producing and verifying

A proof is only useful if someone checks it. On TensorCash, this job belongs to the verifiers. Inference providers write the answers and, with the same work, try to produce a hash below the difficulty target to submit a block. Verifiers take this submission and check that its proof matches the promised model [1]. The first two checks can run on an ordinary processor. Only the last one needs a GPU with the model on it.

Three checks

Checking every proof in full would waste effort. Every submitted block therefore goes through three checks, each more thorough and more expensive than the one before [1][2]. The first two act as filters. A proof that fails either of them is not passed on, so the full check is only spent on proofs that have already passed.

  1. 1

    Quick check

    Hashes

    Checks that the block data is sound and that every word follows from the recorded scores and the outcome of the hash. It does not run the model.

    Ordinary processor

  2. 2

    Smell test

    Recorded scores

    Checks whether the recorded scores look like real output of the promised model, still without running it.

    Ordinary processor

  3. 3

    Full check

    A rerun of the model

    Reruns the promised model over the window and compares its scores with the recorded ones. A block that fails counts for zero work. Together with the quick check, it also catches a provider that lets a cheaper model write the answer and scores it afterwards with the promised model. The scores would match, but the hash would have picked different words.

    GPU with the model

The full check ends with a verdict. GREEN means the proof matches the promised model, and the block is accepted. AMBER is a soft warning, and the node may check again before deciding. RED means the proof does not fit the promised model. The block is not rejected outright, but counts for zero work, so it is unlikely to stay on the chain[1][3].

VerdictWhat it meansThe block
GREENThe proof matches the promised model.Accepted.
AMBERUnusual, but not enough for RED.The node may check again before deciding.
REDThe proof does not fit the promised model.Counts for zero work [1].

Proof of time

Checking a proof is cheap, but it is not free. An attacker could send thousands of fake blocks that cost almost nothing to make, only to keep nodes busy checking them. This would slow down the real blocks of other miners and give the attacker's own blocks a head start.

To prevent this, every block carries a proof of time, a calculation that can only be done one step after another, starting from the previous block [2].

  • It always takes real time to make, because more computers do not make it faster.

  • It takes only milliseconds to check, like a sudoku that is slow to solve but quick to verify.

  • A fake block without a valid proof of time is rejected before any model is run.

  • A fake block with a valid one took real time, so fake blocks cannot be made in bulk.

For an attacker, this makes sending fake blocks expensive, while checking them stays cheap for everyone else.

Why verifying costs less than producing

Checking an answer is far cheaper than writing it, because of how a GPU works.

A GPU can do thousands of calculations at the same time, but only when all the work is available at once. That is not the case with inference. Each new word depends on the previous one, so the model runs once for every word. Each run reads the entire model from the GPU's memory to produce one word, and the GPU does not get to work at full capacity. This is called autoregressive decoding.

Checking an answer therefore costs a fraction of writing it. That keeps verification within reach of anyone with suitable hardware, so trust does not end up with a few large parties as the network grows.

References

  1. [1]Inference Verification: Mathematical Specification.tensorcash.org/whitepapers/Verification_Whitepaper-modern.pdf
  2. [2]Core-Node whitepaper.tensorcash.org/whitepapers/CoreNode_Whitepaper-modern.pdf
  3. [3]TensorCash blog, Trust in action: how verification caught an fp8 miner, 23 July 2026.tensorcash.org/blog/catching-a-quantized-miner/