Written 2026-09-25. For Leonard's music chain. His definitions hold throughout: the chain of blocks is the ledger; apps and pages are doors, never the blockchain; a wallet is the only way in; no one declares or controls the chain. No one can take your assets unless you sign them away.
A wallet is two things and nothing more:
amc1…) the world sees.Everything in this document serves those two things: getting the keypair into a person's hands safely, and keeping the chain in their hands as it grows.
How it works: the wallet generates random entropy, encodes it as 12 or 24 English words (BIP-39). Those words ARE the wallet. Write them on paper, keep them secret, type them into a new phone to restore.
The honest record, from public research:
Verdict: seed phrases are the most honest option (zero trust in any company) and the most punishing option (one tired evening and it's gone). They made sense for cypherpunks in 2014. For his people — artists, families, normal phone users — the loss rate is the argument against them.
How it works: the phone's secure hardware (Secure Enclave on iPhone, StrongBox on Android) generates a key. The private key never leaves the chip — it can't be exported, photographed, or typed into a phishing site. You unlock it with your face or fingerprint. No words to write down.
The production proof: Coinbase Smart Wallet has shipped passkey wallets at scale since June 2024 — WebAuthn, P-256 signatures verified on-chain (RIP-7212), MIT-licensed contracts anyone can fork. Users sign in like they sign into any website. Leonard's own NEXUS whitepaper already specifies this exact architecture (passkeys + social recovery + session keys) — it is his prior art, and it is the industry's direction.
The catch for HIS chain: WebAuthn authenticators sign with P-256 (secp256r1). His chain is Ed25519. A phone secure element can hold an Ed25519 key too (Android StrongBox and iOS Secure Enclave both support raw key storage), biometric-gated — but then the key is device-bound: it does not sync to iCloud/Google like a WebAuthn passkey does. Lose the phone, lose the key, unless a separate recovery path exists. The synced-passkey convenience (new phone, face unlock, wallet's back) comes from Apple/Google's cloud — which is a trust assumption (see Part 2).
"Sign in with Google" wallets exist. They work by a company holding your key (or a share of it) and handing it over after you log in. That is a bank with extra steps. It violates his first law — no one can take it from you becomes the company can take it from you. Listed here only to reject it: any "getting one" flow where someone else can move your assets is not a wallet on his chain. It's an account.
The PWA at ~/workspace/music-blockchain/wallet-app/: generates the Ed25519
keypair in the browser on the user's device, shows the private key once
with a warning, keeps it in the browser, signs locally. That is the correct
shape — key born on the device, never transmitted. What's missing is everything
around it: backup, recovery, and a way to get the page into people's hands
(Part 4).
His law: no one can say they own it or take it from you unless you transfer it. Every recovery mechanism below reintroduces someone or something. The honest move is to name the smuggled trust plainly, so HE chooses it instead of it hiding in the design.
| Method | How it works | Trust smuggled in | What breaks |
|---|---|---|---|
| Paper words (BIP-39) | 12/24 words on paper/metal | Trusts YOU forever: no fire, no loss, no photo, no one finds it | Lose it = lose everything. No recovery, ever. (~20% of BTC proves the rate.) |
| Encrypted cloud backup (iCloud/Google Drive) | Key encrypted with a password, ciphertext in your cloud | Trusts Apple/Google to hold the ciphertext honestly; trusts your cloud password | Cloud account hacked or locked = wallet gone or exposed. Provider sees that you have a wallet. |
| Device passkey sync (iCloud Keychain / Google Password Manager) | Key syncs E2E-encrypted across YOUR devices | Trusts Apple/Google's sync infrastructure and your platform account | Locked out of your Apple/Google account = locked out of the wallet. |
| Social recovery (guardians) | 3-of-5 chosen people/devices can rotate your key after a delay (Argent: 48h, cancellable) | Trusts guardians not to collude, not to all die/lose interest, to be reachable and competent | Guardians collude = they take your assets. Guardians vanish = no recovery. Needs a delay + cancel, or a thief with 3 friends wins. |
| Shamir split (2-of-3 shares) | Key split mathematically: phone + paper + trusted person; any 2 rebuild it | Trusts each share-holder with a piece; trusts you to understand the scheme | Lose 2 shares = gone. One share-holder + your phone = they own it. Complexity kills normal users. |
| NO recovery (pure) | Key lives on the device. Lost phone = lost assets. Period. | Trusts nothing and no one | The only option with zero trust assumptions — and the cruelest UX. This is Bitcoin's original position. |
The Vitalik framing, which is the honest one: the goal was never to remove all trust — it's to give people choice in whom to trust, in constrained forms (someone can help you recover, but can't spend). Every row above is a different answer to "who do you trust, and with how much power?"
His NEXUS design already chose: 3-of-5 guardians (biometric passkey, backup device, Garcia Holdings attestor, co-op member, validator partner) with a 48h timelock and root-key cancel. Note the tension honestly: the "Garcia Holdings attestor" as a guardian means his company holds recovery power over users' wallets — that is a real trust assumption sitting inside his own design, and it cuts against "no one can take it from you" unless the attestor's power is strictly limited to helping recovery the user initiates, never initiating.
amc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh is not a thing a
human can check. One wrong character = money gone. (His amc1 prefix at
least tells the eye which chain it belongs to — the prefix is inside the
address checksum, so a wrong-chain address fails loudly instead of silently.)His insight — we move music as currency — is also the UX answer. The wallet does not show "balances." It shows your catalog:
┌─────────────────────────────┐
│ MY CATALOG │
│ │
│ ♪ Purple Monster │
│ yours · registered │
│ 2026-09-25 │
│ │
│ ♪ Cash Talk │
│ 50% yours · split with │
│ Sara │
│ │
│ ▤ 1420 W Deed — Lot 9 │
│ yours · registered │
│ 2026-08-14 │
│ │
│ [+ Register something] │
└─────────────────────────────┘
No coin amounts on the home screen. No gas. No hex. Things you own, who they're split with, when they were registered. The chain mechanics (fees, blocks, seals) live one screen deeper, for whoever wants them — the same way a bank app shows your money first and the wire-transfer plumbing never.
1. GETTING ONE (first run)
open wallet page → "Create my wallet"
→ phone generates keypair IN THE PHONE (nothing sent anywhere)
→ "This is your wallet: amc1…"
→ backup step (whichever recovery he chooses — Part 2)
→ DONE. You hold the chain's newest wallet.
What it must never do: send the key anywhere, show the key on screen longer than the backup moment, or let the user skip backup without typing "I understand no one can recover this for me."
2. REGISTERING A SONG
tap [+] → pick audio file
→ phone hashes the audio LOCALLY (the file never uploads)
→ shows: title, artist, fingerprint, "claiming as: you"
→ Face ID → signed → sealed into a block
→ "Registered. The chain says you claimed this on 2026-09-25."
Honest wording (from the research): it proves a timestamped claim, not legal ownership. The screen should say "claimant," not "rights holder," unless a real adjudication mechanism exists.
3. SENDING AN ASSET
open the track → "Send" → scan her QR (or pick from contacts)
→ plain-words confirm: "Send 'Purple Monster' (100%) to Sara (amc1…9f2)?"
→ Face ID → signed → "Sent. It's hers now — only her key can move it."
The QR carries the address only — never any secret. This is also the phone-to-phone handshake shape his NEXUS work already designed (intent by QR, execution on-device, receipt back over the channel).
4. EARNING SEALING FEES
wallet seals a block → small fee from every move in that block
→ "Your wallet earned 0.42 keeping the chain running."
This is his exchange model made visible. The wallet should show earnings like a payout, not like mining jargon. It is also the reason to keep the wallet installed and the chain syncing: the wallet pays its holder.
5. PROVING WHAT YOU HOLD (to anyone, offline)
open the deed → "Show proof" → QR on screen
→ verifier's wallet checks the chain IT carries
→ "Valid: registered 2026-08-14, never moved since."
No server involved. Two phones, one QR, each trusting only the chain they hold. This is the thing no bank app and no custodial wallet can do.
The wallet page has to live somewhere people can open it. Every option has a gatekeeper except the ones where Leonard IS the infrastructure.
| Channel | Friction | Gatekeeper | Honest notes |
|---|---|---|---|
| His own domain (self-hosted page) | User types a URL or scans a QR | None — he controls the server | No review, no rejection, no expiry. But: he runs a server (cost, upkeep), and users must trust the page hasn't been swapped — the page should be byte-verifiable / content-addressed so anyone can check. |
| IPFS (content-addressed) | Needs a gateway or local node in a normal browser | None for publishing; gateways for reading | The CID is the integrity check — the page can't be silently swapped. Matches "verify, don't trust." But normal users won't type ipfs:// — it needs a friendly gateway or his domain pointing at it. |
| PWA install (Add to Home Screen) | Manual on iOS (Safari → Share → Add); ~50MB storage cap on iOS; no push notifications on iOS | Apple (Safari's limits) | Works, offline-capable, no store review. But iOS treats PWAs as second-class: manual install, storage ceiling, no Face ID inside the PWA frame on some versions (biometric-gated keys may need the browser context). Android PWAs are first-class citizens. |
| Google Play (native app) | Normal install | Non-custodial wallets are explicitly EXEMPT from the Oct 2025 licensing rules (FinCEN/MSB/MiCA apply to custodial). His wallet qualifies as non-custodial. Still: review roulette, takedown risk, Google can delist. | |
| Apple App Store (native app) | Normal install | Apple | Allowed under guideline 3.1.5(b) for self-custodial wallets, but the developer must enroll as an organization, and Apple is the permanent gatekeeper — review, 30% politics on anything that smells like a sale, delisting power. |
| Android sideload (direct APK) | "Unknown sources" warning scares users; no auto-update | None | No gatekeeper at all. Real cost: users are trained to fear it, and updates are manual unless he builds an updater. |
| BrewPage | One link, easy | REJECTED his wallet page ("content rejected" — apparently over in-browser key generation) | Lesson learned: hosted-page services with content filters can refuse a key-generating page with no appeal. Not a durable home for the wallet. |
| here.now | Easy link | Expiry | 24 hours. A try-it link, never infrastructure. He already ruled: a page is not the blockchain, and a 24h link is not a home. |
The pattern: every easy channel has a gatekeeper; every gatekeeper-free channel has friction. The realistic shape is probably two doors: his own domain (primary, no gatekeeper) + app stores (reach, with their rules) — the same page, two doors, and the wallet itself identical because the key is born on the device either way.
His rule: every wallet carries and validates the chain. The honest physics:
Mitigations, with tradeoffs stated (no invented solved design):
bitcoin-pocket-node pattern: QR
code, full node on a phone in under 20 minutes, resume on failure). This
FITS his model beautifully — no server, just phones handing the chain to
phones. Cost: still the full data, and the first phone in a room has to get
it from somewhere.The honest bottom line: "every wallet carries the chain" is true at small scale and gets expensive at large scale, and there is no free fix. The protocol has to pick its tradeoff early — small blocks + pruning is the simplest honest path — or the rule becomes one everyone quietly breaks (light clients asking someone else's server for balances — which is a middleman with a new name, and fails his test).
Getting: The Handoff (Idea 5) as the primary path — wallet from wallet, chain from chain — with his own domain as the always-open door for anyone without an inviter. Key: The Face Key (Idea 2) for daily use — no words, nothing to lose on day one. Backup: The Trusted Circle (Idea 3) offered at setup, with the 48h delay + cancel, guardians as other wallets on his chain. Paper words (Idea 1) kept as the advanced option for whoever wants zero trust in anyone. Nothing custodial, ever.
Research sources: BIP-39/32/44, SLIP-0010/0044/0173, RFC 8032, Bitcoin wallets-and-keys ingest (~/workspace/study/blockchain-ingest/wallets-and-keys.md), NEXUS whitepaper skill, Argent/Safe social-recovery docs and audits, Coinbase Smart Wallet (passkeys in production since 2024), TRM Labs H1 2026, Chainalysis/Glassnode loss estimates, Google Play Oct 2025 crypto policy (non-custodial exempt), Apple guideline 3.1.5(b), Mina/Utreexo, bitcoin-pocket-node (phone-to-phone chainstate).