Project Name: Bunny Notes
Project Track: DeFi
Team Name: StrawberryChocolateFudge ( The name of the github user, the project is developed by a sole developer) ,
Team Member(s): barfolomew
The goal is to create an accessible and secure way to Gift or Spend USDT and USDD in-person or online and to spend crypto instantly with the same security as Single Use Virtual Credit Cards and with the same ease as Pay Pass credit card payments.
Create printable Gift Cards to gift crypto in person to anyone.
Just scan a QR code to pay and only one of the parties has to have internet connection during the payments. The Notes can be printed and stored offline and can be spent like cash and you can pay with just the fraction of the denomination and receive back change.
Make in-person crypto payments so easy even your grandma could use it!
As seen above, the application uses Zero-Knowledge Proofs to prove on-chain the ownership of crypto notes that have the value deposited into smart contracts.
Alice generates a note using cryptography and deposits the value. These notes can be used to withdraw the value later, as a form of a gift card( full withdraw) or a cash payment where alice can receive change and pay with just a fraction of the note denomination.
Project Website: bunnynotes.finance (Available now)
Project Test Instructions:
- go to the website bunnynotes.finance.
- You need metamask to try out the application
- You can see the help page for information about how the app works
- Switch to the correct testnet and mint some testnet tokens for yourself.
- Now you are ready to try the app and create gift cards or cash notes.
- Click purchase gift card or purchase cash note
- Download the note, approve spend and deposit the ERC20 to give the note Value
- You can verify the downloaded Notes
- Give the gift card to somebody!
- Cash out the gift cards or create payment links to spend the cash notes!
- Enjoy the instant gas free payments using the cash notes!
The project is developed using Circom, Hardhat, Solidity and React,Web3.js.
The project uses Circom circuits for zero-knowledge proofs and Solidity for payments and to interact with ERC-20 tokens.
The generated notes are rendered as PDF files and downloaded to the user’s pc.
The value must be deposited into the smart contract for the note to be valid and the notes are invalidated after the value has been withdrawn. They are single use only.
The plan is to support USDT and USDD notes initially, with the denomination 10 USD, 100 USD and more coming later.
The notes can be printed and later spent without internet connection. because while making payments only one of the parties (Alice or Bob) needs to have internet.
This allows us to create instant payments for point of sale systems where the seller transmits the transaction to the network while the buyer can just pay by scanning a QR code and be sure the seller don’t have access to her full balance.
Paying with a note is as secure as Single-Use Virtual Credit Cards where we can set the maximum limit to allow less trust between parties. Alice can be sure Bob cannot steal more than the denomination and pay securely (on the go) without exposing her full balance.
Making payments this way adds an extra layer of security over paying manually or via smart contract calls where an attacker could approve high spend allowances to steal funds.
Using the payment request feature, Bob can create a payment link to send to Alice and when Alice makes the payments the accounts are instantly credited, or Bob could show the payment request in person on his phone and scan the QR code of Alice’s note for instant payments. Alice don’t have to have internet connection to make the payment.
The withdraw fee is 1% but there are no additional costs.
Because of the security provided by zero-knowledge proofs, it is possible to create fully gas-less payments for both parties later. The zero-knowledge proof contains all the details of the transaction so a relaying third party cannot maliciously alter it. This way we can create crypto payments in the future without the direct use of crypto wallets.
Disclaimer: While the project might work similarly to Tornado Cash with the use of notes, it does not provide any anonymizing or mixing features. All transfers of funds are traceable.
Zero-Knowledge Proof Circuit development
Smart Contract Development
Front-End with React
Relaying server development (Gasless txs)
Smart Contract Code Review (After the Hackathon)
The smart contracts are on BTTC testnet, I will list the links with the addresses with a link to the contract code
ZkSnark Verifier contract: (Auto generated from circom circuit!)
Bunny Notes Contract:
ERC20MOCK contract for testing: