
BlindMatch
ZK verified, privacy first Tinder <3
About
The problem it solves Traditional dating platforms suffer from fake profiles, black-box matching algorithms, data privacy issues, and superficial photo-based swiping. Users waste time on bots, have no control over their data, and lack transparency in how matches are determined. Our Solution Verified Identity with Self.xyz Integration with Self Protocol for human verification Eliminates bots and fake profiles through zero-knowledge proofs Users prove they're real humans without revealing personal data Transparent Interest-Based Matching Smart contract with open-source matching algorithm Users must select 4+ interests from 8 categories Can only like users with 2+ shared interests Compatibility scoring based on interest overlap Data Ownership & Privacy Wallet-controlled profiles and dating history No central database to hack or exploit Users own their data forever and can take it anywhere Gas-Efficient Design Interest storage optimized to 1 byte per user Affordable on-chain interactions for real-world use Transparent matching logic anyone can verify Impact For Users: Authentic connections based on genuine compatibility, complete data ownership, and transparency in matching. For Ecosystem: Demonstrates practical Web3 social applications that solve real problems beyond just "putting it on blockchain." Our onchain dating app transforms superficial swiping into meaningful connections by ensuring verified humans match based on shared interests, with complete algorithmic transparency.
How it's made
Challenges we ran into ## Self Protocol Integration Issues - Relayer Gas Errors The biggest hurdle was integrating Self Protocol's verification system. The Self relayer kept failing with "out of gas" errors when trying to relay zero-knowledge proofs from the frontend to our smart contract. The Problem: ## Self.xyz relayer would accept proofs from the mobile app But consistently failed when submitting transactions to our contract Gas estimation was returning insufficient values Proofs weren't reaching the blockchain despite successful generation ## How I Solved It: Increased gas limits manually in the contract calls Simplified the verification function to reduce computation Added fallback mechanisms for when relayer fails Implemented direct wallet transactions as backup to relayer Smart Contract Gas Optimization Interest Storage Efficiency Initially stored user interests as an array of strings, which was extremely gas-expensive for profile creation. Solution: Switched to bitmask storage using uint8, reducing interest storage from ~800 gas per interest to just 8 bits total. This made profile creation affordable on mainnet.