A production-ready Multi-Party Computation (MPC) wallet implementing FROST (Flexible Round-Optimized Schnorr Threshold) signatures for secure distributed key management across multiple platforms.
MPC Wallet enables threshold signatures where private keys are split across multiple parties, requiring a minimum threshold to sign transactions. No single party ever has access to the complete private key, providing superior security for digital asset management.
- Real FROST DKG: Cryptographically secure distributed key generation using proper FROST protocol
- Threshold Signatures: Configurable t-of-n threshold signing
- Multi-Platform: Browser extension, desktop GUI, and terminal UI
- Multi-Chain Support: Ethereum (secp256k1) and Solana (ed25519)
- Peer-to-Peer: Direct WebRTC connections between participants
- Offline Mode: Air-gapped operations for maximum security
- Production Ready: Comprehensive testing and security audits
# Clone the repository
git clone https://github.com/your-org/mpc-wallet.git
cd mpc-wallet
# Install dependencies
bun install
# Build WASM modules
bun run build:wasm
# Start development
bun run dev- Build and load the extension:
cd apps/browser-extension
bun run dev-
Load unpacked extension in Chrome from
.output/chrome-mv3 -
Create a wallet through the extension popup
# Run the TUI application
cargo run -p tui-node -- --device-id Device-001
# Create a wallet (interactive)
> create my_wallet 2 3# Run the native desktop app
cargo run -p native-node- Documentation Center - Main documentation hub with complete index
- Technical Documentation - Comprehensive technical reference (100+ pages)
- Contributing Guidelines - How to contribute to the project
- Architecture Overview - System design and architectural decisions
- Monorepo Architecture - Monorepo structure and organization
- Wallet-Centric Flow - Wallet-first architecture design
- Security Model - Security considerations and threat model
- Browser Extension Guide - Complete browser extension documentation
- Extension Architecture - Extension design patterns
- UI Components - UI implementation and components
- User Guides - Step-by-step usage guides
- TUI Documentation - Terminal UI comprehensive guide
- TUI Architecture - System architecture
- DKG Flows - Distributed key generation flows
- User Guide - Complete user manual
- Keystore Design - Keystore implementation
- Protocol Specs - WebRTC and keystore session protocols
- UI Wireframes - Comprehensive UI specifications and wireframes
- Offline Mode - Air-gapped operation guide
- Native App Guide - Desktop application documentation
- Architecture - Native app architecture
- UI Guide - Slint UI framework documentation
- Signal Server Guide - WebRTC signaling server
- Deployment - Cloudflare deployment guide
- Architecture - Server architecture and design
- Development Guide - Setup and development workflow
- API Reference - Complete API documentation
- Testing Documentation - Testing strategies and tools
- Test Coverage - Code coverage reports
- E2E Testing - End-to-end test documentation
- Running Tests - How to run test suites
- Deployment Guide - Production deployment instructions
- Cloudflare Deployment - Deploy to Cloudflare Workers
- TUI Deployment Guide - Deploy TUI application
- Implementation Docs - Feature implementation details
- EIP-6963 Implementation - Wallet provider discovery
- Multi-Layer2 Support - Layer 2 chain support
- WebRTC Fix Summary - P2P connection fixes
- Bug Fix Documentation - Documented bug fixes and solutions
- DKG Fixes - Distributed key generation fixes
- Session Discovery - Session management fixes
- Complete Fix Summary - All implemented fixes
- Changelog - Version history and release notes
- Documentation Status - Current state of documentation
mpc-wallet/
βββ apps/ # Applications
β βββ browser-extension/ # Chrome/Firefox extension
β βββ native-node/ # Desktop GUI application
β βββ tui-node/ # Terminal UI application
β βββ signal-server/ # WebRTC signaling server
β
βββ packages/@mpc-wallet/ # Shared packages
β βββ frost-core/ # FROST protocol implementation
β βββ core-wasm/ # WebAssembly bindings
β βββ types/ # TypeScript definitions
β
βββ docs/ # Documentation
βββ scripts/ # Build and utility scripts
βββ tests/ # Integration tests
- Rust: Core cryptographic implementation
- TypeScript: Browser extension and web components
- WebAssembly: Bridge between Rust and JavaScript
- WebRTC: Peer-to-peer communication
- Svelte: Browser extension UI
- Slint: Native desktop UI framework
- Ratatui: Terminal UI framework
- FROST: Threshold signature scheme
- secp256k1: Ethereum signatures
- ed25519: Solana signatures
- AES-256-GCM: Encryption at rest
- PBKDF2: Key derivation
- Secure personal wallet with distributed backups
- Multi-device wallet control
- Enhanced security for high-value accounts
- Corporate treasury management
- Multi-signature custody solutions
- Distributed key management for exchanges
- Secure validator key management
- Integration into existing applications
- Custom threshold signature implementations
- Research and development platform
The MPC Wallet has been designed with security as the primary concern:
- Private keys never exist in complete form
- All communication is end-to-end encrypted
- Comprehensive input validation and sanitization
- Regular security audits and updates
For detailed security information, see our Security Documentation.
| Operation | Participants | Time | Network |
|---|---|---|---|
| DKG | 3 | 1.2s | 45KB |
| Sign | 3 | 45ms | 15KB |
| Verify | 1 | 15ms | - |
- Supports up to 100 participants
- Horizontal scaling for signal servers
- Optimized for mobile and low-bandwidth environments
We welcome contributions! Please see our Contributing Guide for details on:
- Code of Conduct
- Development setup
- Submitting pull requests
- Reporting issues
- Security vulnerabilities
- Discord - Join our community
- GitHub Issues - Report bugs
- Documentation - Full documentation
For enterprise support and custom development, contact: enterprise@mpc-wallet.io
- Browser extension MVP
- Terminal UI application
- Desktop application
- Mobile application (in progress)
- Hardware wallet integration
- Additional blockchain support
- Advanced recovery mechanisms
- Enterprise features
- Formal verification
- Performance optimizations
- Enhanced UI/UX
- Regulatory compliance features
This project is licensed under the MIT License - see the LICENSE file for details.
- FROST Paper by Komlo & Goldberg
- ZCash Foundation for FROST implementation
- WebRTC Project for P2P communication
- All our contributors and community members
If you use this software in your research, please cite:
@software{mpc_wallet,
title = {MPC Wallet: Multi-Party Computation Wallet},
author = {MPC Wallet Team},
year = {2025},
url = {https://github.com/your-org/mpc-wallet}
}Built with β€οΈ by the MPC Wallet Team
Secure. Distributed. Open Source.