Hold your keys. Control your assets.
Non-Custodial. Private. Multi-Chain.
A browser extension wallet for ETH, BTC, SOL, DOT, Liberland (LLD/LLM), and Monero (XMR).
LiberVault is a non-custodial browser extension wallet built on Chrome Manifest V3.
You generate one BIP-39 seed phrase. That seed deterministically derives addresses across all supported chains.
Your keys are encrypted locally using AES-256-GCM and never leave your device.
There are no servers. No accounts. No tracking.
LiberVault includes native support for the Liberland Blockchain (LLD + LLM) and full Monero send/receive using ring-signature WASM.
- You hold your keys — always
- No backend, no accounts, no data collection
- One seed phrase across multiple chains
- Built for control, not custody
| Chain | Symbol | Family | Derivation | Send | Receive | Balance |
|---|---|---|---|---|---|---|
| Ethereum + EVM | ETH | EVM | m/44'/60'/0'/0/0 · secp256k1 | ✅ | ✅ | ✅ |
| Polygon, BSC, Arbitrum, Base | MATIC/BNB/ETH | EVM | Same key, different RPC | ✅ | ✅ | ✅ |
| Bitcoin | BTC | UTXO | m/84'/0'/0'/0/0 · native SegWit | ✅ | ✅ | ✅ |
| Solana | SOL | Solana | m/44'/501'/0'/0' · ed25519 | ✅ | ✅ | ✅ |
| Polkadot | DOT | Substrate | sr25519 · SS58 prefix 0 | ✅ | ✅ | ✅ |
| Liberland | LLD + LLM | Substrate | sr25519 · SS58 prefix 56 | ✅ | ✅ | ✅ |
| Monero | XMR | Monero | m/44'/128'/0'/0/0 · ed25519 | ✅ | ✅ | ✅ |
Liberland: LLD (Liberland Dollar) and LLM (Liberland Merit) share the same address — same keypair, separate asset IDs on-chain.
Monero: Full RingCT transaction construction via monero-javascript WASM. Spend key never leaves the extension. View key is used for output scanning against a configurable remote node.
- AES-256-GCM encryption
- Vault stored locally in chrome.storage.local
- No external storage or transmission
- PBKDF2 — 600,000 iterations (SHA-256)
- Derives encryption key from user password
- Decrypted keys live only in memory
- Stored in MV3 background service worker
- Never exposed to popup or content scripts
- UI sends signing requests only
- No key material leaves the background context
- @scure/bip39, @scure/bip32, @noble/curves
- Audited libraries, no Node shims
- EIP-6963 multi-wallet discovery
- Coexists with MetaMask and other wallets
- Spend key never exposed externally
- View key used only for scanning via configured node
src/
├── background/ # MV3 service worker — secure key store, signing, broadcasting
├── content/ # Content script — bridges inpage provider ↔ background
├── inpage/ # Injected into every page (window.ethereum, window.solana)
├── assets/ # Monero WASM binary + worker (monero_wallet_full.wasm)
├── lib/
│ ├── keyring.ts # BIP-39/44/84, SLIP-0010, sr25519, Monero key derivation
│ ├── storage.ts # AES-256-GCM encrypted chrome.storage.local
│ ├── messages.ts # Typed message bus (popup ↔ background ↔ inpage)
│ ├── balance.ts # Balance fetching for all chains
│ ├── send.ts # Transaction building & broadcasting
│ └── xmr-wallet.ts # Monero wallet session (WASM, sync, ring sigs)
├── popup/ # React UI — JetBrains Mono, terminal aesthetic
│ ├── views/ # Welcome, Create, Import, Seed, Lock, Dashboard, Send, Receive
│ ├── components/ # Shared UI components
│ └── ui.ts # Design tokens
└── store/ # Zustand state (balances, send, modal, chain tab)
- Node.js 18+
- Chrome, Brave, or Edge (Manifest V3)
git clone https://github.com/liberlayer/libervault.git
cd libervault
npm install
npm run build- Go to chrome://extensions
- Enable Developer mode
- Click Load unpacked
- Select the dist/ folder
- LiberVault icon appears in toolbar
npm run devAuto-rebuilds on save. Refresh the extension to reload.
- Wallet core — seed generation, encryption, HD derivation, lock/unlock
- Send/receive — balances, fee estimation, confirmations, QR receive
- Token support — ERC-20, SPL, Substrate assets
- Transaction history + fiat pricing
- Custom RPC configuration
- Monero enhancements — subaddresses, view key export
- Hardware wallets (Ledger)
- WalletConnect v2
- Firefox support
- Independent security audit
PRs welcome. Open an issue first for significant changes.
GPL v3 — see LICENSE
This means any distribution of modified versions must also be open source.