aingle_zk

Crates.ioaingle_zk
lib.rsaingle_zk
version0.1.0
created_at2025-12-18 06:15:31.963322+00
updated_at2025-12-18 06:15:31.963322+00
descriptionZero-Knowledge Proofs for AIngle - privacy-preserving cryptographic primitives
homepagehttps://apilium.com
repositoryhttps://github.com/ApiliumCode/aingle
max_upload_size
id1991777
size202,309
Apilium (ApiliumCode)

documentation

https://docs.rs/aingle_zk

README

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.

Commit count: 0

cargo fmt