We present POP, the Proof Of POAP solution that lets you prove you own a POAP wothout revealing who you are
We use a combination of frontend, backend and smart contracts integrations to allow users to prove their ownership of a POAP, without revealing their wallet address.
POAPs became the most entertaining, easy and fun way for creating memories on the ethereum ecosystem. We believe POAPs are more than memories and collectibles, they tell what you like and where you've been.
Today, projects can ask for a user to make a proof of a POAP ownership in order to prove attendance to talks, workshops or contributions to open source projects. However, this proving comes with the user reveling it's address in order to prove the ownership. Using zero knowledge proofs, we provide a system for users to prove ownership of a POAP without reveling their wallet address.
We used Noir as DSL for creating our zero knowledge proofs using zkSNARKS as prooving system, a python-flask api to fetch data using poap REST api, a react + vite app that serves as frontend and a series of EVM smart contracts for verification of zero knowledge proof.
When a user wants to create a proof of ownership, he connects with his wallet using wallet connect sdk. With the users wallet address, the client call the api to fetch the user poaps.
Those poaps are showed to the user with the possibility of selecting one of those to make a proof of ownership.
After selecting one of those, user must sign a message to proof ownership of the wallet. wallet address, signature and list of owners of the poap are sent as inputs to the zero knowledge proving circuit.
After generating the proof, the user can call a smart contract to verify on-chain that the proof is valid.