šŸ›”ļø ZKAGE: Zero-Knowledge Age Verification

šŸ”„ What Inspired Us

In June 2025, the U.S. Supreme Court upheld Texas HB 1181, giving legal force to age-verification laws for adult content and setting a precedent for 22+ other states. Almost overnight, millions of websites faced an ultimatum: comply or block access.

But the existing solutions? They’re broken. Uploading your government ID to sketchy servers? Biometric scans on porn sites? Centralized databases just waiting to leak?

We saw an opportunity: replace intrusive surveillance with elegant cryptography. Our project was born out of the belief that privacy and compliance should not be mutually exclusive.

🧠 What We Learned

• How different states interpret ā€œreasonable age verificationā€ and the technical minimums to achieve it
• How to build a real ZK proof system using Noir and integrate it with browser wallets
• Why most privacy solutions fail: complexity, poor UX, and lack of legal literacy
• That compliance law isn’t just a checkbox—it’s a battlefield of edge cases and precedent

šŸ› ļø How We Built It

• Backend: Fastify (Node.js) API that validates ZK proofs and handles jurisdiction-based age thresholds
• ZK Proof System: Noir-based circuits that prove age >= N without revealing DOB, using ephemeral, non-reversible inputs
• Frontend: Next.js + Tailwind UI with dynamic jurisdiction selector, instant proof feedback, and demo simulation
• Dev Portal: /developers hosts live API docs, OpenAPI schema, and state-by-state law matrix
• Compliance Engine: Built a crosswalk table of state laws + thresholds to validate incoming proofs properly
• Design: All identity claims are non-replayable, non-linkable, and disposable—no PII ever stored

āš ļø Challenges We Faced

• Legal ambiguity: Some states don’t define ā€œreasonable verificationā€ā€”we had to interpret statutes conservatively
• UX simplicity vs. cryptographic complexity: Making ZK feel like a single click
• No placeholders: We refused to ship pseudocode or mock endpoints—every line runs in prod
• Performance tuning: ZK circuits can be slow; we had to carefully optimize compilation and batch verifications

šŸš€ The Result

ZKAGE is the first fully legal-compliant, privacy-first age verification API in response to the 2025 Supreme Court ruling. It’s: • šŸ” Legally sound in 22+ states • 🧬 Cryptographically private • ⚔ Fast enough for production-scale deployment • 🧰 Easy to integrate via /verify-age and /issue-proof endpoints

And best of all: we never see your name, your birthday, or your face.

Built With

Share this project:

Updates