ZAP is a cutting-edge, privacy-centric project built on the Mina protocol and Ethereum blockchain that allows users to verify specific statements related to their Ethereum wallets without having to disclose unnecessary information. These statements can pertain to anything based on on-chain data such as the balance of Ethereum or a user's lens profile.
Users simply sign a message on MetaMask for authentication, then specify the statement they wish to verify through our frontend. The specified statement, alongside the MetaMask signature, is sent to our oracle which is linked to AirStack. The oracle queries the appropriate API to verify the statement. If the statement is true, the oracle emits an event containing "verified", and the statement hash.
This process allows users to provide proof of a statement related to their Ethereum wallet without revealing any other details. The user can now provide their Mina wallet address and statement hash to prove to anyone the validity of the statement. The recipient of this information can then hash the received data and check that the result has been emitted by our oracle. If it matches, the proof is correct.
ZAP is built using Ethereum, the Mina protocol, and AirStack APIs. Metamask is used for the user authentication and data related to the statements, while Mina handles the proof generation and verification. AirStack APIs are utilized by the oracle to get the required data for the statement verification.
Our project uses Mina smart contracts, written in SnarkyJS , for the proof generation and verification. The frontend of the application is developed using React and Next.js for a smooth user experience.
Despite being built on a centralized oracle, we've ensured trustlessness by incorporating signature verification and statement truthfulness checks in our smart contracts.
Our oracle queries AirStack APIs to verify the statements. AirStack was a crucial component of our project, providing us with easy access to a vast range of data and helping us create a trustless system by supplying reliable data to our oracle.
Since Mina cannot directly verify MetaMask signatures, we had to use our centralized oracle to bridge this gap. However, to maintain trustlessness, we implemented several checks in our smart contracts.
Finally, we put an emphasis on maintaining privacy. To achieve this, we hash the API query path and compare it with the hash of the first oracle request query to ensure the correct data is being requested and no extra information is being disclosed.
This blend of Ethereum, Mina, and AirStack APIs allowed us to create a user-friendly, privacy-preserving, and trustless system for verifying statements related to Ethereum wallets.