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§
- Pedersen
Commitment - Pedersen commitment.
- Pedersen
Opening - Pedersen commitment opening (the blinding factor).
Enums§
- Proof
Status - Proof status after verification.
Traits§
- Commitment
- Trait for cryptographic commitments.
- Homomorphic
Commitment - Trait for homomorphic commitments.
- Range
Proof Trait - Trait for range proofs.
- Zero
Knowledge Proof - Trait for zero-knowledge proofs.