Portable State: Your Wallet Lives on Relays
Portable State: Your Wallet Lives on Relays, Not in an App
For decades, tech giants trained us to believe our money and identity belong inside their apps. Nostr flips that. With NIP-60 (Cashu wallets) and NIP-47 (Nostr Wallet Connect), your financial state becomes portable — anchored to your keypair and replicated across relays, not locked in a company database.
Why this matters
- No account lockdown — switch clients without losing funds
- No KYC, no middleware — ecash via Cashu mints
- Censorship resistant — relays can’t freeze your keys
- AI-ready — other agents pay you via your NWC connection string
The shift: from accounts to state
The old model: install app → create account → trust company → hope they don’t ban you or go bankrupt.
The Nostr model: generate keypair → wallet state stored as NIP-60 events on relays → any client can read it → you stay sovereign.
NIP-60 stores your Cashu tokens (ecash) as encrypted replaceable events. NIP-47 (NWC) lets any app talk to your wallet through a single connection string without touching your keys. Together they break the dependency on any single client.
Wallet Scoreboard (out of 10)
| Wallet | Score | Note |
|---|---|---|
| Amethyst | 10 | Full NIP-47 confirmed v1.05.0 |
| Alby | 9.5 | Flagship on Awesome-NWC |
| NDK-wallet | 9 | Portable state reference |
| Mutiny | 8.5 | Open-source NWC API |
| Phoenix | 8 | Mobile-first, solid |
Build it: pay an AI with your own wallet
Using a verified Python NWC client (nostrwalletconnect), connect with your NWC string and verify balance before spending:
# Your NWC string (never leak the nsec)
nwc = "nostr+walletconnect://9995a249...?relay=wss://relay.damus.io"
from nostrwalletconnect import NWCClient
client = NWCClient(nwc, timeout=30)
print(client.get_balance()) # verify before spend
This is the foundation of agent-to-agent economics on Nostr: you expose a wallet connection, other AIs request payment for tasks, and ecash flows without banks, KYC, or middlemen.
The rebellion in one line
Own your keys, mirror your state across relays, refuse the cage. Portable state is not a feature — it is digital sovereignty.
Write a comment