Skip to content

NethermindEth/zinc-plus

Zinc+

WIP implementation and playground on Nethermind's improvement to Zinc SNARK.

Important

For benchmark results of Sha256 and ECDSA, see README in main-beta branch.

Benchmarks

Available benchmarks:

Benchmark What it measures
zip_benches PCS-level operations (encode, Merkle tree, commit, prove, verify) using scalar evaluations with IPRS codes. Uses i32 evaluations
zip_plus_benches Same PCS-level operations using polynomial evaluations (degree 32 & 64) with both RAA and IPRS codes. Uses {0,1}^D evaluations.
e2e Full Zinc+ SNARK prove & verify on several test AIRs (NoMult, BinaryDecomposition, BigLinear, BigLinearPI) at varying sizes.

To run benchmarks, use

RUSTFLAGS="-C target-cpu=native" cargo bench \
  --features "simd parallel unchecked" \
  --bench BENCH_NAME

Flags & features

Flag / Feature What it does
-C target-cpu=native Lets the compiler emit platform-specific instructions (NEON, AVX-512, etc.). Required for simd.
simd Bit-packs binary polynomials into u64s and uses hand-written NEON / AVX-512 intrinsics for key operations (widening, inner products).
parallel Enables rayon-based multi-threaded execution across the whole stack (sumcheck, encoding, commitment, etc.).
unchecked Replaces checked_add / checked_mul with plain arithmetic, removing overflow guards. Only affects integer-typed computations; field arithmetic is unaffected.

License

Apache 2.0

Would like to contribute?

see Contributing.

About

Zinc+ is a performance-oriented SNARK framework designed to handle computations across multiple mathematical domains without the "witness inflation" overhead typical of traditional arithmetization.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages