project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5

zkAttend

zkAttend is a Proof-of-Attendance module built on Mina protocol protokit that generates a proof of the user's physical location without revealing their personal details.

zkAttend

Created At

ETHOnline 2024

Project Description

zkAttend revolutionizes location-based verification by leveraging Mina Protocol's Protokit and zero-knowledge proofs. It enables privacy-preserving proof of physical presence without revealing personal details. zkAttend ensures secure, decentralized location verification, making it ideal for event attendance, location-based rewards, and last-mile logistics. By enhancing trust and privacy, zkAttend transforms how businesses and users interact in the digital world.

How it's Made

DISCLAIMER

  1. zkAttend does not prevent location spoofing and is entirely dependent on the browser geolocation to get the users location. Thus it does not guarantee whether the users location is true rather proves if they are within an area Android and iOS have the option to detect and prevent spoofing effectively and thus can be leveraged in the future to rely as true data.

  2. The Haversine formula used to determine whether a user is within a location is done by the oracle. This can later be done with o1js but is complex and not considered.

  3. This is a fully functioning prototype and is intended for the applications to directly integrate into their frontend to add RSVP based features into their apps without worrying about the backend.

TECH STACK

zkAttend is built using protokit starter and with an oracle that helps signs information to be used by the module.

CURRENT FEATURES

  1. A functioning frontend that shows how companies could integrate RSVP based logic on their website.

  2. Test cases that describe situations like distribution of rewards after RSVP, preventing double RSVPing, False RSVP handling, creation of geofences within which an RSVP is possible.

CURRENT PITFALLS

  1. Handling of errors on the frontend only done via console logs, describing all the possible test case,user intuitive frontends.

  2. Proof generation takes upto 3 min thus hampering user experience.

  3. This is built on the browser while the actual applications that use this module must be built on Android or iOS to prevent spoofing.

ARCHITECTURE

The user can set geofences that require lat,long, radius,event name and a description. It is important to note the lat and long are converted into whole numbers by multiplying 10^4 and their respective signs are stored where 1 is postive and 0 is negative. An oracle handles the process of signing the data and storing it in the backend for efficient use.

Upon successful creation of a geofence, any user can RSVP to the particular event. The proof of this rsvp is calculated by passing user location to the oracle for processing using the haversine formula. The oracle does not store any user data rather creates a simple signature and passes it back. It is important to note by implementing the haversine in o1js one can improve privacy significantly but is complex.

The signature for RSVP is the hash of the user's public key and the geofence creator's public key which is also used as a key to prevent users from RSVPing to the same event multiple times.

USE CASES

  1. Companies that focus on ensuring user privacy can utilize the zkAttend module to distribute rewards via a proof of attendance mechanism.

  2. Video games like Pokemon go, GTA and other MMORPGs reducing their backends that handle such location based rewards by leveraging onchain proof of location.

  3. Last mile logistics that wish to provide dellivery services while ensuring a users location is not known to them.

background image mobile

Join the mailing list

Get the latest news and updates