OpenViSTAI · Agents · Blockchain · Crypto
Menu
ZK & Privacy

Bulletproofs

Bulletproofs is a Haskell cryptography library implementing non-interactive zero-knowledge arguments for statements about committed values, with documented single and multi-value range-proof examples.

Independent OpenViST project profile, based on linked sources.

Bulletproofs — OpenViST project profile in ZK & Privacy.
OpenViST project illustration. See the linked sources for product details.
Understand the project

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.
Before you choose

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.

Source-based practical guide

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

  1. Create a Pedersen commitment from the value and blinding factor with Bulletproofs.Utils.commit.

  2. Call Bulletproofs.RangeProof.generateProof with the upper bound and value/blinding pair.

  3. 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.
Source-based practical guide

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

  1. Create a commitment for each value and blinding-factor pair with Bulletproofs.Utils.commit.

  2. Call Bulletproofs.MultiRangeProof.generateProof with the upper bound and list of pairs.

  3. 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.
Evidence and transparency

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