Inspiration
We wanted to take a familiar game like bingo and show how Midnight can make it verifiable without making everything public. Traditional bingo depends on trust: players trust the caller, callers trust players, and disputes are hard to prove. ZK Prize Bingo replaces that trust with commitments, audit trails, and privacy-preserving verification.
What it does
ZK Prize Bingo is a privacy-preserving bingo game. Before the game starts, a player’s card is turned into a Card Commitment, which acts like a public fingerprint of the card. The full card stays private.
The caller also creates a Seed Commitment, so the number sequence is locked before the game starts and cannot be changed later.
When a player wins, they submit a claim. The system checks that the private card matches the original commitment, the winning line is valid, and every number in that line was actually called. The public audit trail records commitments, called numbers, claim state, and receipts, while private card data stays hidden.
How we built it
We split the architecture into three parts:
- Player Vault: stores private card data, card salt, and local claim inputs.
- Public Audit Trail: stores card commitments, seed commitments, called numbers, and claim receipts.
- Midnight Compact Contract: anchors public verification data using Compact ledger state and exported circuits.
We used Midnight concepts like Compact, ledger state, exported circuits, selective disclosure, and persistentHash for audit fingerprints. The demo UI uses a mock Midnight adapter to show the full game flow, and the repo also includes a real Midnight workspace for Compact compilation, local deploy, contract calls, and public ledger reads.
Challenges we ran into
We had to separate private player data from public audit data while still making the flow understandable in a short demo.
Accomplishments that we’re proud of
It was our first time making a web3 project, so we had to learn and understand the core concepts first.
We built a working bingo demo with card commitments, seed commitments, claim verification, and a public audit trail. We also added a real Midnight Compact workspace with ledger state and exported circuits to anchor the core proof data.
What we learned
We learned how Midnight’s model fits apps that need both privacy and public verification. Compact, ledger state, selective disclosure, and commitment-based design make it possible to prove outcomes without exposing all user data.
What's next for ZK-Bingo
Next, we want to put it online so that multiple players can play the game.
Built With
- compact
- cypress
- javascript
- midnight
- node.js
- sha-256


Log in or sign up for Devpost to join the conversation.