🧩 The Challenge: P2P, but Smooth
In Web2, peer-to-peer payments are a solved problem.
In Web3? They still feel like you’re programming the money yourself.
But now that platforms are shipping chat-like crypto UX —
like WhiteBIT’s QuickSend and Shake-to-Send,
we started thinking: how would we build something like this from scratch?
🔄 Key Features to Recreate
From a system design perspective, you’d need:
Username-based payments
→ no public addresses in the UI
Persistent chat history
→ like a messenger, tied to transfer events
Proximity-based transfers (Shake-to-Send)
→ discover nearby users, confirm transfer quickly
0% fee system
→ to encourage daily micro-interactions
Sounds simple. But let’s see what it takes.
🏗️ Architecture Overview
Here’s how I’d approach it:
🔐 Identity Layer
Use UID/nickname mapping in database, abstracted from wallet addresses
Optional: ENS-style registry for on-chain aliasing (if using EVM)
📦 Messaging & History
Real-time WebSocket server (Node.js or Go)
Messages linked to transaction_id, stored in relational DB
Clickable messages = transaction preview + repeat action
📱 Proximity Transfers (Shake)
Device-level: Bluetooth Low Energy + GPS fallback
Backend: session token generation on device shake (expires in 60 sec)
Frontend: minimal UI to confirm + send
This is where WhiteBIT’s Shake-to-Send gets it right —
no QR codes, no copy-paste, just motion and interaction.
🔄 Transaction Layer
Internal ledger system (centralized) or microservice over L2 like zkSync
Transfers initiated via trusted alias → processed with 0 confirmations (then reconciled)
🧠 Why This Matters
These systems might sound “centralized” —
but they serve the UX expectations of real users.
And building them right creates serious competitive moats:
Retention from persistent chat context
Stickiness from social interaction
Virality from proximity features
🔧 Closing Thoughts
Web3 doesn’t have to be clunky to be secure.
Features like QuickSend and Shake-to-Send show how far we’ve come.
And if you’re building similar flows in your app —
treat UX like infrastructure. Design it as seriously as your contracts.
Top comments (0)