← Back to all products

Benchmark Suite

$8

Benchmark ZK proof generation across circuits, hardware, and proving systems for cost comparison.

📁 13 files
TOMLPythonMarkdownJSONReact

📁 File Structure 13 files

benchmark-suite/ ├── LICENSE ├── README.md ├── pyproject.toml ├── security-notes.md ├── src/ │ └── benchmark_suite/ │ ├── __init__.py │ ├── cli.py │ ├── models.py │ ├── profiler.py │ ├── report.py │ └── runner.py ├── tests/ │ └── test_benchmark.py └── viewer/ ├── package.json └── src/ └── App.tsx

📖 Documentation Preview README excerpt

ZK Benchmark Suite

CryptoForge Store #10 — Prover Market

A comprehensive benchmarking toolkit for zero-knowledge proof systems. Compare proving times, verification costs, memory usage, and gas consumption across Groth16, PLONK, STARK, and custom circuits.

Features

  • Multi-backend benchmarking: Compare Groth16, PLONK, and STARK backends side-by-side
  • Gas profiling: Estimate on-chain verification gas costs per proof system
  • Memory profiling: Track peak memory usage during proof generation
  • Circuit complexity analysis: Measure constraint counts, witness sizes, and setup times
  • Report generation: Export results as JSON, CSV, or Markdown tables
  • Web viewer: Interactive React dashboard for visualizing benchmark results

Quick Start


# Install Python package
pip install -e .

# Run full benchmark suite
benchmark-suite run --backends groth16,plonk,stark --circuits all

# Run specific benchmark
benchmark-suite run --backends groth16 --circuits merkle_proof --depth 20

# Generate report
benchmark-suite report --format markdown --output results/report.md

# Profile memory usage
benchmark-suite profile --backend plonk --circuit range_proof

Web Viewer


cd viewer
npm install
npm run dev
# Open http://localhost:5173

Output Formats

FormatFlagUse Case
JSON--format jsonMachine-readable, CI integration
CSV--format csvSpreadsheet analysis
Markdown--format markdownDocumentation, GitHub

Architecture


benchmark-suite/
├── src/benchmark_suite/     # Python CLI package
│   ├── cli.py               # Click CLI entry point
│   ├── runner.py            # Benchmark execution engine
│   ├── profiler.py          # Memory & timing profiler
│   ├── report.py            # Report generation (JSON/CSV/MD)

*... continues with setup instructions, usage examples, and more.*

📄 Code Sample .py preview

src/benchmark_suite/cli.py """ CLI entry point for the ZK Benchmark Suite. Usage: benchmark-suite run [OPTIONS] benchmark-suite report [OPTIONS] benchmark-suite profile [OPTIONS] """ from __future__ import annotations import json import sys from pathlib import Path import click from rich.console import Console from rich.table import Table from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn, TimeElapsedColumn from benchmark_suite.models import BenchmarkConfig, ProofBackend, CircuitType from benchmark_suite.runner import BenchmarkRunner from benchmark_suite.profiler import MemoryProfiler from benchmark_suite.report import ReportGenerator console = Console() def _parse_backends(ctx: click.Context, param: click.Parameter, value: str) -> list[ProofBackend]: """Parse comma-separated backend names into ProofBackend enum values.""" if not value: return list(ProofBackend) backends = [] for name in value.split(","): name = name.strip().lower() try: backends.append(ProofBackend(name)) except ValueError: raise click.BadParameter( f"Unknown backend '{name}'. Valid: {', '.join(b.value for b in ProofBackend)}" ) return backends def _parse_circuits(ctx: click.Context, param: click.Parameter, value: str) -> list[CircuitType]: """Parse comma-separated circuit names into CircuitType enum values.""" if not value or value == "all": return [c for c in CircuitType if c != CircuitType.CUSTOM] circuits = [] for name in value.split(","): # ... 184 more lines ...
Buy Now — $8 Back to Products