Inspiration

Zenmo is a social peer-to-peer finance app that uses zk technology to privatize transactions. We know, lots of buzzwords. Let's break it down.

Inspiration struck when one of the team members recalled going to Canada to celebrate a (crypto) friend's birthday. She was with a group of people that did many activities together and therefore had lots of shared expenses (think Uber, Airbnb etc.). The group resorted to a "loose accounting method" to estimate the total and settle up. When settling, she had no Canadian dollars, so she sent crypto (with fees) and had to KYC each time (even though she was already KYC'd), resulting in a very frustrating experience. When thinking about what to build for Infinite Hacks, it was easy to say "I wish there was a Venmo for crypto."

What it does

Zenmo provides a way for users to authenticate on-chain and chat with the friends/groups they're a part of in order to track shared expenses and pay each other.

Given the developments in zk to allow for cheap transactions, we wanted to push the boundaries of what that meant by layering a social component to peer-to-peer payments. When logging in with a wallet option (Metamask, WalletConnect), Zenmo creates an abstracted account for you using Aztec. Think incognito mode for your wallet and profile. Or you can just use your regular wallet without going incognito.

Then, you can create a group with friends to chat, share and split expenses. From what we could tell, this is the first time a hardware wallet such as Metamask is used in a chat-focused app. When you're ready to pay for an expense, simply use the app to submit a payment to another private account.

Using event-focused chats - such as a trip to Bogota - helps you organize various expenses and activities that you do with the many circles of people in your life. Adding the ability to submit payments based on what is owed lowers the cost and friction of the usual web3 frustrations. To add, having a private account keeps your personal expenses..... personal. All the while, you can still be a web3 maxi and resent the UX a little less.

How we built it

Zenmo is a Nextjs/React app that allows wallet logins using Web3Auth. The user can verify they're a person using WorldCoin. When the user is logged in, an Aztec wallet is generated and an alias is generated with web3.storage using the Aztec public address. W3name is used to create a database to hold all the user data using a key-value pair system. Then the user pays using Aztec (zk.money) or their own wallet. They can get notifications through Push Protocol; the contract is deployed using Swarm. A subgraph was created using The Graph and IPFS to keep track of the notifications.

For Swarm, we leveraged push protocol and the graph to help users stay alert in the app. For our push token solidity contract, we deployed it within the swarm network. In the future, we want to leverage swarm as a decentralized database! After struggling with setting it up, we decided to quickly make a hash map in IPFS for this hackathon. We can't wait to migrate to swarm and I'm personally really excited about the potential of MDBee!

Accomplishments that we're proud of

Getting onboarding fully working with Ethereum wallets and Worldcoin, getting push notifications working, and almost completing transactions and chat!

What we learned & What's next for Zenmo

We learned so many cool tools!! We deep-dived into all 5 of the sponsors at Infinite Hacks and we wish we could have integrated them all. In the future, we want to start integrating guilds with DXDAO, privacy options with Hopr, and a decentralized database with Swarm.

We also plan to integrate a feature to round up payments to automate charity donations and finish the front end to match the UI hi-fidelity mockups designed: https://bit.ly/3rISIEg

ERC20 Address: hackwithzach.eth

Built With

  • figma
  • nextjs
  • swarm
  • thegraph
  • walletconnect
  • web3auth
  • worldcoin
Share this project:

Updates