# ZK reserve attestation (optional extension)

On-chain policy uses public inputs `(S0, S1, R)` from `ERC20.totalSupply` and `ReserveCommitmentStore`. For **privacy-preserving** proof that backing exists without disclosing raw bank balances:

1. Implement a **verifier contract** conforming to [`IZkReserveProofVerifier.sol`](../../contracts/hybx-omnl/interfaces/IZkReserveProofVerifier.sol).
2. Off-chain: generate proofs with your chosen circuit (public inputs: commitment to R, line id, snapshot block).
3. Wire: either wrap `commitReserve` with a step that checks `verifyProof` before accepting R, or post proofs alongside `evidenceHash` / `merkleRoot` for auditor tooling only.

This repo does not ship a production circuit or verifier bytecode; the interface is the integration boundary for audits.
