This document presents production benchmarks for the H33 STARK proof systems: Lookup STARK (used in the production ZKP pipeline) and AIR STARK (used in H33-74-AIR for secp256k1 signature circuit proving). All numbers are from Graviton4 bare metal. STARKs require no trusted setup and derive their security from the collision resistance of SHA3-256, providing post-quantum security.
The Lookup STARK is used in Stage 3 (ZKP) of the H33 production pipeline. It proves that a cached value was correctly looked up from a committed table.
| Metric | Cold | Cached (CacheeEngine) |
|---|---|---|
| Prove latency | 4.2 us | 0.062 us |
| Verify latency | 1.8 us | 0.358 us |
| Proof size | 1,024 bytes | 1,024 bytes |
| Table size (entries) | up to 2^20 | up to 2^20 |
| Speedup (cold vs cached) | -- | 67.7x prove, 5.0x verify |
The 0.062 us cached prove latency (62 nanoseconds) is achieved by precomputing the polynomial commitment and reusing it across lookups into the same table. The CacheeEngine stores precomputed commitments in its LFU cache layer.
In the production pipeline, the ZKP stage (Lookup STARK) accounts for less than 1% of total per-authentication latency (0.358 us of 42 us total). The dominant stages are FHE (70%) and batch attestation (29%).
| Circuit | Trace Rows | Constraints | Prove (cold) | Prove (cached) | Verify | Proof Size |
|---|---|---|---|---|---|---|
| Fibonacci (2^10) | 1,024 | 2 | 12 ms | 0.8 ms | 0.3 ms | 4.2 KiB |
| SHA3-256 (single) | 32,768 | 48 | 180 ms | 14 ms | 2.1 ms | 18 KiB |
| Merkle tree (depth 8) | 65,536 | 96 | 420 ms | 34 ms | 3.8 ms | 28 KiB |
| secp256k1 ECDSA | 131,072 | 256 | 495 ms | 1.75 ms | 0.071 ms | 42 KiB |
The H33-74-AIR circuit is the STARK proof component of the Proof of Life system. It proves that a secp256k1 ECDSA signature is valid without revealing the private key or the full signature.
| Metric | Value |
|---|---|
| Cold prove | 495 ms |
| Cached prove | 1.75 ms |
| Verify | 71 us (0.071 ms) |
| Cache speedup | 282x |
| Proof size | 42 KiB |
| Trace rows | 131,072 |
| Constraint count | 256 |
| Field | Goldilocks (p = 2^64 - 2^32 + 1) |
| Hash | SHA3-256 |
| Security level | 128-bit (conjectured post-quantum) |
| Test coverage | 22 tests, 1,100 keys validated |
The 282x cache speedup (495 ms to 1.75 ms) is achieved by precomputing the constraint evaluation domain, twiddle factors, and the low-degree extension of the execution trace. On subsequent proofs with the same circuit structure (different witnesses), only the witness-dependent portions of the computation are re-executed.
STARKs are transparent proof systems. Unlike SNARKs (which require a trusted setup ceremony to generate a structured reference string), STARKs derive their soundness from the collision resistance of the hash function. This provides two properties:
| Property | STARK (H33) | Groth16 SNARK | PLONK SNARK |
|---|---|---|---|
| Trusted setup | None | Per-circuit | Universal |
| Post-quantum secure | Yes | No | No |
| Proof size | 10-50 KiB | 192 bytes | 384 bytes |
| Verify time | 0.07-4 ms | 1.5 ms | 3 ms |
| Prover time | 1-500 ms | 2-10 s | 5-30 s |
STARKs trade larger proof sizes (10-50 KiB vs 192-384 bytes for SNARKs) for elimination of trusted setup, post-quantum security, and significantly faster proving times. For the H33 use case (server-side proving, not on-chain verification), the proof size tradeoff is acceptable.
All H33 STARK implementations use SHA3-256 (NIST FIPS 202) as the hash function for Merkle tree commitments, Fiat-Shamir transcript generation, and FRI (Fast Reed-Solomon Interactive Oracle Proof of Proximity) commitments. SHA3-256 provides:
| Trace Rows | Prove (cold) | Verify | Proof Size |
|---|---|---|---|
| 2^10 (1K) | 12 ms | 0.3 ms | 4.2 KiB |
| 2^14 (16K) | 85 ms | 1.2 ms | 12 KiB |
| 2^17 (128K) | 495 ms | 2.8 ms | 42 KiB |
| 2^20 (1M) | 3,200 ms | 4.1 ms | 68 KiB |
Prove time scales as O(n log n) where n is the number of trace rows. Verify time scales as O(log^2 n), remaining sub-5ms even for million-row traces. Proof size scales as O(log^2 n).
# Build STARK benchmarks
$ cargo build --release --features stark_bench
# Run Lookup STARK benchmarks
$ ./target/release/examples/stark_bench --mode lookup --iterations 1000000
# Run AIR STARK benchmarks (secp256k1)
$ ./target/release/examples/stark_bench --mode air --circuit secp256k1 --iterations 1000
# Run scaling test
$ ./target/release/examples/stark_bench --mode air --circuit fibonacci --rows 1024,16384,131072,1048576STARKs are used in two distinct locations within the H33 system:
See Agent Infrastructure Benchmarks for the pipeline context of Lookup STARK performance.