Cypher Wallet
Your crypto, truly private.
Created on 14th December 2025
•
Cypher Wallet
Your crypto, truly private.
The problem Cypher Wallet solves
MiniApp Deployed URL: https://base.app/app/cypher-apps.vercel.app
Pitch Deck: https://drive.google.com/file/d/1ZfNqbbKr9JPLwCwvGqe2agTIt0UQzsLl/view?usp=sharing
Cypher is a non-custodial crypto wallet that provides cash-level privacy on the blockchain through Stealth Address technology.
Privacy Problems in Traditional Crypto
-
Public wallet addresses expose everything
- Anyone can see your balance, transaction history, and spending patterns
- Addresses can be tracked and linked to your identity
- No financial privacy whatsoever
-
Long, complex addresses are hard to share
- Addresses like 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb are difficult to remember and share
- High risk of typos when copy-pasting
- Not user-friendly for everyday use
-
Transaction history is permanently public
- Every transaction is recorded on the blockchain forever
- Can be analyzed to track patterns and relationships
- No way to "delete" your transaction history
How Cypher Solves These Problems
1. Stealth Address Technology
- Each transaction uses a cryptographically generated one-time address
- Your main wallet address is never exposed on the blockchain
- Transactions cannot be traced back to your main wallet
- Cash-level privacy: recipients can see their transactions, but outsiders cannot link them together
2. Username-Based System
- Use a username like @yourname instead of long addresses
- Easy to remember and share
- Works just like an email or social media handle
- Real-time validation to ensure username availability
3. Private Transaction Flow
- Send crypto to usernames without knowing the recipient's address
- System automatically generates stealth addresses
- Recipients can see incoming transactions without revealing identity
- Transactions cannot be tracked by third parties
What People Can Use It For
Business & Commerce
- Accept payments without exposing your wallet address
- Protect your business financial information
- Receive payments with an easy-to-remember username
Personal Finance
- Send money to friends/family privately
- Protect your financial privacy from blockchain analysis
- Avoid transaction pattern tracking
Content Creators & Freelancers
- Accept payments from followers without exposing addresses
- Easy-to-share username for social profiles
- Privacy for income and transactions
Privacy-Conscious Users
- Untraceable transactions
- Financial privacy on public blockchains
- Full control over your transaction data
How It Makes Existing Tasks Easier/Safer
Easier:
- ✅ Share username @yourname instead of long addresses
- ✅ Real-time username validation
- ✅ Simple send/receive interface
- ✅ Automatic stealth address generation
- ✅ Transaction history with privacy indicators
Safer:
- ✅ Main wallet address never exposed
- ✅ Each transaction uses a unique stealth address
- ✅ Non-custodial (you control your keys)
- ✅ No transaction linking or tracking
- ✅ Cash-level privacy on public blockchain
Built on Base L2:
- Lower transaction fees
- Faster confirmations
- Ethereum security with L2 efficiency
Cypher enables everyday crypto use with the same privacy as cash, while maintaining the transparency and security of blockchain technology.
Challenges we ran into
Challenges I Ran Into
1. Stealth Address Generation and Key Management
The Problem:
Generating stealth addresses that are cryptographically secure and ensuring proper key derivation for each transaction.
The Challenge:
- Generating unique ephemeral keys for each transaction
- Computing shared secrets using ECDH (Elliptic Curve Diffie-Hellman)
- Ensuring the recipient can derive the same stealth address using their viewing key
- Managing viewing keys and spending keys securely
The Solution:
- Implemented proper ECDH key exchange using secp256k1 curve
- Generated ephemeral key pairs for each transaction
- Used keccak256 hash of shared secret to derive stealth address
- Stored viewing keys securely in encrypted localStorage
2. Stealth Address Announcement and Discovery
The Problem:
Recipients need to discover their stealth addresses from on-chain announcements without exposing their main wallet address.
The Challenge:
- Scanning blockchain events to find announcements for user's stealth addresses
- Matching ephemeral public keys with user's viewing key to compute stealth addresses
- Handling multiple stealth addresses per user
- Efficiently scanning large block ranges
The Solution:
- Implemented event scanning from Blockscout API
- Computed all possible stealth addresses from viewing key and ephemeral public keys
- Used announcement contract events to link transactions to stealth addresses
- Added caching mechanism to avoid redundant blockchain queries
3. Balance Aggregation Across Stealth Addresses
The Problem:
Users receive funds at different stealth addresses, but need to see a unified balance across all their stealth addresses.
The Challenge:
- Discovering all stealth addresses associated with a viewing key
- Fetching balances from multiple addresses efficiently
- Aggregating balances from main wallet and all stealth addresses
- Handling cases where stealth addresses haven't been used yet
The Solution:
- Scanned announcement events to discover all stealth addresses
- Implemented parallel balance fetching for main address and stealth addresses
- Aggregated balances using BigInt for precision
- Cached discovered stealth addresses to reduce redundant scans
4. Transaction Type Detection (SEND vs RECEIVE)
The Problem:
Determining whether a transaction is a SEND or RECEIVE when scanning stealth address announcements.
The Challenge:
- Announcement events don't explicitly indicate transaction direction
- Need to compare sender address with user's address
- Handling cases where sender information might be missing
- Differentiating between stealth address transactions and regular transactions
The Solution:
- Used Blockscout API to get transaction sender (
tx.from.hash
) - Compared sender address with user's main wallet address
- For RECEIVE: sender is different from user
- For SEND: sender matches user's address
- Added fallback logic for missing sender information
5. Username to Stealth Address Resolution
The Problem:
When sending to a username, need to retrieve the recipient's viewing key from registry contract to generate their stealth address.
The Challenge:
- Querying registry contract for viewing key by username
- Handling cases where username doesn't exist
- Generating stealth address from viewing key before sending
- Ensuring the generated stealth address is unique for each transaction
The Solution:
- Implemented registry contract interaction to fetch viewing keys
- Generated stealth address on-the-fly using recipient's viewing key
- Used ephemeral key generation to ensure uniqueness
- Added error handling for invalid usernames or missing viewing keys
6. Stealth Address Privacy Preservation
The Problem:
Ensuring that stealth addresses cannot be linked back to the main wallet address or to each other.
The Challenge:
- Each stealth address must appear independent on-chain
- No direct connection between stealth addresses and main address
- Ephemeral keys must be truly random and unique
- Viewing keys must not reveal spending keys
The Solution:
- Used cryptographically secure random number generation for ephemeral keys
- Implemented proper key separation (viewing keys vs spending keys)
- Ensured each transaction uses a unique ephemeral key
- No on-chain link between stealth addresses and main wallet
Key Takeaways
- Stealth address generation requires proper cryptographic implementation of ECDH
- Key management is critical - viewing keys and spending keys must be stored securely
- Discovery mechanism must efficiently scan and match announcements to user's stealth addresses
- Balance aggregation requires careful handling of multiple addresses
- Privacy depends on proper key generation and no on-chain linking
- Transaction direction detection requires comparing addresses from multiple data sources
Tracks Applied (1)
Base Track
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.
