License: MIT TypeScript React Chrome Extension EIP-1193 MetaMask
๐ The Complete Web3 Wallet Browser Extension - MetaMask Alternative with Advanced Features
Secure โข Multi-Network โข ERC-20 Ready โข DeFi Optimized โข Open Source
๐ Quick Install โข โจ Features โข ๐ Docs โข ๐ค Contribute โข ๐ Security
โญ Star this repo | ๐ด Fork & Contribute | ๐ข Share with Community
- โจ Features
- ๐ Installation
- ๐๏ธ Architecture
- ๐ง Development
- ๐ฑ Usage
- ๐ Multi-language Support
- ๐ค Contributing
- ๐ License
Why Choose Universal Web3 Wallet? Built for the next generation of DeFi users who demand security, flexibility, and seamless multi-chain experiences.
- ๐ก๏ธ EIP-1193 Provider: Full compliance with Ethereum provider standard - works with ALL DApps
- ๐ Mnemonic Support: BIP39 12-word mnemonic phrase generation and import with entropy validation
- ๐ฅ Multi-Account: HD wallet with hierarchical deterministic account generation (unlimited accounts)
- ๐ฅ Account Import: Import accounts via private keys with security warnings
- ๐ Secure Storage: Military-grade AES encryption for keys and mnemonics - never leaves your device
- ๐ 15+ Networks: Ethereum, Polygon, BSC, Arbitrum, Optimism, Avalanche, Fantom + more
- โ๏ธ Custom Networks: Add any EVM-compatible network with custom RPC endpoints
- โก Instant Switching: Seamless network switching with automatic balance updates
- ๐ฆ MetaMask Compatible: Drop-in replacement - works with existing DApp integrations
- ๐ Auto-Detection: Automatically detects and suggests network additions from DApps
- ERC-20 Tokens: Add, remove, and manage custom tokens
- Balance Tracking: Real-time balance updates every 6 seconds
- Auto-refresh: Balance updates on account/network changes
- Token Filtering: Hide/show zero-balance tokens
- Transaction Signing: Secure transaction signing with user confirmation
- Message Signing: Support for
personal_sign
message signing - Typed Data: Full
eth_signTypedData_v4
support - Confirmation UI: User-friendly transaction confirmation popups
- Modern UI: Built with Ant Design for sleek interface
- Multi-language: Support for English, Chinese, Korean, and Japanese
- Lock/Unlock: Secure wallet state management
- Address Book: Easy address management and copying
- Node.js 16+ and npm
- Chrome/Chromium browser
- Git
-
Clone the repository
git clone https://github.com/yourusername/UniversalWeb3Wallet.git cd UniversalWeb3Wallet
-
Install dependencies
npm install
-
Build the extension
npm run build
-
Load in Chrome
- Open Chrome and navigate to
chrome://extensions/
- Enable "Developer mode"
- Click "Load unpacked extension"
- Select the
dist
folder from the project
- Open Chrome and navigate to
# Start development server with hot reload
npm run dev
src/
โโโ ๐ provider/
โ โโโ EthereumProvider.ts # EIP-1193 provider implementation
โโโ ๐ wallet/
โ โโโ WalletManager.ts # Core wallet functionality
โ โโโ NetworkManager.ts # Network management
โ โโโ TokenManager.ts # ERC-20 token management
โโโ ๐ pages/
โ โโโ Popup.tsx # Main wallet interface
โ โโโ TokenList.tsx # Token management UI
โ โโโ Settings.tsx # Settings and preferences
โโโ ๐ content/
โ โโโ inject.ts # DApp injection script
โโโ ๐ hooks/
โ โโโ useI18n.ts # Internationalization hook
โโโ background.ts # Service worker
โโโ content.ts # Content script
โโโ manifest.json # Extension configuration
- Frontend: React 18 + TypeScript + Ant Design
- Blockchain: ethers.js v6 + EIP-1193
- Crypto: bip39, crypto-js, @metamask/eth-sig-util
- Build: Vite + vite-plugin-web-extension
- Browser: WebExtension Polyfill
# Install dependencies npm install # Development with hot reload npm run dev # Production build npm run build # Type checking npm run type-check
- Infura Setup: Configure your Infura API key in
WalletManager.ts
- Networks: Add custom networks in
NetworkManager.ts
- Tokens: Configure popular tokens in
TokenManager.ts
-
Create New Wallet
- Click extension icon โ "Create Wallet"
- Set secure password
โ ๏ธ Important: Save your mnemonic phrase securely!
-
Import Existing Wallet
- Choose "Import Wallet" tab
- Enter your 12-word mnemonic phrase
- Set password
// DApp integration example if (window.ethereum) { console.log('Universal Wallet detected!') // Request account access const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' }) // Send transaction const txHash = await window.ethereum.request({ method: 'eth_sendTransaction', params: [{ from: accounts[0], to: '0x...', value: '0x...' }] }) }
- Add Token: Click "+" button โ Enter contract address
- Auto-detection: Popular tokens load automatically
- Balance Updates: Refreshes every 6 seconds
- Hide Zero: Toggle to hide tokens with zero balance
Available in 4 languages:
- ๐บ๐ธ English (Setup Guide)
- ๐จ๐ณ ไธญๆ (่ฎพ็ฝฎๆๅ)
- ๐ฐ๐ท ํ๊ตญ์ด (์ค์ ๊ฐ์ด๋)
- ๐ฏ๐ต ๆฅๆฌ่ช (ใปใใใขใใใฌใคใ)
- ๐ Local Encryption: AES encryption for all sensitive data
- ๐ Password Protection: Required for all wallet operations
- โ User Confirmation: Manual approval for all transactions
- ๐ Isolated Storage: Chrome extension secure storage
- ๐ No Key Logging: Private keys never leave your device
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
This is experimental software. Use at your own risk. Always:
- Test on testnets first
- Keep backups of your mnemonic phrases
- Never share private keys
- Conduct security audits before production use
- ๐ Documentation
- ๐ Report Issues
- ๐ฌ Discussions
- ๐ Security Policy