Web Wallet

Client-side wallet using Web Crypto. Private keys never leave the browser.


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.