First tagged release of cashu-wallet-php — a zero-dependency, single-file PHP implementation of the Cashu protocol. Drop CashuWallet.php into any PHP 8.0+ project (ext-gmp or ext-bcmath required); Composer is used only for the dev test suite.
NUT coverage
- NUT-00 — BDHKE, token serialization V3 (
cashuA) and V4 (cashuB/CBOR) - NUT-01/02 — keyset management, including v2 keyset IDs (
01…) and inactive-keyset fee metadata - NUT-03 — swap; NUT-04/23 — mint with
amount_paid/amount_issuedaccounting - NUT-05 — melt with change (NUT-08 fee return)
- NUT-07 — proof state checks
- NUT-09/13 — restore and deterministic secret derivation (BIP32 for v1, HMAC-SHA256 for v2)
- NUT-12 — DLEQ verification on received signatures and proofs
- NUT-19 — cached-response awareness
- NUT-20 — mint-quote locking with BIP340 Schnorr signatures + deterministic locking keys
Reliability
- Crash-safe operation journal with atomic proof storage (never loses coins mid-operation)
- Melt reconciliation via authoritative quote state instead of blind retransmission
- Keyset rotation: sweep proofs off inactive/expiring keysets
Testing
284-test PHPUnit suite validated against the official cashubtc/nuts test vectors (BDHKE, keyset IDs v1/v2, NUT-13 derivation, DLEQ, BIP340, NUT-20 signing).