SPB Git

spb/os-vault Public

Self-custody, multi-chain crypto wallet for macOS. One recovery phrase, six chain families, zero API keys — nothing leaves your Mac.

Swift 96% Shell 3.4% Makefile 0.6%
3.2 KB

# OS Vault — Multi-chain / multi-stablecoin roadmap

v1 is Base-only (Sepolia default, mainnet behind the network switch) with a data-driven token registry (USDC default + EURC, DAI, USDT). The goal is broad stablecoin coverage across chains. Target matrix (user-provided, 2026-08-05):

Stablecoin Main chains
USDT Ethereum, Tron, Solana, BNB Chain, Avalanche, Arbitrum, Optimism, Polygon, TON, Aptos, Celo, EOS, Near, Tezos, Algorand, Cosmos (Noble), Kaia, Ink…
USDC Ethereum, Solana, Base, Arbitrum, Optimism, Polygon, Avalanche, Stellar, Aptos, Sui, Hedera, Algorand, Celo, Near, ZKsync, Starknet, Linea, Monad, XRP Ledger, World Chain, Unichain, XDC, Sei, Sonic, Polkadot, Morph, Ink, HyperEVM, Noble… (30+ networks)
USDe Ethereum, Solana, BNB Chain, Base, Arbitrum, Optimism, Mantle, Scroll
DAI / USDS Ethereum, Arbitrum, Optimism, Base, Polygon, Avalanche, BNB Chain, Gnosis, Linea, Scroll, Unichain
FDUSD Ethereum, BNB Chain
USDB Blast, Ethereum
PYUSD Ethereum, Solana
RLUSD XRP Ledger, Ethereum
USDG Ethereum, Solana, Ink
TUSD Ethereum, Tron, BNB Chain, Avalanche

Status 2026-08-05: Phase A is shipped (11 EVM chains, verified token matrix, fee models incl. L1 data fees, keyless RPC failover, native coin sends) plus Bitcoin (bdk-swift, BIP-84, keyless Esplora) and fiat prices (CoinGecko keyless). Non-EVM adapters are next — see docs/RESEARCH-MULTICHAIN.md for the full blueprint and the wallet-core vendoring path (scripts/vendor-walletcore.sh).

# Phase A — EVM expansion (cheap: registry entries, no new signer)

Every EVM chain reuses the existing stack unchanged: secp256k1 keys at m/44'/60'/0'/0/0, EIP-1559 signing, JSON-RPC, ERC-20 calldata. Adding Ethereum/Arbitrum/Optimism/Polygon/BNB/Avalanche/Scroll/Linea/Gnosis/Blast… = new Network.ChainConfig entries (chain id, RPC, explorer) + token addresses in the registry, each verified on-chain before shipping (decimals() + symbol() eth_call), exactly like docs/STABLECOINS.md. Watch out for: legacy-fee chains (BNB has no EIP-1559 → needs type-0 path), native-gas symbol per chain (POL, AVAX, BNB…), and chains where USDT is non-standard ERC-20 (no return value — fine, we don't use the return value).

# Phase B — Non-EVM chains (new signers, per-family adapters)

Each family is a ChainAdapter implementation (derivation path, address format, tx builder, RPC protocol):

  • Solana (USDC, USDT, PYUSD, USDe, USDG): ed25519 keys (m/44'/501'/…), SPL-token transfers, its own RPC. Biggest payoff after EVM.
  • Tron (huge USDT volume): secp256k1 but base58 addresses + TRC-20.
  • XRPL (RLUSD), Stellar (USDC), TON, Aptos/Sui, Noble/Cosmos: one adapter each, prioritized by user demand.

The vault format already supports this: one mnemonic → per-chain derivation, VaultPayload.derivationPath becomes a per-adapter map.

# Phase C — polish

  • On-chain history via explorer APIs per chain (graceful fallback).
  • Fiat (USD/CAD/EUR) valuation of balances, price feed optional & privacy-safe.
  • Address book, per-token hide/show, Ledger-style hardware signing.