How to make AI agent decisions independently verifiable — what “proof of inference” actually means, the two cryptographic approaches shipping today (ZKML and on-chain anchoring), and how to pick the right one for your use case.
Proof of inference is the cryptographic claim that a specific AI model produced a specific output for a specific input at a specific moment in time. It is the AI counterpart of what “proof of execution” means for traditional programs: not just “we say it ran,” but “here is a record that anyone can verify it ran, with this model, on this data, in this order.”
Proof of inference is what regulators, courts, customers, and counterparties will increasingly ask AI operators to produce. The EU AI Act, NIST AI RMF, and ISO/IEC 42001 all converge on the same demand: “show me the audit trail.” What changes is how you produce one that survives a five-year subpoena.
Application logs, vendor dashboards, and screenshots are not proof of inference — they are assertions of inference, made by the same party being audited. Proof of inference requires a record signed by hardware, attested by independent parties, or anchored to a chain the operator does not control.
Three independent regulatory regimes hit binding-or-near-binding status in the same window:
Together these create the first generation of AI auditors— a professional category that did not meaningfully exist in 2024. Their first question to every AI operator is the same one regulators will ask in five years: what verifiable evidence can you produce?
There are exactly two production-grade approaches to proof of inference shipping today, and they make opposite tradeoffs.
Zero-knowledge proofs of inference
Generate a succinct cryptographic proof that the inference itself was computed correctly under a specific model. Verifier checks the proof without re-running the model.
Signed traces anchored to a public chain
Record every span, event, and decision as a rolling-hash chain. Bundle into a Merkle tree. Anchor the root to an immutable chain. Verifier replays the inclusion proof.
Zero-knowledge machine learning (ZKML) generates a succinct proof that a particular model, given a particular input, produced a particular output. The proof is short (typically kilobytes), and verifying it is much cheaper than re-running the model.
The trade is on the prover side: generating a ZK proof of a modern transformer inference takes seconds to minutes, often requires specialized hardware, and scales linearly with model size. Today this means ZKML is practical for small models (sub-100M parameters) and for cases where the inference cost can absorb the prover cost.
Open-source ONNX-to-Halo2 toolchain. Used in production for sub-100M-param models. Permissive licensing.
ezkl.xyzZKML platform with verifiable agents and Cairo-based proofs. Ethereum-focused but model-agnostic at the proving layer.
gizatech.xyzSpecialized prover infrastructure for ZK applications. Built early demos like RockyBot showcasing on-chain ML.
moduluslabs.xyzCompute-network angle: verifiable training and inference across a distributed prover network. RL training focus.
gensyn.aiZKML is the right call when you need the strongest possible guarantee and the prover cost is acceptable: high-value financial decisions, regulator-mandated proofs for specific high-risk classifications, on-chain games where ZK fits the architecture natively.
Cryptographic anchoring takes a different angle: don't prove the computation itself, prove the record of the computation. Every span, event, decision, and tool call becomes a node in a rolling-hash chain. The chain is bundled into a Merkle tree. The Merkle root is anchored to a public chain (in our case Cardano L1, metadata label 2222).
What this guarantees:
What this does not guarantee: the trace itself is correct. If the wrapper lies about which tool was called, the lie is faithfully anchored. Mitigation: embed signed tool receipts (HTTP Message Signatures, webhook signatures, on-chain TX receipts) as events. See orynq-sdk issue #60 for the standardization work in progress.
Cryptographic anchoring is what Orynq ships — both as a self-hosted SDK (~0.2–0.3 ADA per anchor) and as a managed Anchor-as-a-Service. The Materios partner chain adds committee certification on top for high-throughput cases.
These are not mutually exclusive. The advanced pattern is: anchor every inference cheaply with Orynq; selectively ZK-prove the small handful of decisions a regulator or court actually pulls. You get the throughput economics of anchoring and the math-grade guarantee where it matters.
If your stack involves an LLM, an agent framework, or a model server, you can add cryptographic anchoring in an afternoon. The shape:
Wrap each span / tool call / decision with the Orynq tracing primitives. Hash-chain events as they happen.
Compute a manifest hash from the model checkpoint, tokenizer, system prompt, and training-data manifest. Pass it to createTrace() before execution starts.
At trace close, Orynq builds the Merkle tree and produces the root hash + manifest hash + bundle metadata.
Submit a Cardano metadata transaction with the bundle under label 2222 — either with your own wallet (self-hosted, ~0.2–0.3 ADA per anchor) or via the managed Anchor-as-a-Service (x402 / Flux payment).
Anyone can replay the inclusion proof using Blockfrost, Cardanoscan, or the Orynq open verifier. No API key. No token gating. No trust.
Both paths have real limitations. Naming them keeps the discussion honest.
Add cryptographic proof of inference to your AI stack in an afternoon. Or anchor a managed AaaS endpoint with x402 / Flux payment in a single fetch call.