[z*]ZEROCOPY $ get_key
SYSTEM NOMINAL — prover-cluster: 48/48 nodes — queue: 0 — last_block: 21,884,109

// zk-proof infrastructure  ·  v3.11.0  ·  mainnet

PROVE
EVERYTHING.
COPY NOTHING.

Zerocopy turns a witness into a verifiable zk-SNARK or STARK proof in milliseconds, not minutes. Submit over gRPC, settle on-chain, pay per proof. No GPU farm to babysit, no trusted-setup ceremony to run.

p50 prove latency
312ms
proofs / day
4.91M
avg gas saved
91%
verifier cost
206k gas

01 PROOF SYSTEMS

Pick the backend that fits your trust model and your gas budget. We compile your R1CS / AIR once and route every job to warm provers.

GROTH16

snark · pairing-based

Smallest proofs in the business — 3 group elements, ~200k gas to verify on EVM. Per-circuit trusted setup. Ideal for fixed rollup circuits that ship rarely.

  • proof size 192 B
  • verify 206k gas
  • setup per-circuit

PLONK

snark · universal setup

One universal SRS, any circuit. Swap your proving logic without a new ceremony. The default for teams that iterate fast and still want SNARK-cheap verification.

  • proof size 608 B
  • verify 290k gas
  • setup universal

STARK

stark · transparent

No trusted setup, post-quantum, FRI-based. Larger proofs, but you trust math instead of a ceremony. We auto-wrap in a SNARK if you need cheap on-chain verify.

  • proof size ~45 KB
  • verify off-chain*
  • setup none

* STARK proofs are verified off-chain or wrapped in a Groth16 outer proof for EVM settlement. Wrapping adds ~140ms.

02 BENCHMARKS

Measured on a single prover-c7g.16xl node, witness pre-loaded, cold cache excluded. Numbers are p50 over 10k runs. Your circuit will vary; bring it and we'll re-run.

┌────────────────────────┬──────────┬───────────┬───────────┬─────────────┐
│ circuit                │  system  │  constraints │ prove p50 │ gas / verify │
├────────────────────────┼──────────┼───────────┼───────────┼─────────────┤
│ rollup_batch_256       │  groth16 │    1.2M   │   312 ms  │    206,114  │
│ rollup_batch_1024      │  plonk   │    4.8M   │   904 ms  │    290,402  │
│ withdrawal_merkle      │  groth16 │    310k   │    88 ms  │    198,770  │
│ sig_aggregate_bls      │  plonk   │    2.1M   │   471 ms  │    288,955  │
│ state_diff_stark       │  stark   │    9.6M   │ 1,740 ms  │   off-chain │
│ state_diff_wrapped     │  stark→g │    9.6M   │ 1,883 ms  │    209,330  │
└────────────────────────┴──────────┴───────────┴───────────┴─────────────┘
91%avg gas saved vs. on-chain re-execution
3.2×faster than self-hosted rapidsnark
$0.0007median cost per proof, billed per ms

03 THE API

One endpoint. Submit a witness, poll the job, fetch the proof. SDKs for Rust, Go, and TypeScript. gRPC for the latency-sensitive, REST for everyone else.

request.sh
# submit a proving job
curl -X POST https://api.zerocopyzk.xyz/v3/prove \
  -H "authorization: Bearer $ZC_KEY" \
  -H "content-type: application/octet-stream" \
  --data-binary @witness.bin \
  -G --data-urlencode "circuit=rollup_batch_256" \
     --data-urlencode "system=groth16"

# → 202 Accepted
{ "job": "job_3f9a..1c", "eta_ms": 312 }
proof.json
// GET /v3/proof/job_3f9a..1c
{
  "status": "proven",
  "system": "groth16",
  "prove_ms": 309,
  "proof": "0x1f3c…a4",
  "public_inputs": ["0x88…"],
  "verify_gas": 206114,
  "settle": "Verifier.sol#L142"
}

no card. 10k proofs on the house.

04 CLUSTER LOG

A tail of the public mainnet prover stream. Job ids and addresses are hashed. This is real-shaped traffic, redacted.

tail -f /var/log/zc/cluster.log --:--:--

  

05 CHANGELOG