Consider a scenario where one needs to prove a specific criteria such as the fact that they hold a minimum balance. This is the case with El Savador which offers citizenship to immigrants that hold a minimum of 2 BTC. Meaning that if someone holds a much greater balance, they would reveal their full balance for no good reason. Our idea was to create a proof showing that the user is found in a list of users that all abide by the required criteria without explicitly stating which one it is. Zero-Knowledge Proofs are Awesome!!!
What it does
Our application takes parameters from the user such as minimum USDC balance, maximum USDC balance and the wanted address set size, after which the user is given the option to generate a proof confirming that their address is found in the set of addresses. The user is then given the proof as a string, QR code, and given the option to mint the QR code containing the proof and data used to generate it into an NFT. Imagine that a user needs 100USDC to gain entry into an event, but in reality they hold much more - 1000USDC, he now has a way to present a QR code showing that they fulfil the criteria without explicitly revealing their full holdings.
How we built it
Mix of Coffee, Energy Drinks and Portuguese Wine. We don't remember the rest.
Challenges we ran into
The complexity involved with construction of the ZeroKnowledge proof was the main challenge we faced with - we heard a lot of scary words and german surnames (hello Weierstrass!). Also we didn't build it on-chain due to gas restrictions, time restrictions and difficulties writing all this in Cairo during just a couple of nights we had. We were forced to cut some corners to be able to present in time.
Accomplishments that we're proud of
There was no existing Tom Edwards curve for secp256k1, so we had to invent it with the help of our mentor Kobi Gurkan from cLabs. The speed at which we were able to get work done near end of Day 2 was spectacular. We all knew we were facing a time crunch so it was great to see everyone getting together and collaborating to get the work done.
What we learned
Our team approached this project with various skillsets, amount of experience, and familiarity with the concepts required to build it. We have learned a ton about zero-knowledge proofs, met some amazing knowledgable people, and built a stronger friendship with each other. Priceless.
What's next for Proof Of Membership
ZK Proof Of Membership can be used in many cases. One of our initial idea was a ZK-Multisig, hiding the knowledge who had signed, anonymous verifiable voting, anonymous POAP, Proof Of Attendance to any event, and many more. Another sample use case is proving that you hold an NFT found in a series without explicitly stating which one it is. For example, let's say the Bored Ape Yacht Club community wants to hold an exclusive party for Ape holders. We know that the value of each Ape is different, and revealing identity of the specific ape you are holding can introduce security risk (or someone can simply not want to show which Ape they hold). We can use the Zero-Knowledge Proof of Membership to prove that you hold an Ape without explicitly saying which one, granting you entry to the event. The possibilities of using this Proof are endless.
Next steps for us will be to build the proof in Cairo and deploy it on-chain.
We are open to ideas and any critical feedback from the community, and hope that our findings inspire our fellow Ethereum Bros and Gals to build on top of our idea.