
Cypher Wallet
Dual-layer Ethereum wallet with public account and ZK-shielded vault
Demo
About
Dual-Layer Privacy Wallet: Complete Project Description The Problem We're Solving Ethereum transactions are completely transparent - every wallet balance, transaction amount, sender, and receiver is publicly visible on the blockchain. This creates significant privacy concerns: Financial Surveillance: Anyone can track your spending habits, income, and financial relationships Security Risks: Large wallet balances are visible to potential attackers Business Privacy: Companies can't hide transaction patterns from competitors Personal Privacy: Users have no financial privacy equivalent to cash transactions Existing privacy solutions force users to choose between convenience OR privacy – you either use normal Ethereum (convenient but public) or complex privacy tools (private but difficult). Our Solution: Dual-Layer Architecture We've built a revolutionary dual-layer privacy wallet that gives users the best of both worlds: Layer 1: Public Alias Account Functions like a normal Ethereum wallet Compatible with all existing DApps and services Transparent transactions for when privacy isn't needed Easy to use for everyday crypto activities Layer 2: Private Shielded Vault Based on zero-knowledge (ZK) cryptography Completely private transactions using commitments and nullifiers Balances and transaction details are cryptographically hidden Only mathematical proofs appear on-chain, not actual transaction data Smart Routing System The wallet automatically chooses the optimal path for each transaction based on sender and receiver privacy preferences, creating four possible transaction flows. Four Transaction Types Explained Public → Public Transactions Use Case: Normal Ethereum transfers, DApp interactions, public payments How it Works: Standard Ethereum transactions through your alias account Visibility: Completely transparent on blockchain (like current Ethereum) Example: Paying for an NFT, swapping tokens on Uniswap Public → Private Transactions (Deposits) Use Case: Moving funds into private storage for future anonymous use How it Works: Deposit ETH from alias account into shielded pool, creating a cryptographic commitment Visibility: Public can see deposit amount, but cannot track where funds go next Example: Moving salary into private savings before making anonymous purchases Private → Private Transactions (Fully Shielded) Use Case: Completely anonymous transfers between privacy-conscious users How it Works: Zero-knowledge proofs verify transaction validity without revealing amounts, sender, or receiver Visibility: Only cryptographic commitments and nullifiers appear on-chain - no transaction details Example: Anonymous donations, private business payments, confidential transfers Private → Public Transactions (Withdrawals) Use Case: Moving private funds back to public use while maintaining past transaction privacy How it Works: Generate ZK proof of ownership, burn private notes, receive public ETH Visibility: Public can see withdrawal but cannot trace transaction history Example: Converting private savings to public funds for DApp use Technical Innovation: Zero-Knowledge Privacy Cryptographic Components Commitments: Mathematical representations of transaction outputs that hide amounts and recipients Formula: commitment = hash(amount + recipient_key + randomness) Stored in a Merkle tree on-chain for efficient verification Nullifiers: Unique identifiers that prevent double-spending without revealing transaction details Formula: nullifier = hash(spend_key + secret) Tracked on-chain to prevent reuse while maintaining privacy ZK Proofs: Mathematical proofs that verify transaction validity without revealing private information Proves: "I own unspent funds without revealing which ones" Proves: "This transaction is valid without revealing amounts or parties" Key Management System Spend Key: Used to generate nullifiers and authorize private transactions View Key: Allows scanning blockchain for incoming private payments without spending ability Stealth Addresses: Generate unique addresses for each private payment to prevent address linking User Experience Innovation One-Click Privacy Toggle Users can instantly switch between Public Mode and Private Mode within the same wallet interface. Public Mode: Shows standard Ethereum balance and transaction history Compatible with all existing wallets and DApps Fast, cheap transactions using normal gas fees Private Mode: Shows private balance as encrypted notes Transaction history appears as cryptographic proofs Enhanced privacy with slightly higher computational costs Intelligent Routing The wallet automatically determines the best transaction path: If both users prefer privacy → private transaction If recipient doesn't support privacy → public transaction If sender wants privacy but recipient is public → deposit then public transfer Users can manually override automatic routing Gasless Privacy (Advanced Feature) Using ERC-4337 account abstraction and relayer network: Users can pay transaction fees directly from their private balance No need to maintain ETH in public accounts for gas Relayers batch multiple private transactions for efficiency Privacy Metadata Registry ENS Integration Users can register privacy preferences in a decentralized registry: alice.eth → Accepts private payments, prefers privacy bob.eth → Public only, no privacy features company.eth → Private for payments over 1 ETH Encrypted Metadata Storage Privacy preferences are stored encrypted on-chain: Only the wallet can decrypt user preferences Prevents public analysis of who uses privacy features Allows gradual privacy adoption without revealing user identities Security & Compliance Features Viewing Keys (Regulatory Compliance) Users can optionally generate "viewing keys" for auditing Allows regulatory compliance without compromising day-to-day privacy Users maintain full control over when and how to share viewing access Recovery Mechanisms Private keys can be recovered using standard seed phrase methods Private transaction history can be reconstructed from blockchain data using view keys No central authority holds user keys or transaction data Audit Trail All transactions remain cryptographically verifiable Users can prove payment history when needed (for taxes, audits) Privacy is selective, not absolute – users control disclosure Real-World Use Cases Individual Users Privacy-Conscious Individuals: Hide spending patterns from surveillance High-Net-Worth Individuals: Prevent targeted attacks based on visible wealth Activists/Journalists: Protect financial privacy in authoritarian regions Business Owners: Keep business transaction patterns confidential Enterprise Applications Salary Payments: Companies can pay employees privately Supply Chain: Hide sensitive business relationships and payment amounts Treasury Management: Manage corporate funds without revealing strategies Competitive Intelligence: Prevent competitors from analyzing spending patterns DeFi Integration Private Liquidity: Add liquidity to AMMs without revealing amounts Anonymous Lending: Borrowing and lending with identity protection Privacy-Preserving DAOs: Vote and participate without revealing wallet connections MEV Protection: Prevent MEV bots from front-running based on transaction analysis Technical Architecture On-Chain Components ShieldedPool Contract: Core ZK verification, Merkle tree storage, nullifier tracking AliasAccount Contract: Public transaction management, deposit/withdrawal interface Registry Contract: Encrypted privacy preferences and metadata Relayer Network: Optional gasless transaction processing Off-Chain Components Wallet Client: Key management, proof generation, transaction construction Indexer Service: Scans blockchain for encrypted transactions relevant to user Prover Service: Generates zero-knowledge proofs (local WASM or secure remote) Cryptographic Primitives PLONK/STARK Proofs: For transaction validity verification Poseidon Hashing: Gas-efficient hash function for commitments and nullifiers ECIES Encryption: For transaction metadata and stealth address communication Implementation Phases Phase 1 (MVP - Hackathon) Basic ShieldedPool contract with deposit/withdraw Simple wallet interface with privacy toggle Mock ZK proofs for demonstration Four transaction type support Phase 2 (Beta) Full ZK proof system implementation Wallet client with local proof generation Basic indexing and transaction scanning Testnet deployment and community testing Phase 3 (Production) ENS/Registry integration for privacy metadata Relayer network for gasless transactions Mobile wallet support Mainnet deployment with security audits Phase 4 (Ecosystem) DApp integration SDK Privacy-preserving DeFi protocol integrations Enterprise compliance tools Cross-chain privacy bridges Why This Matters This project represents a fundamental shift in how we think about blockchain privacy: For Users: Finally gives people a choice between convenience and privacy without sacrificing either For Ethereum: Adds a crucial missing piece – financial privacy – while maintaining full compatibility For Adoption: Removes a major barrier preventing mainstream users from using crypto due to privacy concerns For Innovation: Creates a platform for privacy-preserving DeFi and Web3 applications Competitive Advantages Unlike existing privacy solutions that require completely separate systems (Tornado Cash, Zcash, Monero), our dual-layer approach: Maintains Ethereum Compatibility: Works with existing infrastructure Gradual Adoption: Users can adopt privacy features incrementally Network Effects: Privacy improves as more users adopt the system Regulatory Friendly: Includes compliance features without compromising core privacy Developer Friendly: Simple SDK for DApp integration This isn't just another privacy coin – it's a privacy layer for the entire Ethereum ecosystem that users can adopt without changing their existing workflows or sacrificing the benefits of the broader Ethereum network.
How it's made
ore Tech Stack We built this using Solidity smart contracts on Ethereum with a React/TypeScript frontend. The ZK proof system uses Circom circuits with Groth16 proving, and we deployed on Sepolia testnet with Alchemy RPC endpoints. Smart Contract Architecture The heart is our ShieldedPool contract that manages a Merkle tree of commitments and tracks nullifiers to prevent double-spending. We use Poseidon hashing for ZK-friendly operations. The AliasAccount contract handles public transactions and deposits into the shielded pool. Our biggest hack here was optimizing the Merkle tree - instead of storing the full tree on-chain (super expensive), we store only leaf nodes and compute Merkle paths off-chain, then verify roots using cached historical states. This saves about 80% gas compared to naive implementations. Zero-Knowledge Circuit Design We wrote Circom circuits that prove transaction validity without revealing private information. The withdraw circuit verifies you own unspent funds and computes nullifiers to prevent double-spending, all while hiding amounts and addresses. Originally proof generation took 15+ seconds on mobile, so we optimized with Web Workers, custom Rust-to-WASM compilation, and proof caching to get it down to 3-4 seconds. Frontend Innovation Built with Next.js and Wagmi for Ethereum interactions. We use Zustand for state management and React Query for caching. The trickiest part was note discovery - helping users find their private transactions without revealing privacy. We scan blockchain events and try to decrypt transaction memos with the user's viewing key. If decryption works, it's their transaction; if not, we skip it. This preserves privacy while enabling wallet functionality. Notable Hacks Our privacy-preserving indexer was necessary because The Graph doesn't natively support privacy features. We built a custom system that indexes only public commitments and nullifiers, never amounts or addresses. For mobile users who can't run WASM proof generation, we deployed Vercel Edge Functions as a fallback. We also implemented optimistic UI updates - transactions show as "pending" immediately while proofs generate in the background. Partner Technology Integration Alchemy provides webhook notifications for real-time deposit detection and archive node access for historical Merkle root computation. We extended RainbowKit with custom privacy mode connectors. The Graph helps with general blockchain indexing, though we had to build privacy features on top. Performance Optimizations Private balance computation requires scanning all notes, which is expensive, so we only compute it when users switch to private mode. We use lazy loading and cache results. For gas estimation on ZK transactions, we analyze historical similar transactions and add a 20% buffer for proof verification variance. Security Measures We implemented commit-reveal schemes to prevent front-running of ZK transactions. Users first commit to a transaction, then reveal it after a delay. For the hackathon, we used development trusted setup parameters, but production would require a proper Powers of Tau ceremony. Development Environment Used Hardhat for smart contract development with Foundry for gas optimization and fuzzing. Frontend deployed on Vercel with IPFS for metadata storage. We participated in testing on Sepolia and used OpenZeppelin contracts for security standards. What Made This Challenging The hardest part was balancing privacy, performance, and user experience. Getting ZK proofs working smoothly in web browsers while maintaining security guarantees required significant optimization. The note discovery system needed to work without compromising privacy, and the dual-layer UX had to feel seamless despite complex cryptographic operations happening underneath. Most Proud Technical Achievement The privacy toggle that seamlessly switches between public and private modes in the same interface, plus getting mobile ZK proof generation working smoothly. The gas-optimized Merkle tree implementation that other projects can easily integrate was also a major win. This represents months of research condensed into a working hackathon demo, with careful attention to both cryptographic security and practical usability.