aingle_zk 0.1.0

Zero-Knowledge Proofs for AIngle - privacy-preserving cryptographic primitives
Documentation

AIngle ZK - Zero-Knowledge Proofs

Privacy-preserving cryptographic primitives for AIngle.

Features

  • Pedersen Commitments: Hide values while allowing verification
  • Range Proofs: Prove a value is within a range without revealing it
  • Membership Proofs: Prove inclusion in a set using Merkle trees
  • Hash Commitments: Simple commitment scheme using cryptographic hashes

Quick Start

use aingle_zk::{PedersenCommitment, HashCommitment};

// Hash commitment (simple)
let commitment = HashCommitment::commit(b"secret value");
assert!(commitment.verify(b"secret value"));

// Pedersen commitment (hiding and binding)
let (commitment, opening) = PedersenCommitment::commit(42u64);
assert!(commitment.verify(42u64, &opening));

Merkle Proofs

use aingle_zk::{MerkleTree, MerkleProof};

// Build tree from leaves
let leaves = vec![b"a", b"b", b"c", b"d"];
let tree = MerkleTree::from_leaves(&leaves);

// Generate proof for leaf at index 2
let proof = tree.prove(2)?;

// Verify membership
assert!(proof.verify(tree.root(), b"c"));

Range Proofs (with bulletproofs feature)

use aingle_zk::{RangeProof, RangeProofGenerator};

// Prove value is in range [0, 2^64) without revealing it
let value = 42u64;
let (proof, commitment) = RangeProofGenerator::prove(value)?;

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

ZK Proof System

use aingle_zk::{ZkProofSystem, ProofType};

let zk = ZkProofSystem::new();

// Create anonymous credential
let credential = zk.create_credential(&claims)?;

// Prove age >= 18 without revealing exact age
let proof = zk.prove_predicate(
    &credential,
    "age",
    PredicateType::GreaterOrEqual,
    18
)?;

// Verify without learning the actual value
assert!(zk.verify_predicate(&proof)?);

Proof Types

Type Use Case Performance
Hash Commitment Simple binding Fast
Pedersen Hiding + binding Medium
Range Proof Value bounds Slow
Merkle Set membership Fast

License

Copyright 2019-2025 Apilium Technologies

Licensed under the Apache License, Version 2.0.