perathos
docs/vrl-proof-bundle/proofs / drug-pricing-340b-ceiling-v1

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.v1
proof_version1.0.0
domaindrug-pricing
schemevrl-zk-ceiling-leq-nizk-v1 + vrl-zk-range-bit-or-v1 + vrl-merkle-v1
grouprfc3526-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-pricing
spec statusDraft amendment for vrl-protocol/spec v0.2.0

The ≤ 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.