← Back to all products
$8
Benchmark Suite
Benchmark ZK proof generation across circuits, hardware, and proving systems for cost comparison.
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
| Format | Flag | Use Case |
|---|---|---|
| JSON | --format json | Machine-readable, CI integration |
| CSV | --format csv | Spreadsheet analysis |
| Markdown | --format markdown | Documentation, 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 ...