Skip to content

v0.4.0-alpha — keyset v2, NUT-20, reliable withdrawals

Pre-release
Pre-release

Choose a tag to compare

@jooray jooray released this 17 Jul 07:09

Cashu protocol modernization + reliability release. Upgrading never touches your ecash — the database is separate from the code and schema migrations run automatically on first load. See the "Updating to a New Version" section in the README.

Protocol

  • Keyset ID v2 (NUT-02) — full support for 01… keysets now shipping on Nutshell 0.20+ / CDK 0.15+, with the correct NUT-13 HMAC-SHA256 seed derivation so your seed phrase remains a valid backup across wallets. Legacy v1 keyset IDs (which no longer re-derive) are handled as opaque identifiers.
  • NUT-20 mint-quote locking (BIP340) — incoming payments are locked to a deterministic key, closing the window where anyone who learns a quote ID could mint against it. Falls back to the pre-hardening signature message for older mints (Nutshell 0.20.x).
  • NUT-12 DLEQ verification on received signatures and tokens.
  • NUT-19 cached-response handling for mint/swap.

Reliability

  • Robust Lightning withdrawals — melt now reconciles against the authoritative quote state after an ambiguous mint response, instead of blindly retransmitting. Fixes withdrawals that could stall in "Processing" (with a temporary balance dip) even though the payment had gone through.
  • Automatic keyset rotation — proofs are swept off inactive or soon-expiring keysets so held balances survive rotations.
  • Fixed invoice creation and paid-invoice minting against real Nutshell 0.20.x mints.
  • Standardized mint error-code handling; migration transaction fix for PHP ≤ 8.3.

Under the hood

  • New PHPUnit test suite in the bundled cashu-wallet-php library (v0.1.0), 284 tests against official Cashu spec vectors.

Downloads

  • cashupayserver.zip — standalone (shared PHP hosting)
  • cashupay-wordpress.zip — WordPress plugin (works with the BTCPay for WooCommerce plugin)

Alpha software. Start with small amounts and keep your seed phrase safe.