Inspiration
Modern apps rely heavily on location data, but they all demand one thing: revealing your exact coordinates. With zero-knowledge proofs becoming more accessible on Polkadot, I wondered—can we let users prove they were in a region without exposing where they actually were? That simple question sparked GeoZK: a privacy-first geolocation protocol.
What it does
GeoZK allows users to prove they were inside a specific geofenced zone using zero-knowledge proofs—without sharing their actual GPS coordinates. Developers can create zones, verify proofs on-chain, and trigger actions like rewards, access, or achievements based on private location validation.
How we built it
We built Circom circuits for “point-in-polygon’’ verification, compiled them to WASM for browser-side proving, deployed a custom pallet on Polkadot Cloud for on-chain verification, and used MapLibre for zone creation. The entire flow allows users to generate proofs locally and submit them securely to the chain.
Challenges we ran into
Balancing cryptographic complexity with fast proving times, representing polygons efficiently, integrating ZK verification within Substrate’s weight limits, and maintaining a seamless UX were major hurdles.
Accomplishments that we're proud of
Creating a fully working private geolocation prototype end-to-end—circuits, verifier pallet, map UI, and proof workflow—stands out. Connecting real-world location to blockchain without exposing user data felt like a breakthrough.
What we learned
We learned how to optimize ZK circuits for real-world constraints, design geospatial logic for zero knowledge, and structure Substrate runtimes for cryptographic workloads. We also deepened our understanding of map tooling and privacy design.
What's next for GeoZK
Adding mobile SDKs, enabling off-chain proving with on-chain validation, integrating time-bound regions, and expanding use cases like private check-ins, geofenced rewards, and privacy-preserving access control.
Built With
- ink!
- openlayers
- rust
- substrate

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