MOTIVATION
Nobody disputes that ERC4337 is a major catalyst on our journey to on-board the next billion users to web3. However, as of July 23, there have only been 31,000 smart contract accounts created on the 6 largest EVM chains (Etheruem, Polygon, Arbitrum, Avalanche, Optimism, and Gnosis), compared to over 1 million active EOA addresses on those same chains. Its clear that novel, genuine applications of ERC4337 for web2 users are needed to accelerate adoption.
Armed with the ability to create seamless user experiences for web2 users, we set out to build an end-to-end payments solution for an organization’s employees and vendors. Our no-code platform abstracts away the difficulties of customizing & deploying SAFE smart contract accounts, reliably handles sensitive vendor/employee data using SNARK proofs, & uses zkBob Direct Deposits to facilitate privacy-preserving payments - all on one of the most popular L2s: Polygon.
SOLUTION
WaaS Pay is a no-code tool for organizations to build-their-own smart account wallets (ERC4337) & deploy them on behalf of web2 users, on demand, using only a URL link. Wallets are issued with all the popular account-abstraction features & come with privacy-preserving functionality out of the box, enabling a seamless onboarding experience to web3 for private and instantaneous transactions on the blockchain between organizations & individuals alike.
As an organization wishing to leverage the blockchain for instant payments to my employees or vendors while preserving privacy, WaaS Pay let’s me:
- Use the no-code interface to customize smart contract account features, like Social Logins, fiat on/off ramps, and gasless transactions for your recipients.
- Leverage SNARKs (zero-knowledge proofs) to restrict who is eligible to redeem & deploy your wallets & to keep sensitive data secure.
- Issue unique URLs to your recipients to streamline their on-boarding.
As a wallet recipient, I receive a feature-rich wallet to privately receive and send funds on Polygon without needing to know anything about web3:
- Log-in with my favorite authentication methods - no seed phrases or master passwords.
- An account to log-in to zkBob with to withdraw direct deposit funds from for private payments on-chain.
- The unique and sensitive credentials I use to redeem my wallet never leave my device & are secured by zero-knowledge proofs.
- Transactions are sponsored - gas is paid for by the wallet issuer.
- Fiat on and off-ramps are provided by trusted partners like Stripe and Monerium.
What's next:
We intend to continue building this project beyond the hackathon and the below are some immediate/short-term improvements we're planning to make.
- Adding support for the bulk-creation of smart contract accounts for larger organizations
- Adding support for automatic zkBob account instantiation and linking at the time of wallet deployment for a web2 user, and automatic recurring payments between the organization <> organization's zkAccount <> recipients zkAccount.
- Adding more Safe plugins - primarily focused on enhancing the user experience for handling payments
- Support for Safe smart contract account deployments on more EVM chains
- Add optional identification features such as PolygonID, SismoConnect, and WorldCoinID
- Building an open-source SDK to let developers add their custom, organization-specific Safe plugins to our platform
- Integration with Push Notifications infrastructure
- Extending support for Biconomy, Metamask Snaps, and dfns wallet infrastructures.
WaaS Pay is a simple React app that leverages a number of novel technologies to enable the no-code customization, creation, and deployment of smart contract accounts for web2 users:
- Safe{Core} Protocol Kit and the Safe{Core} Account Abstraction SDK are used to instantiate & deploy smart contract account wallets. The Auth Kit, OnRamp Kit, and Relay Kit are all used alongside the Protocol Kit to deploy feature-rich smart contract accounts.
- Custom Safe plugins to further enhance the user experience and capabilities of the smart contract accounts - including: customizable recovery methods, time-based policies, and allow/block lists.
- zkBob is used to facilitate anonymous transactions between the end-user and issuing organization. Upon wallet creation, a zkAccount is instantiated & linked so that the organization (e.g. employer) can send funds to the recipient privately.
- Mina Protocol’s SnarkyJS library is used for generating and validating the zero-knowledge proofs required to verify that only the intended recipient of a wallet can actually deploy one.
- Polygon zkEVM is the blazing fast and secure L2 blockchain that all the smart contract accounts are deployed to.
- A self-hosted IPFS node deployed using Helia is used to store all the hashed sensitive metadata from vendors & employees.