groth16-proofs 1.0.0

High-performance Groth16 proof generator using arkworks for Orbinum privacy protocol
Documentation

groth16-proofs

High-performance Groth16 proof generator using arkworks for Orbinum privacy protocol

Crates.io License

Efficient Groth16 zero-knowledge proof generator for Orbinum's privacy protocol. Compiles to both native Rust and WebAssembly for maximum flexibility.

Quick Start

Install

Rust:

[dependencies]
groth16-proofs = "0.1"

Use

Rust:

use orbinum_groth16_proofs::generate_proof_from_witness;

let proof = generate_proof_from_witness(&witness, "proving_key.ark")?;

JavaScript (Browser/Node.js):

// Import from downloaded WASM module (see releases)
import { generate_proof_wasm } from './wasm/groth16_proofs.js';

const result = generate_proof_wasm(5, witnessJson, provingKeyBytes); // 5 = number of public signals

📖 Full guides: See Installation and Usage

What Is This?

This crate generates 128-byte compressed Groth16 proofs from witness data using the arkworks library. It supports:

  • Performance: ~5-8 seconds per proof
  • Curves: BN254 (Ethereum-compatible)
  • Targets: Native (Rust) + WebAssembly
  • Circuits: Unshield, Transfer, Disclosure

Architecture

┌────────────────────────────────────────────────┐
│ groth16-proofs                                 │
├────────────────────────────────────────────────┤
│                                                │
│  ┌──────────────────────────────────────────┐  │
│  │ Core (src/proof.rs)                      │  │
│  │ - Groth16 proof generation               │  │
│  │ - Arkworks constraint system             │  │
│  └──────────────────────────────────────────┘  │
│                                                │
│  ┌──────────────────┐  ┌───────────────────┐   │
│  │ Native Binary    │  │ WASM Module       │   │
│  │ (Rust)           │  │ (JavaScript)      │   │
│  │ - CLI tool       │  │ - Browser support │   │
│  │ - Fastest        │  │ - Portable        │   │
│  └──────────────────┘  └───────────────────┘   │
│                                                │
│  ┌──────────────────────────────────────────┐  │
│  │ Dependencies (arkworks ecosystem)        │  │
│  │ - ark-bn254, ark-groth16, ark-serialize  │  │
│  └──────────────────────────────────────────┘  │
│                                                │
└────────────────────────────────────────────────┘

Components

Component Location Purpose
proof.rs src/ Core Groth16 generation using arkworks
circuit.rs src/ Circuit wrapper implementing ConstraintSynthesizer
utils.rs src/ Hex ↔ field element conversions
wasm.rs src/ WASM FFI bindings with JSON I/O
binary src/bin/ CLI tool for Node.js integration

Features

Multiple Targets: Native + WASM
Fast: 5-8 second proof generation
Type-Safe: Memory-safe cryptography
Well-Tested: 21+ tests included
Automated Release: CI/CD pipeline ready
Zero External Calls: Everything bundled

Development

Quick Commands

make help              # Show all commands
make dev              # Format → Lint → Test
make build            # Build native
make build-wasm       # Build WASM
make build-all        # Build both

See Makefile for all available targets.

Documentation

Performance

Metric Value
Proof Size 128 bytes (compressed)
Generation Time 5-8 seconds
Curve BN254
WASM Bundle 3-5 MB
Native Binary 10-15 MB

Native is 20-30% faster than WASM. Choose based on your deployment target.

Publishing

This crate is published to both registries:

License