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 JubJubproof-system: Plonk proof system using KZG commitmentscircuits: Tooling for constructing ZK circuitsaggregator: Toolkit for proof aggregation of midnight-proofs.
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.proof-systembegan 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.