A modern, secure mock Web3 wallet application that demonstrates core blockchain wallet features using mock ETH balances and real-world integrations.
- Create/Import Wallet: Generate new 12-word mnemonic phrases or import existing ones
- Mock ETH Balances: Each new wallet gets a random balance between 1-10 ETH
- Send Mock ETH: Transfer funds between addresses with concurrent processing
- USD to ETH Conversion: Convert USD amounts to ETH using Skip API
- Transaction History: View complete transaction history with status tracking
- Real-time Notifications: Email notifications and in-app toasts for transactions
- Message Signing: Users must sign transaction messages before execution
- Time-based Validation: Transfer messages expire after 30 seconds
- Price Tolerance Check: USD transfers include price fluctuation protection
- Encrypted Storage: Private keys and mnemonics are encrypted in the database
- Secure Email Notifications: HTML email notifications with transaction details
- Responsive Design: Works seamlessly on desktop, tablet, and mobile
- Modern Interface: Clean, professional design with smooth animations
- Real-time Updates: Dynamic balance and address updates
- Toast Notifications: Beautiful in-app notifications for transactions
- Loading States: Visual feedback during transaction processing
- Python 3.7+: Core application language
- Flask: Web framework for API and routing
- MongoDB: Database for user accounts and transactions
- Web3.py: Ethereum address generation and blockchain interaction
- PyCryptodome: AES encryption for secure data storage
- Skip API: Real-time USD to ETH conversion
- SMTP: Email notification system
- HTML5/CSS3: Modern web standards
- JavaScript (ES6+): Interactive functionality
- Bootstrap 5: Responsive UI framework
- Font Awesome: Icon library
- Inter Font: Modern typography
- jQuery: DOM manipulation and AJAX
- Skip API: USD to ETH conversion
- Gmail SMTP: Email notifications
- Google Charts: QR code generation
- Python 3.7 or higher
- MongoDB (local or cloud)
- Gmail account for email notifications
- Internet connection for API calls
-
Clone the repository
git clone https://github.com/yourusername/cypherd-wallet.git cd cypherd-wallet -
Create virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Configure environment variables Create a
.envfile in the root directory:INFURA_ID=your_infura_project_id MONGODB_URI=your_mongodb_connection_string GMAIL_USER=your-email@gmail.com GMAIL_PASSWORD=your-app-password
-
Update email configuration In
app.py, update the email settings insend_notification():sender_email = "your-email@gmail.com" sender_password = "your-app-password"
-
Run the application
python app.py
-
Access the wallet Open your browser and go to
http://localhost:5002
- Click "Create New Account" on the home page
- Save your 12-word mnemonic phrase securely (this is crucial!)
- Verify 5 random words from your mnemonic
- Set a password for your wallet
- Your wallet is created with a random mock balance (1-10 ETH)
- Click "Import Existing Account" on the home page
- Enter your 12-word mnemonic phrase
- Set a password
- Your wallet is imported with 0 ETH balance
- Select your wallet address from the dropdown
- Enter recipient address and amount
- Choose ETH or USD for the amount
- Click "Send" - transaction executes immediately
- Receive email notification and in-app toast
- Click "Simulate Receive 1 ETH" to add funds
- Share your address with others to receive funds
- View QR code for easy sharing
- Click "Transaction History" button
- View all your sent and received transactions
- See transaction details including amounts, addresses, and timestamps
POST /api/add_new_account- Create additional wallet accountsGET /api/get_balance- Get balance for specific addressGET /api/transaction_history- Get transaction history
POST /api/execute_transfer_direct- Execute transfer with concurrent processingPOST /api/simulate_receive- Simulate receiving funds
POST /login- User authenticationGET /logout- User logout
- users: Encrypted mnemonic phrases, passwords, and email addresses
- accounts: Wallet addresses, encrypted private keys, and mock balances
- transactions: Complete transaction history with metadata
- Mnemonic phrases encrypted with AES-256 using PBKDF2 key derivation
- Private keys encrypted separately using derived keys
- Message signing required for all transactions
- Time-based message validation (30-second expiry)
- HTML email notifications with transaction details
- User initiates transfer
- System validates balance and recipient
- Transaction executes concurrently
- Balances updated in database
- Email notification sent
- In-app toast notification displayed
This is a mock wallet for educational purposes. For production use:
- Implement proper cryptographic signature verification
- Use hardware security modules for key storage
- Add multi-factor authentication
- Implement proper session management
- Use secure key derivation functions
- Add rate limiting and DDoS protection
- Implement proper email verification
- Add transaction limits and monitoring
- Modern login interface with wallet branding
- Feature highlights and security information
- Responsive design for all devices
- Real-time balance display in ETH and USD
- Send crypto with ETH/USD conversion
- Receive crypto with QR code display
- Transaction history with status tracking
- Toast notifications for transactions
- 12-word mnemonic phrase display
- Security warnings and instructions
- Interactive verification process
- USD to ETH Conversion: Real-time conversion using Skip API
- Transaction History: Complete audit trail with status tracking
- Email Notifications: Beautiful HTML email notifications
- Toast Notifications: In-app notifications for transactions
- Concurrent Processing: Fast transaction execution
- Responsive Design: Works on all devices
- Modern UI: Professional design with animations
- Email notifications require Gmail SMTP configuration
- Signature verification is simplified (implement proper cryptographic verification)
- Price tolerance check is basic (enhance for production use)
- Mock balances are not persistent across server restarts
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues or questions:
- Check the troubleshooting section
- Review the code comments
- Create an issue in the repository
- Contact support at support@cypherd.wallet
- Skip API for USD to ETH conversion
- MongoDB for database services
- Bootstrap for UI framework
- Font Awesome for icons
- Google Charts for QR code generation
π Security Notice: Never share your mnemonic phrase with anyone. Store it securely offline. We cannot recover your wallet if you lose your phrase.
Made with β€οΈ by the CypherD Team
Β© 2024 CypherD Wallet. All rights reserved.