A ZKP protocol for obfuscating your wallet address from your spendings
The project is built with PolygonID technology where in there are issuers, provers and verifiers. In our case what we wanted to do is have a simple tornadoDAO setting that acts as dark pool for all the users who pay for services like subscriptions, one time payments like events etc. Here the isssuers would be the smart contract we have let's call it Stream Manager and Prover would be the user claiming that they have already paid, and verifier being the service provider, checking the validity of the user claim. Since the claims are ZKPs, no information of the user is required to explicitly collected to authenticate an user, since all the payments for multiple providers go into the same dark pool aka our Stream Manager, the wallet address cannot be assigned to an identity. Thus keeping your wallet from being a way to be tracked.
The project utilizes Polygon ID's Off Chain issuer node, to issue claims, Polygon ID app to store the claims, and also use it as an authorizer. While interacting with Off chain issuer node, we were running into CORS errors and because of that we created an intermediary server that can talk with the node using Node Js, Express Js, Axios. On the front end we are using Next Js and Shadcn/UI for our styling, midjourney for our images on the website. We have used thirdweb to create code snippets for developing our application. For writing smart contracts we intially thought of using foundry, but since we did not work with it before we used Remix IDE to write and deploy our code. We also wrote ZKPs using Zokrates to accomodate our protocol to be used across web3 space rather than just sticking with Polygon