Proof of Med

Proof of Med

Proof of Med is a decentralized solution that ensures the authenticity of medical prescriptions in online pharmacy transactions using Zero-Knowledge Proofs (ZKPs).

Created on 13th February 2025

Proof of Med

Proof of Med

Proof of Med is a decentralized solution that ensures the authenticity of medical prescriptions in online pharmacy transactions using Zero-Knowledge Proofs (ZKPs).

The problem Proof of Med solves

Proof of Med solves the issue of fraudulent medical prescriptions in online pharmacy transactions. Currently, verifying prescriptions is challenging due to:

  1. Forgery & Misuse: Pharmacies rely on manual checks, which can be bypassed with fake prescriptions.
  2. Privacy Concerns: Sharing full medical records exposes sensitive patient data.
  3. Centralized Verification: Traditional systems require trust in centralized entities, increasing risks of data breaches.

How Proof of Med Makes It Safer & Easier:
🚀 Privacy-Preserving Verification – Uses Zero-Knowledge Proofs (ZKPs) to prove a prescription’s authenticity without revealing patient details.
🔒 Decentralized & Tamper-Proof – Stores verification results on Arbitrum Sepolia, ensuring immutability.
⚡ Seamless for Pharmacies – Pharmacies only receive verified prescriptions, reducing fraud risks.
🤖 Automated Proof Verification – Utilizes zkVerify to confirm proof validity before allowing medication purchase.
🔗 Efficient & Scalable – Proofs are generated using Sindri, ensuring fast and cost-effective verification.

By eliminating fake prescriptions and ensuring secure, trustless verification, Proof of Med makes online pharmacy transactions safer, faster, and more reliable.

Challenges I ran into

1️⃣ Locally Generating Ultraplonk Proofs
Initially, I faced issues while generating Ultraplonk proofs locally using Noir. The key challenges were:
Ensuring the circuit compiled correctly without version mismatches.
Formatting public inputs and proof data correctly for verification.

✅ Solution:
Debugged the Noir circuit thoroughly.
Ensured the correct Noir compiler version was used.
Generated proofs locally and structured them properly for verification.

2️⃣ Errors While Sending Proofs to zkVerify
The generated proof data wasn't directly compatible with zkVerify, leading to errors.
zkVerify required proof and public inputs in a specific format.
The attestation process needed proper structuring.

✅ Solution:
Converted Noir-generated proofs into zkVerify-compatible format using noir-cli proof-data.
Ensured proofs were correctly hashed and attested before submission.
Successfully verified proofs on-chain, allowing users to buy medicine securely.

Final Takeaway :
🔹 Noir Ultraplonk was successfully used for local proof generation.
🔹 Proper formatting & debugging helped integrate zkVerify smoothly.
🔹 Minimal on-chain logic ensured seamless prescription verification!

Tracks Applied (2)

Arbitrum Web3 dApp with zkVerify

Proof of Med is a Web3 dApp deployed on Arbitrum Sepolia, leveraging zkVerify for on-chain proof verification. It utiliz...Read More
Arbitrum

Arbitrum

zkVerify Main Prize Track

Proof of Med utilizes zkVerify to verify ultraplonk proofs on-chain. The project integrates zkverifyjs to send proofs to...Read More

Discussion

Builders also viewed

See more projects on Devfolio