The lack of hiding your history on the blockchain when you make a payment to someone. And have a way in order to send some tokens through a link rather than old fashion way of sending through an address.

What it does ?

Pays through a link 📱💳

How we built it 👷

We use zero-knowledge proofs and as you might know circom snarkjs. For UI we use chakra-ui For contracts deployment and circuit builds hardhat.

Logic process / Arhitecure 📐

So for this Dapp we use Merkle tree in order to check if a commitment has been paid or not. If the Commitment is in the Merkle tree than the paid has been done. After reedeem the nullifier is spend so it can not be spent twice. Merkle tree is a fancy way of saying hashes of hashes of data. You hash the data you hash the hash up to a point where you are let with a single hash called root.

Process steps:

Generate a new link this is an offline process it uses random generated BIGBumbers for nullifier and secret and after that hash. So now you have your link(the hash of the nullifier and the secret) Go and pay - the contract inserts the commitment into the Merkle tree On redeem we decode the link and get the nullifier and the secret and create the proof based on the wasm and zkey and create the proof We send the withdraw request it gets to the blockchain and the Verifier checks the proof and after that the withdraw is made

Challenges we ran into 🚧 A lot of issues with dependencies and the dependencies of the dependecies in fact there are some repositories that because they are open source their maintenance is deficient. So for some dependecies as snarkjs I had an issue in fastfile I even open an issues ticket but for this project in order to be built I used a previous version which worked just fine.

Accomplishments that we're proud of 🎉 We deploy on mainnet. Check and test even on mainnet but also on testnet. On mainnet you at the moment can create links that will pay you 1 USDC and on testnet there is deployed an ERC20 token that you can get usingthe button from Header to get some test token in order to test the Dapp

What we learned 📗 That sometimes library dependencies are paint points.

What's next for AnonPay 🏆 Multicurrency payment. Multiple amount values

Built With

Share this project: