Search projects, hackathons, sponsors and tech

    ← All projects

    Demo

    About

    The problem it 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 1. **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 2. **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 3. **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.

    How it's made

    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 1. Stealth address generation requires proper cryptographic implementation of ECDH 2. Key management is critical - viewing keys and spending keys must be stored securely 3. Discovery mechanism must efficiently scan and match announcements to user's stealth addresses 4. Balance aggregation requires careful handling of multiple addresses 5. Privacy depends on proper key generation and no on-chain linking 6. Transaction direction detection requires comparing addresses from multiple data sources