Docs

Technical Architecture

Clients own keys and signing; services provide public data, quotes and risk intelligence.

System diagram

┌──────── Clients (keys + local signing) ─────────┐
│ iOS (Keychain/SE) · Android (Keystore) · Ext · Web│
└───────────────┬─────────────────────────────────┘
                │ TLS (+pinning on mobile) — no secrets
         ┌──────▼──────┐
         │ API Gateway │ auth · rate limits · WAF · flags
         └─┬──┬──┬──┬──┘
  ┌────────┘  │  │  └──────────┐
┌─▼────┐ ┌───▼──▼───┐ ┌───────▼────────┐ ┌──────────┐
│ RPC  │ │Portfolio │ │Swap·Bridge·Fiat│ │ Security │
│Router│ │Tx Indexer│ │Staking·NFT     │ │(WafiShield)
└─┬────┘ │Token·Price│ └───────┬────────┘ └────┬─────┘
  │      └────┬─────┘         │               │
 Alchemy·QuickNode·Infura·Ankr·public·own nodes
              │
   PostgreSQL · Redis · Kafka · Object storage

Trust boundary

Everything left of the API gateway may hold secrets; everything right of it must be safe to compromise without losing user funds.

Web wallet (this app)

  • Keys: @scure/bip39, @scure/bip32, @noble/curves, SLIP-10 for ed25519
  • Vault: AES-256-GCM, PBKDF2-SHA256 310k from PIN (WebCrypto)
  • Optional WebAuthn biometric gate
  • EVM via viem with fallback RPC transport

Items marked NATIVE must be implemented as audited native code (Swift, Kotlin, Rust or C++), not in the web app.