bitcoin-l2-cashu

v2026.09.24

Cashu: single-mint Chaumian e-cash for Bitcoin Lightning. NUTs (Notation, Usage, and Terminology specs) define mint protocol, payment flow, blind signatures. USE WHEN: integrating Cashu mints/wallets, building NUT-compliant apps, comparing with Fedimint.

GitHub
Install command
npx skhub add claude-dev-suite/bitcoin-l2-cashu
Markdown
SKILL.md

Cashu

Open-source Chaumian e-cash protocol for Bitcoin Lightning. Single mint operator (vs Fedimint's federated). Specs evolve via NUTs (github.com/cashubtc/nuts).

Mint reference: cashubtc/nutshell (Python).

Architecture

  • Mint: one entity issuing Cashu notes.
  • Wallet: holds notes, transacts.
  • Lightning bridge: mint accepts/sends LN payments.

Lifecycle

Mint (deposit BTC → notes)

  1. Wallet asks mint for an LN invoice (specifying amount).
  2. Wallet pays invoice via LN.
  3. Mint signs blinded note(s) for the wallet (blind signing).
  4. Wallet now holds notes, has anonymity within mint.

Spend (intra-mint payment)

  1. Wallet A sends notes to Wallet B (any transport: NFC, QR, Nostr, email).
  2. Wallet B presents notes to mint, receives fresh notes (swap).
  3. Note serial numbers added to spent set; can't be spent again.

Melt (notes → LN)

  1. Wallet asks mint to pay an LN invoice using its notes.
  2. Mint pays invoice; consumes notes.

NUTs (specs)

Modular spec evolution. As of September 2026 the spec repo defines NUT-00 through NUT-30, split into a mandatory core and optional extensions each mint advertises under its number in the NUT-06 nuts capability map.

Mandatory — wallets and mints MUST implement all of NUT-00 to NUT-06:

  • NUT-00 — cryptography and models (BDHKE, proofs, token encoding).
  • NUT-01 — mint public keys.
  • NUT-02 — keysets and fees.
  • NUT-03 — swap (split/combine notes).
  • NUT-04 — mint tokens (generic quote flow, method-agnostic).
  • NUT-05 — melt tokens (generic quote flow, method-agnostic).
  • NUT-06 — mint info endpoint.

Optional (NUT-07 to NUT-30), selected:

  • NUT-07 — token state check.
  • NUT-08 — overpaid Lightning fee return.
  • NUT-09 — signature restore (recover proofs from seed).
  • NUT-10 — spending conditions (well-known secret format).
  • NUT-11 — P2PK locked tokens.
  • NUT-12 — DLEQ proofs.
  • NUT-13 — deterministic secrets (BIP32-style derivation).
  • NUT-14 — HTLC notes.
  • NUT-15 — partial multi-path payments (MPP).
  • NUT-17 — WebSocket subscriptions.
  • NUT-18 — payment requests (creqA).
  • NUT-19 — cached responses (safe request replay).
  • NUT-20 — signature on mint quote.
  • NUT-21 / NUT-22 — clear and blind mint authentication.
  • NUT-23 / NUT-25 / NUT-30 — payment methods: BOLT11, BOLT12, on-chain.
  • NUT-26 — payment request Bech32m encoding (creqb1...).
  • NUT-28 — pay-to-blinded-key (P2BK).
  • NUT-29 — batched minting.

Full index plus the per-wallet/per-mint support matrix lives in the cashubtc/nuts README.

Privacy

  • Within-mint: blind signatures hide deposit-to-withdrawal mapping.
  • Across mints: no privacy gain (each mint sees its own ledger).
  • LN gateway sees source/destination of LN payments.

Trust model

Single-mint trust:

  • Mint operator can refuse to redeem (rugpull).
  • Mint operator can refuse to honor melts.
  • Users mitigate by keeping balances small / transient.

Compare to Fedimint's threshold trust — Cashu is simpler but more custodial-feeling.

Implementations

  • nutshell (Python) — reference mint.
  • cashu-ts — TypeScript wallet/mint.
  • cdk — Cashu Development Kit (Rust); ships cdk-mintd as its mint binary. (cashubtc/cashu-rs no longer exists as of September 2026.)
  • nutmix (Go) — lescuer97/nutmix, mint; v0.7.0 (August 2026).
  • cashu.me — web wallet.
  • Minibits — mobile wallet.
  • eNuts — mobile wallet (cross-platform).
  • Macadamia — iOS-focused.
  • Sovran — mobile wallet (Expo/React Native), Cashu + Nostr.

nutmix and Sovran are both listed in the cashubtc/nuts README support matrix as of September 2026.

Use cases

  • Spam-resistance for Nostr (zaps via Cashu).
  • Micro-payments with no LN-channel overhead.
  • Privacy-mode for service users.
  • Streaming sats for content.

Lightning Address integration

Cashu mints often expose Lightning Addresses:

user@minturl.com → LNURL-pay → mint generates note for user

Payment requests

NUT-18 encodes a payment request as "creq" + "A" + base64_urlsafe(CBOR(req)). NUT-26 adds a smaller TLV + Bech32m form with HRP creqb and version separator 1; wallets decode both.

A NUT-26 request can be carried inside a BIP-321 Bitcoin URI as a creq query parameter, so a single QR code can offer Lightning and Cashu side by side and the payer's wallet picks the rail it supports:

bitcoin:?lightning=lnbc...&creq=CREQB1...

NUT-24 reuses the same two encodings in an X-Cashu header on an HTTP 402 Payment Required response.

Compared to Fedimint

AspectCashuFedimint
TrustSingle mintFederated multisig
SetupTrivial (run one mint)Multi-guardian setup
Privacy within mintYes (blind sigs)Yes
Cross-mint atomic swapsPossiblePossible (by design)
Mobile walletsManyFedi (primary)

Status

Beta production. Active development; new NUTs added regularly — the spec repo had reached NUT-30 (payment method: on-chain) by September 2026. Multiple mints in use globally (some open, some private).

See also

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/bitcoin/l2/cashu

Default branch

main

Latest commit

9496306

Tree SHA

fe4e2f1