This repository implements the proof system used in Midnight, along with tooling for building zero-knowledge circuits.
curves: Implementation of elliptic curves used in Midnight, concretely BLS12-381 and JubJub.proofs: Plonk proof system using KZG commitments.circuits: Tooling for constructing ZK circuits.aggregator: Toolkit for proof aggregation of midnight-proofs.zk_stdlib: A high-level abstraction for building zero-knowledge circuits usingproofsandcircuits.
This project was originally built upon the foundations of several outstanding open-source libraries:
blstrs– by the Filecoin Projectjubjub– by the Zcash Projecthalo2curvesv0.8.0 – by the Privacy Scaling Explorations (PSE) teamhalo2v0.3.0 – by the Privacy Scaling Explorations (PSE) team, itself originally derived from the Zcash Sapling proving system
We initially maintained the following components as forks:
bls12_381and its embeddedjubjubimplementation originated as forks ofblstrsandjubjub, respectively.proofsbegan as a fork ofhalo2v0.3.0.
Over time, our codebases have diverged from the upstream projects. These components are no longer maintained as forks and have evolved into standalone implementations tailored to Midnight's needs.
We gratefully acknowledge the authors and maintainers of the original projects.