Practical overview
When it fits
Use it when implementing or examining Haskell-based cryptographic workflows that need non-interactive proofs about committed values, especially range proofs.
Who it is for
- Haskell developers building cryptographic applications that need proofs about committed values.
- Researchers and practitioners exploring range proofs and non-interactive zero-knowledge arguments.
Documented uses
- Generate and verify a range proof for a committed value.
- Generate and verify a range proof covering multiple committed values.
- Explore proof systems for arithmetic circuits or verifiable shuffles.
Requirements & limits
- The documented usage examples are in Haskell and use secp256k1.
- The README requires the range-proof upper bound to meet a power-of-two condition.
- The repository lists a BSD-3-Clause license.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Generate and verify a single range proof
Use the documented Haskell example to generate a proof for a committed value and verify it against the commitment.
Before you start
- A Haskell project able to use the library’s modules.
- A value and blinding factor represented as the documented secp256k1 scalar type Fr.
- An upper bound satisfying the README’s stated power-of-two condition.
Steps
Create a Pedersen commitment from the value and blinding factor with Bulletproofs.Utils.commit.
Call Bulletproofs.RangeProof.generateProof with the upper bound and value/blinding pair.
Pass the resulting proof, upper bound, and commitment to Bulletproofs.RangeProof.verifyProof.
Expected outcome
A verification result for a proof that the committed value is within the specified range.
Guide limitations
- The documented upper bound must satisfy the stated power-of-two condition.
- The README’s example uses secp256k1.
Generate and verify a multi-value range proof
Follow the documented example for proving range statements about multiple committed values.
Before you start
- A Haskell project able to use the library’s modules.
- A list of value and blinding-factor pairs represented using Fr.
- An upper bound satisfying the README’s stated power-of-two condition.
Steps
Create a commitment for each value and blinding-factor pair with Bulletproofs.Utils.commit.
Call Bulletproofs.MultiRangeProof.generateProof with the upper bound and list of pairs.
Verify the proof with Bulletproofs.MultiRangeProof.verifyProof, supplying the upper bound and commitments.
Expected outcome
A verification result for a multi-value range proof.
Guide limitations
- The documented upper bound must satisfy the stated power-of-two condition.
- The README’s example uses secp256k1.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 18 October 2026
- Original website title
- sdiehl/bulletproofs · Official homepage title · retained in its source language

