# WarpCoin Wallets

WarpCoin supports **multiple wallets** in a single node or desktop app, each
recoverable from a **seed phrase** (a 12- or 24-word recovery phrase).

## Recovery phrases

When you create a wallet, WarpCoin generates a recovery phrase from random
entropy (BIP39-style: entropy + checksum, encoded against a fixed 2048-word
list) and derives the wallet's key from it. Writing the phrase down is enough to
restore the wallet on any device — there is no other backup.

- **12 words** ≈ 128 bits of security; **24 words** ≈ 256 bits.
- An optional passphrase acts as a "25th word": the same phrase with a different
  passphrase yields a different wallet.
- WarpCoin keys are NIST P-256, so this scheme is self-contained — it is **not**
  interchangeable with secp256k1 BIP39/BIP32 wallets.

> Anyone who has your recovery phrase controls your funds. Keep it offline.
> WarpCoin cannot recover it for you.

## The wallet store

Wallets live as individual encrypted keystore files in a store directory
(`~/.warpcoin/wallets` by default), with a `default` pointer marking the active
wallet. Each file is the same AES-256-GCM keystore the single-wallet client
always used; the recovery phrase itself is never written to disk.

## CLI

```sh
# Create wallets (a recovery phrase is shown once).
warpcoin wallet new --name primary               # 12-word phrase
warpcoin wallet new --name savings --words 24    # 24-word phrase

# Import an existing wallet.
warpcoin wallet import --name restored --mnemonic "word word … word"
warpcoin wallet import --name cold --key <hex-private-key>

# Inspect and switch.
warpcoin wallet list                 # all wallets; * marks the default
warpcoin wallet use savings          # set the default wallet
warpcoin wallet address              # address of the default wallet
warpcoin wallet show --name primary  # details for one wallet
warpcoin wallet remove old           # delete a wallet keystore
```

Value and contract commands accept `--wallet <name>` to choose which wallet
signs (defaulting to the store's default); `--keystore <path>` still targets an
explicit file, and a legacy single `~/.warpcoin/wallet.json` is used as a
fallback for older installs.

```sh
warpcoin balance --wallet savings
warpcoin send    --wallet primary --to W… --amount 12.5
warpcoin contract deploy --wallet primary --template milestone-escrow …
```

By default each command reads `~/.warpcoin/wallets`; pass `--walletdir` to point
at a different store (the desktop app uses its own per-user store directory).

## Desktop app

The desktop app manages the same store under its app-data directory. The Wallet
screen lets you create a wallet (the recovery phrase is shown once in a
confirmation dialog), import by phrase or private key, and switch the active
wallet from a dropdown; sending and mining use the selected wallet.
