Web Wallet
Client-side wallet embedded in the xe binary. Enable with xe node --ui --wallet. Private keys never leave the browser. Zero JavaScript dependencies.
Security
- Seeds encrypted with AES-GCM via Web Crypto API
- Keys derived via PBKDF2 (100,000 iterations, SHA-256)
- Fresh random IV per encryption
- 5-minute idle timeout auto-locks
- Seeds stored in localStorage as encrypted ciphertext only
- Private keys never leave the browser
- No JS dependencies — uses native Web Crypto
Features
- Multi-wallet management — create, import, rename, delete wallets
- Send/Receive — transfer XE and XUSD between accounts
- Faucet — claim 100 XUSD from the testnet faucet
- Auto-receive — 5-second polling for pending sends
- P2P Chat — real-time delivery, ed25519 signed envelopes
- Compute leasing — browse providers, request leases, VM access
- DAO governance — draft, sign, submit state chain blocks
- State inspector — browse state chain blocks and KV entries
- Offline signing — sign blocks client-side without network access
Enabling
xe node --ui --wallet # enable wallet pages
xe node --ui # UI without wallet (explorer only) The --wallet flag gates wallet pages to prevent accidental exposure on public nodes.
Technology
Plain HTML + ES modules + Web Crypto. Embedded in the Go binary via //go:embed. No build step, no framework, no bundler.