Nearly all succinct proof systems express computations as algebraic constraints over a finite field. Operations not native to this field, such as bitwise manipulation, modular arithmetic, and lattice-ring operations, require an arithmetization step that can inflate the witness size by one or more orders of magnitude.
We introduce Universal Constraint Systems (UCS) and Zinc. The first is a relation that can express the above constraints with minimal overhead. The second is a framework for building SNARKs for UCS. Concretely, UCS consists of algebraic constraints and ideal membership predicates over multiple polynomial rings simultaneously, such as , etc.
Zinc SNARKs are built from 1) a PIOP for UCS, and 2) a hash-based IOPP for multilinear polynomials over or . For 1), we provide a general compiler that takes standard finite-field PIOPs and turns them into a PIOP for UCS. The IOPP in 2) depends on : for , we construct it via a black-box lift of any existing IOPP for , and for , we present a novel tensor IOPP design, instantiated with the new code family below.
We introduce Integer Pseudo-Reed Solomon (IPRS) codes, a new family of MDS codes over and . While not Reed-Solomon codes, these codes have optimal MDS relative minimal distance, support efficient FFT-based encoding, and have bounded norm growth when encoding (unlike a naïve lift of Reed-Solomon codes to the integers).
Our unoptimized, open-source, implementation proves 7 SHA-256 compressions followed by the multi-scalar multiplication (MSM) part of an ECDSA verification (the bulk of the work), with the following performance, benchmarked on a MacBook Air M4, without zero-knowledge:
Prover time: 40.6 ms, Verifier time: 7.0 ms, Proof size: 198 KB.
Zinc can be instantiated end-to-end or as a lightweight extension to any existing hash-based SNARK over~.