typed proof
vrl.drug-pricing.340b-ceiling.v1
Domain-specific zero-knowledge proof for 340B compliance. Proves a covered entity's negotiated purchase price was at or below the HRSA-published ceiling for a given NDC and quarter, without revealing the negotiated price. Introduces the "≤ via headroom" comparison pattern.
proof_typevrl.drug-pricing.340b-ceiling.v1proof_version1.0.0domaindrug-pricingschemevrl-zk-ceiling-leq-nizk-v1 + vrl-zk-range-bit-or-v1 + vrl-merkle-v1grouprfc3526-group14-qr (RFC 3526 group 14, 2048-bit safe prime, QR subgroup)trusted setupNone. No-trusted-setup Fiat-Shamir NIZK.reference impl@perathos/vrl-zk-drug-pricingspec statusDraft amendment for vrl-protocol/spec v0.2.0The ≤ via headroom pattern
Discrete-log Pedersen+Schnorr proofs handle linear relations under public coefficients. They do not directly support inequality. To prove x ≤ K for hidden x and public K, we commit to both x and headroom = K − x, range-prove both ≥ 0, and linear-prove x + headroom = K. Two range proofs plus one equality replace the missing native inequality.
This generalizes. Any x ≤ K or x ≥ K proof where K is public follows the same shape.
Privacy posture
hidden
- actual negotiated price (cents)
- headroom (ceiling − price)
revealed
- NDC code, jurisdiction, quarter
- ceiling price (per unit)
- schedule root, leaf hash
What it does not prove
- That the entity is qualified for 340B pricing (FQHC status, DSH percentage, etc.). Eligibility is determined out of band.
- That the purchase volume is accurate. Only the per-unit ceiling is bound; multi-unit attestation needs a separate proof type.
- That the schedule root was signed by HRSA or the manufacturer. Root pinning is a separate step.
Stability
This is the v1 proof type. Backward-incompatible changes — different group, tighter bit width, multi-unit volume binding — will be published as vrl.drug-pricing.340b-ceiling.v2.