We are integrating your wallet insinde of your keyboard to make payment as easy as sending an emoji
Prize Pool
This project is designed to simplify the user experience of making digital payments by leveraging account abstraction, the capabilities of ERC-4337 (often called EIP-4337, which powers account abstraction), and the future ERC-7702 standards for payment sessions and automation. Here’s how it works in detail: 1. Account Setup and Funding: • The user can deposit funds from any Layer 2 (L2) blockchain network using any supported currency, which will then be automatically swapped to USDC on the Base blockchain network. This simplifies the experience, as users don’t have to manage currency conversions manually or worry about switching networks. • This auto-swap mechanism allows users to fund their account in a streamlined way, depositing in a familiar currency and having it converted to USDC in the background. 2. Session Key for Payments: • Once the user has deposited funds into their account, they can generate a “sessionKey.” This session key is a temporary access key that enables secure, quick, and easy payments directly from a keyboard extension. • During the hackathon prototype phase, this session key is hosted on a server to simplify interactions, allowing the keyboard to manage the signature of transactions through JavaScript. However, in the final production version, the session key will be managed on-device to enhance security, with signature handling at the native level on the device. 3. Keyboard Extension for Payments: • The keyboard extension becomes a versatile payment tool with two main functions: • Request: Allows the user to generate a payment request link directly from the keyboard. This feature is useful for receiving payments without leaving a messaging app or switching contexts. • Send: Enables users to quickly initiate a payment, specifying the amount and using the session key to authenticate the transaction seamlessly. • With the session key and on-device signature management, transactions can be completed smoothly within the messaging or app interface, making the payment experience as simple as sending a message. 4. User Experience Goals: • Simplicity: By hiding the complexities of currency conversion, network switching, and cryptographic signing, users can have a familiar experience akin to traditional finance apps while using the advantages of blockchain. • On-Device Security: In the final product, signatures are managed directly on the user’s device, ensuring that keys aren’t exposed externally and adding a layer of trust for users concerned about security. • Seamless Integration: The keyboard acts as a gateway to digital transactions, enabling users to send or request funds anywhere they can type, such as in social media, messaging apps, or other communication tools. 5. Future Improvements and Standards: • Leveraging ERC-7702 (a forthcoming standard), this project is preparing for automated payments and session-based account interactions, enabling the creation of secure, limited-use keys like the sessionKey. This is particularly useful for applications needing temporary access, such as for recurring payments or one-off transactions.
In essence, the project makes sending and receiving money as easy as using your keyboard. Through account abstraction, automatic currency swapping, session keys, and secure on-device signature handling, it eliminates the technical friction typically associated with blockchain payments, offering a clean and user-friendly payment experience that can be used in any app where the keyboard is available.
1. Wallet Management with Zerodev:
• We used Zerodev as our wallet provider to manage smart wallet accounts. Zerodev enabled us to efficiently implement account abstraction, allowing users to interact with their wallets without needing to handle private keys directly or manage gas fees, streamlining the transaction experience and enhancing security.
2. Front-End and App Hosting:
• Built with Next.js and React, our mobile app is hosted within a WebView in a native app shell, which combines the flexibility of web development with native access to device features.
3. Keyboard Extension:
• Developed in Swift for iOS, the keyboard extension allows users to send or request payments directly. The integration with Daimo Pay provides an efficient way to generate payment links, wrapped in our Next.js app to enable custom UI with OpenGraph metadata, creating visually informative previews when shared in messaging apps.
4. Session Key and Express Server:
• The session key, generated through Zerodev’s smart wallet and hosted temporarily on an Express.js server, manages the signing and transaction process. Though a temporary setup for the hackathon, this approach allowed us to handle signatures through JavaScript, simplifying interactions. In future iterations, we plan to manage session keys on-device to enhance security and minimize exposure.
5. Backend and Smart Account:
• The backend, built with Express.js, processes interactions between the keyboard extension, the mobile app, and Daimo Pay. The smart account linked to each user’s wallet abstracts complex operations like transaction signing and gas fee management, providing a gas-free, seamless experience.
6. Notable Hacky Solutions:
• The server-based session key management expedited the development process, allowing us to bypass on-device cryptographic handling temporarily.
• Wrapping Daimo Pay’s functionality within Next.js gave us control over UI and branding, while OpenGraph metadata provides rich previews of payment requests in messaging apps, enhancing UX.
By leveraging Zerodev for smart wallet management and combining web and native technologies, we achieved an integrated payment solution. Users can now make transactions directly from their keyboard, making digital payments feel as seamless as sending a message.