veil
Private Compute. Verifiable Claims. Private Pay.
Created on 18th August 2026
•
veil
Private Compute. Verifiable Claims. Private Pay.
The problem veil solves
In today's digital economy, users are constantly required to expose their sensitive personal and financial data (like bank statements, income history, or transaction records) to third-party platforms just to prove they are eligible for programs such as cashback offers, grants, loans, or scholarships. This creates massive privacy risks and honeypots for data breaches.
Veil solves this by flipping the paradigm: instead of sending raw data to a server for evaluation, the evaluation rules are sent to the user's device.
Veil allows users to use a conversational AI (PrivatePilot) to fetch their local authentic data and run a lightweight Machine Learning model entirely on-device. It then generates a Zero-Knowledge Proof (zkML via EZKL and Noir circuits) that cryptographically guarantees the user meets the eligibility criteria, without ever exposing their actual financial data. The proof is verified by a smart contract on Ethereum, triggering a shielded payment (via Railgun).
It makes proving eligibility safer, completely private, and seamless—users get their rewards without sacrificing their identity or financial history.
Challenges we ran into
Building a complete "Prove → Verify → Pay" pipeline that runs locally on-device while maintaining a premium UX was challenging:
-
zkML Asynchronous Bindings in EZKL:
While building the ONNX to Halo2 zkML pipeline, we hit roadblocks with EZKL's Python API. Several crucial bindings (likeget_srsfor the KZG Structured Reference String andcreate_evm_verifierfor generating the Solidity verifier) are backed by Rust/Tokio async functions. They couldn't be called synchronously and caused event loop crashes. We overcame this by wrapping the entire pipeline in anasyncioevent loop, carefully orchestrating the transition from synchronous model training to asynchronous ZK proving. -
Bridging AI Inference with On-Chain Verification:
Quantizing our Logistic Regression model into fixed-point arithmetic for the ZK circuit introduced slight variations from the native PyTorch outputs. We had to carefully calibrate the circuit scale factors (settings.json) to ensure the on-chainVerifier.solwould accept the proof and that the threshold logic (e.g., matching the exact income/spending requirements) evaluated consistently. -
Mobile ZK Proving Overhead:
Generating ZK proofs locally on a mobile device (Flutter) requires significant computational overhead and can feel sluggish to the user. We solved the UX side of this by designing an animation that keeps the user engaged and informed while the heavy cryptographic operations happen in the background.
Tracks Applied (3)
Private Wallets and Payments
Private AI on Ethereum
Overall
Technologies used
