Skip to main content

Crate arcanum_zkp

Crate arcanum_zkp 

Source
Expand description

§Arcanum Zero-Knowledge Proofs

Zero-knowledge proof systems for proving statements without revealing secrets.

§Bulletproofs

Efficient range proofs without trusted setup:

  • Prove a committed value is within a range [0, 2^n)
  • Logarithmic proof size
  • Aggregatable for multiple proofs

§Schnorr Proofs

Interactive proofs of knowledge:

  • Proof of discrete log knowledge
  • Proof of equality of discrete logs
  • Made non-interactive via Fiat-Shamir

§Pedersen Commitments

Information-theoretically hiding commitments:

  • Perfectly hiding: reveals nothing about the value
  • Computationally binding: cannot open to different value
  • Homomorphic: C(a) + C(b) = C(a + b)

§Example

use arcanum_zkp::prelude::*;

// Range proof: prove value is in [0, 2^32)
let value = 42u64;
let blinding = Scalar::random(&mut OsRng);
let (commitment, proof) = RangeProof::prove(value, blinding, 32)?;

// Verify the proof
assert!(proof.verify(&commitment, 32)?);

Re-exports§

pub use range_proof::RangeProof;
pub use range_proof::RangeProofBatch;
pub use schnorr_proof::DiscreteLogProof;
pub use schnorr_proof::EqualityProof;
pub use schnorr_proof::SchnorrProof;
pub use schnorr_proof::SchnorrProofBuilder;

Modules§

curve
Re-export curve25519-dalek types for convenience.
prelude
Prelude for convenient imports.
range_proof
Bulletproofs range proofs.
schnorr_proof
Schnorr proofs of knowledge.

Structs§

PedersenCommitment
Pedersen commitment.
PedersenOpening
Pedersen commitment opening (the blinding factor).

Enums§

ProofStatus
Proof status after verification.

Traits§

Commitment
Trait for cryptographic commitments.
HomomorphicCommitment
Trait for homomorphic commitments.
RangeProofTrait
Trait for range proofs.
ZeroKnowledgeProof
Trait for zero-knowledge proofs.