Cashu Fault Lab
Browse documentation

Release

Release notes

What changed in the v0.3 developer preview and how to try it.

Version 0.3.0 publishes the work merged in PRs #37–#52 since 0.2.0. It remains an experimental developer preview, not wallet certification.

Changes

  • NIP-61 recovery covers duplicate relay delivery, competing receivers, lost responses and process crashes after mint swaps, using durable journals and NUT-09 restoration.
  • Thirty-two funded scenarios and fresh-proof replay run against pinned Nutshell 0.20.2 and mintd 0.17.3, including native Rust/CDK and cashu-ts in both directions.
  • NIP-60 post-spend recovery preserves current spendable balances through stale, deleted and reordered events. Concurrent-spend cases require one winner and a durable loser conflict.
  • Receiving-key rotation covers delayed old-key payments, post-swap crashes and missing-key backup import in cashu-ts and native CDK.
  • NIP-65 sender read-relay routing covers stale lists, offline relays and lost acknowledgements. A pinned upstream Nutshell CLI wallet performs receive/restart/duplicate-rejection/P2PK-return checks; the lab supplies its Nostr wrapper.
  • The NUT-26 nut26-bech32m-v1 codec matrix tests 26 vectors and 108 decode stages. Twenty SDK gaps remain explicit; --strict exits unsuccessfully while those gaps remain.
  • Release images build on native amd64/arm64 runners. Dependency fixes, current installation commands and expanded website documentation are included.
  • Code generation, OpenAPI validation and the wallet-doctor CLI test harness now work in checkout paths containing spaces.

The wallet-doctor capture-v2 format introduced in 0.2.0 is retained. Capture-v1 files still require recollection. Funded NIP-61 reports with older generic mint labels must be regenerated; replay now checks the observed mint implementation before funding.

Install and run

Use Node.js 24 and Docker with Compose:

bash
npx --yes cashu-fault-lab@0.3.0 doctor
npx --yes cashu-fault-lab@0.3.0 demo
npx --yes cashu-fault-lab@0.3.0 nutzap run crash-after-swap --seed demo

The demo uses version-matched runtime images and removes its disposable resources. The nutzap command above uses a simulated mint; funded and native CDK cases require the local stack and Rust receiver/codec binaries described in the nutzap guide and adapter guide. Those native binaries are not bundled in the npm CLI.

Evidence and limits

See the publication checklist. The website shows the verified public 0.3.0 demo and its redacted artifacts. The demo proves its response-loss scenario; the funded NIP-61 suites have separate CI evidence. Funded recovery uses disposable mints with fake Lightning funding. Independent wallet adoption, public-relay operation and qualifying external evidence authorities remain outside these claims. The strict delivery/lifecycle qualification gates remain blocked on the documented external requirements.

Full changes