Skip to main content

ProofBackend

Trait ProofBackend 

Source
pub trait ProofBackend: Send + Sync {
    // Required methods
    fn generate_range_proof(
        &self,
        value: u64,
        min: u64,
        max: u64,
    ) -> Result<Vec<u8>>;
    fn verify_range_proof(
        &self,
        proof: &[u8],
        min: u64,
        max: u64,
    ) -> Result<bool>;
    fn merkle_root(&self, leaves: &[Vec<u8>]) -> Result<[u8; 32]>;
    fn generate_merkle_proof(
        &self,
        leaves: &[Vec<u8>],
        index: usize,
    ) -> Result<MerkleProof>;
    fn verify_merkle_proof(
        &self,
        proof: &MerkleProof,
        root: &[u8; 32],
        leaf: &[u8],
    ) -> Result<bool>;
}
Expand description

Zero-knowledge proof backend for range proofs and Merkle trees.

Default implementation uses BLAKE3 hashes as a lightweight fallback. Enable zk-proofs feature for real Bulletproofs/Plonky2 support.

Required Methods§

Source

fn generate_range_proof( &self, value: u64, min: u64, max: u64, ) -> Result<Vec<u8>>

Generate a range proof for a value.

Source

fn verify_range_proof(&self, proof: &[u8], min: u64, max: u64) -> Result<bool>

Verify a range proof.

Source

fn merkle_root(&self, leaves: &[Vec<u8>]) -> Result<[u8; 32]>

Compute Merkle root from leaves.

Source

fn generate_merkle_proof( &self, leaves: &[Vec<u8>], index: usize, ) -> Result<MerkleProof>

Generate Merkle inclusion proof.

Source

fn verify_merkle_proof( &self, proof: &MerkleProof, root: &[u8; 32], leaf: &[u8], ) -> Result<bool>

Verify Merkle inclusion proof.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§