Discover people by their socials and pay them across EVM chains
H@ndlePay is a decentralized payment protocol that solves crypto's UX problem by enabling users to send cryptocurrency to social media handles (@username) instead of complex wallet addresses (0x...). The protocol creates a unified identity layer across EVM chains, where users can link multiple social media accounts (Twitter/X, Instagram, Discord, Telegram, Farcaster, Lens, etc.) to their wallet address. Once registered, anyone can send them ETH or USDC by simply knowing their social handle - just like Venmo or PayPal, but for crypto. Key Features:
Universal Handle Resolution: Send payments to @alice on Twitter, alice.tg on Telegram, or alice#1234 on Discord - all resolve to the same wallet Multi-Platform Support: Link unlimited social handles from any platform to a single wallet ENS Integration: Automatically enriches user profiles with ENS names and avatars for enhanced identity verification Real-Time Indexing: The Graph Protocol indexes all registrations and payments for instant querying Simple Payment Flow: Two-click payments - enter handle, enter amount, send. No copying addresses, no QR codes USDC Support: Native stablecoin payments for real-world use cases Cross-Chain Ready: Architecture designed for LayerZero integration to enable cross-chain identity synchronization
The platform is live on Base and Ethereum mainnet with a working web interface at https://handlepay.vercel.app/, where users can browse registered members, search by platform, and send payments directly through the UI.
Smart Contract Architecture: The core HandleRegistry contract (deployed at 0x132727D74dF3246b64046598626415258dc648f0 on Base) implements a member-centric data model where each user gets a unique ID that maps to multiple social handles across platforms. We use keccak256 hashing of platform:username pairs to create unique identifiers, preventing duplicate registrations while allowing the same wallet to have multiple handles.
Data Indexing with The Graph: We deployed a custom subgraph that indexes MemberCreated, HandleAdded, and PaymentSent events from our smart contracts. This enables real-time querying of member data without expensive on-chain lookups. The subgraph handles case-insensitive username matching by generating multiple variants (lowercase, uppercase, title case) for robust handle resolution.
Frontend Stack: React + Vite: For fast development and optimal bundle sizes Dynamic SDK: Provides seamless wallet connection with support for email/social login, crucial for onboarding non-crypto natives Wagmi + Viem: Type-safe Ethereum interactions and contract calls ENS Integration: Reverse-resolves ENS names and avatars to enrich user profiles Tailwind CSS: For rapid UI development with a clean, modern design
Payment Implementation: For same-chain payments, we encode calls to payToHandle(platform, username) with the payment value. If the registry isn't deployed on a particular chain, we fallback to direct transfers. USDC payments use standard ERC-20 transfer after handle resolution. The UI includes stubbed flows for cross-chain payments via LayerZero (ETH) and Circle CCTP v2 (USDC), ready for integration.
Notable Technical Decisions:
Platform-Agnostic Design: Instead of hardcoding specific platforms, we use a flexible string-based system that can accommodate any social platform, including future ones. This makes the protocol future-proof as new social platforms emerge. Gas Optimization: By deploying primarily on Base (with ~$0.10 transaction costs), we make the system accessible to all users. The contract architecture is designed to minimize storage operations and gas consumption. Graceful Degradation: The UI handles missing ENS records, undeployed registry contracts, and failed Graph queries gracefully, ensuring the core payment functionality always works even when external services are down. Case-Insensitive Matching: We implemented a clever GraphQL query pattern using username_in with multiple case variants, solving the common UX problem of handle case sensitivity without expensive on-chain string operations. Hardhat Tasks: We created custom Hardhat tasks like pay-eth that mirror the UI functionality, allowing for automated testing, command-line payments, and easy integration for developers. Monorepo Structure: Organized as a monorepo with clear separation between contracts, frontend, and indexing logic, making it easy for team members to work in parallel without conflicts.
Partner Technology Benefits:
Dynamic simplified our wallet connection flow, reducing it from hundreds of lines to a single component and enabling social login for Web2 users The Graph eliminated the need for a traditional backend, making the app fully decentralized while providing fast, complex queries ENS added trust and recognition to user profiles through existing Web3 identity infrastructure Coinbase Developer Platform (CDP) provided additional wallet connection options, expanding our potential user base Circle's USDC enabled stablecoin payments critical for real-world use cases
Hackathon Development Process: Built in 20 hours with a team of three, we divided responsibilities strategically: smart contracts and Graph indexing, frontend and Dynamic integration, and cross-chain architecture planning. We prioritized shipping a working mainnet product over complex features, resulting in a live application processing real transactions rather than just a demo. The entire system is open-source, deployed on mainnet with real users and transactions at https://handlepay.vercel.app