BlindMatch
ZK verified, privacy first Tinder <3
Created on 22nd June 2025
•
BlindMatch
ZK verified, privacy first Tinder <3
The problem BlindMatch 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.
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.
Tracks Applied (2)
ZK Hack Berlin Winners
🏆 Best Self onchain SDK Integration
Self
Technologies used
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
