Overview
Proton Wallet is a Bitcoin wallet application providing privacy-focused cryptocurrency management. Built with Rust WASM for cryptographic operations and React for the UI.Package name:
proton-wallet | License: GPL-3.0Features
Bitcoin Support
Full Bitcoin wallet functionality
Privacy First
Privacy-preserving transactions and balance management
WASM Crypto
Rust-based cryptography via WebAssembly
QR Codes
Scan and generate QR codes for addresses
Charts
Transaction history and balance charts
Fiat On-Ramp
Buy Bitcoin via Ramp Network integration
Transaction History
Complete transaction history with details
Multi-Account
Support for multiple wallet accounts
Architecture
Directory Structure
State Management
Uses React Context and Redux:- React Context for component-level state
- Redux for global wallet state
react-reduxfor React bindings
Key Dependencies
Notable Libraries
- @proton/andromeda - Rust WASM for Bitcoin operations
- chart.js + react-chartjs-2 - Balance and transaction charts
- jsqr - QR code scanning
- @ramp-network/ramp-instant-sdk - Fiat on-ramp integration
NPM Scripts
Development
Build
Testing
Wallet uses Vitest instead of Jest for faster test execution.
Code Quality
Internationalization
WASM Integration
Andromeda WASM Module
The@proton/andromeda package provides Rust-based Bitcoin operations:
- HD wallet key derivation
- Transaction signing
- Address generation
- Balance calculation
- UTXO management
WASM Configuration
Special Vite configuration for WASM:Testing with Vitest
Wallet uses Vitest instead of Jest:Test Commands
Tests run with
TZ=UTC for consistent timezone behavior.Components Architecture
Atomic Design
45 components organized by atomic design principles:Key Components
- Transaction list
- Balance display
- QR code scanner/generator
- Send form
- Receive address
- Transaction details
- Chart visualizations
Contexts
6 React contexts for state management:Features
Bitcoin Wallet
Core wallet functionality:- HD Wallet - Hierarchical Deterministic wallet
- Multiple Accounts - Support for multiple Bitcoin accounts
- Address Generation - Generate new receive addresses
- Transaction Signing - Sign transactions securely
- UTXO Management - Manage unspent transaction outputs
Privacy Features
- No KYC - No identity verification required
- Tor Support - Route through Tor network
- CoinJoin Ready - Prepared for CoinJoin integration
- No Address Reuse - Generate new addresses automatically
Charts & Visualization
Using Chart.js:QR Code Support
Both scanning and generating:Fiat On-Ramp
Ramp Network integration:Wallet Package
Most wallet logic is in@proton/wallet workspace package:
Build Configuration
Special build flags:Development Environment
Vite-based Build
Wallet uses Vite for faster development:- Instant HMR (Hot Module Replacement)
- Fast builds
- Native ESM support
- WASM plugin integration
SWC Compiler
Uses SWC for faster TypeScript compilation:Performance Optimizations
- WASM - Rust-based crypto for maximum performance
- SWC - Fast TypeScript compilation
- Vite - Lightning-fast HMR
- Lazy Loading - Components loaded on demand
- Chart Optimization - Efficient chart rendering
Security
Security Measures
- WASM Crypto - Compiled Rust for secure operations
- No Key Export - Keys encrypted and never exported
- Secure Storage - Encrypted local storage
- Proton Encryption - Wallet data encrypted with Proton key
- No Backend Decryption - Zero-knowledge architecture
Private Key Management
- Keys derived from master seed
- BIP32/BIP44 standard compliance
- Encrypted storage
- Never sent to server
Bitcoin Standards
Implements Bitcoin standards:- BIP32 - Hierarchical Deterministic Wallets
- BIP39 - Mnemonic code for generating deterministic keys
- BIP44 - Multi-Account Hierarchy for Deterministic Wallets
- BIP84 - Derivation scheme for P2WPKH based accounts
Network Support
- Mainnet - Bitcoin main network
- Testnet - Bitcoin test network (for development)
Transaction Features
- Send Bitcoin - Send to any Bitcoin address
- Receive Bitcoin - Generate receive addresses
- Transaction History - View all transactions
- Transaction Details - View transaction details
- Fee Estimation - Estimate optimal transaction fees
- Custom Fees - Set custom fee rates
EXIF Configuration
Interesting EXIF configuration (from package.json):Development Notes
Local Development
- Start dev server:
yarn start - Access at
http://localhost:8080 - WASM modules load automatically
- Testnet enabled by default
Testing
- Run with Vitest:
yarn test - View UI:
yarn test:ui - Coverage:
yarn test:ci
Future Features
Wallet is in active development. Future features may include:
- Lightning Network support
- Multi-signature wallets
- Hardware wallet integration
- CoinJoin transactions