Tutorial — Security & verification
Verify a ZK proof
Tenzro uses Plonky3 STARKs over the KoalaBear field with Poseidon2 + FRI — transparent setup, post-quantum-conjectured soundness, no per-circuit keys. Three live AIRs: inference, settlement, and identity.
- Level
- Advanced
- Time
- ~20 min
- Prerequisites
- CLI installed
- Stack
- CLI · TypeScript
01
Generate a proof
Use the CLI to produce a Plonky3 proof for one of the three circuits.
tenzro zk prove \
--proof-type plonky3 \
--circuit-id inference \
--witness ./witness.json \
--out ./proof.bin02
Verify locally
The CLI verifier runs the pinned testnet configuration.
tenzro zk verify --proof-type plonky3 --circuit-id inference --proof ./proof.bin03
Verify over RPC
Validators verify the proof off-EVM and record a 32-byte commitment.
await tz.call("tenzro_verifyZkProof", {
circuit_id: "inference",
proof_bytes: proofHex,
public_inputs: ["0x01020304", "..."]
});04
Check the commitment on-chain
The EVM ZK_VERIFY precompile is an O(1) HashSet lookup against the commitment registry — call it from any contract or via eth_call with the 32-byte commitment hash as input.
Related