Skip to content
commit-reveal Source  →

About

Design notes & threat model.

Cryptographic libraries earn trust slowly. The right way to start is to make the surface area small, the dependency graph empty, and the code legible top-to-bottom. Everything below is a choice made to keep those three properties true.

Why pure Python

It is tempting to lean on cryptography, coincurve, or a native secp256k1 binding for performance. We deliberately did not. Three reasons:

The cost is throughput. The secp256k1 implementation is not constant-time at the scalar-multiply level and is not competitive with a native binding for sustained signing workloads. That is fine: commit-reveal is a protocol primitive, not a TLS terminator. If you need to verify a million proofs per second, this is not the library — and you probably do not need ZKPs at that rate.

What the threat model covers

The SECURITY.md file is the source of truth. The summary:

In scope.

Out of scope.

What it deliberately is not

commit-reveal is not a general-purpose ZKP library. There are no Pedersen commitments, no KZG commitments, no Merkle commitments, no BLS signatures, no pairing-friendly curves, no SNARK or STARK frontend, no circuit compiler. The README does not advertise those, the source does not implement them, and we will not invent them on the marketing site.

What is implemented is exactly two primitives: a commitment as H(value || salt) with eight selectable hash algorithms, and a non-interactive Schnorr proof of knowledge on secp256k1 via the Fiat-Shamir heuristic. If you need more, the comparison page covers when to reach for a different library.

Audit posture

The project has not been through a formal external audit. We do not claim it has been. What we do have:

That is the floor, not the ceiling. If you intend to use this in a setting where a compromise would cost real money, please read the source first, then file an issue or contact us before relying on it.

Maintenance & provenance

The project is maintained by Dipankar Sarkar under the cryptuon organisation. The package is published to PyPI from the cryptuon/commit-reveal repository under MIT, with releases tagged in git and CI green on every merge to main. If you find a vulnerability, see SECURITY.md for the disclosure address.