v0.4.0-alpha — keyset v2, NUT-20, reliable withdrawals
Pre-release
Pre-release
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-phplibrary (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.