0.12.0
Summary
Version 0.12.0 delivers end-to-end BOLT12 offers and payments, adds BIP‑353 address resolution for BOLT12 payments, and introduces cdk-ldk-node, an integrated Lightning backend that lets a single binary run both a Cashu mint and a Lightning node with full BOLT11 and BOLT12 support. It also adds a local, admin-focused web UI for cdk-ldk-node with dashboards for channels, invoices and offers, payments, and on-chain activity. On the data layer, the release expands storage with PostgreSQL via the new cdk-postgres crate and accelerates the shared SQL stack (cdk-sql-common) with statement caching and structured, namespaced/global migrations. Operationally, the mint now exposes explicit start and stop lifecycle methods, enabling graceful startup and shutdown of background services. Wallet keyset management has been clarified with renamed APIs that separate local storage from network fetches. The MSRV is updated to 1.85.0.
⚠️ Important Migration Note
Be sure to backup your mint db before migration.
Added
- cashu:
KeySetInfos
type alias andKeySetInfosMethods
trait for filtering keysets (thesimplekid). - cdk: Mint lifecycle management with
start()
andstop()
methods for graceful background service control (thesimplekid). - cdk: Background task management for invoice payment monitoring with proper shutdown handling (thesimplekid).
- cashu: NUT-19 support in the wallet (crodas).
- cdk: SIG_ALL support for swap and melt operations (thesimplekid).
- cdk-sql-common: Add cache to SQL statements for better performance (crodas).
- cdk-integration-tests: New binary
start_fake_auth_mint
for testing fake mint with authentication (thesimplekid). - cdk-integration-tests: New binary
start_fake_mint
for testing fake mint instances (thesimplekid). - cdk-integration-tests: New binary
start_regtest_mints
for testing regtest mints (thesimplekid). - cdk-integration-tests: Shared utilities module for common integration test functionality (thesimplekid).
- cdk-redb: Database migration to increment keyset counters by 1 for existing keysets with counter > 0 (thesimplekid).
- cdk-sql-common: Database migration to increment keyset counters by 1 for existing keysets with counter > 0 (thesimplekid).
- cdk-ldk-node: New Lightning backend implementation using LDK Node for improved Lightning Network functionality (thesimplekid).
- cdk-ldk-node: Local web management UI (dashboard, channels, invoices/offers, payments, on‑chain). Intended for localhost/admin use only; do not expose publicly (thesimplekid/erik).
- cdk-common: Added
start()
andstop()
methods toMintPayment
trait for payment processor lifecycle management (thesimplekid). - cdk-mintd: Added LDK Node backend support with comprehensive configuration options (thesimplekid).
- cdk-postgres: Postgres Database for mint and wallet (crodas).
- cdk: BOLT12 mint quote WebSocket subscriptions (NUT-17) (crodas).
- cdk: Future streams for payments and minting proofs (crodas).
- cdk: Log-to-file support (thesimplekid).
- cdk(wallet): BIP-353 support (thesimplekid).
- security: Zeroize secrets on drop (vnprc).
Changed
- cdk-common: Modified
Database::get_keyset_counter
trait method to returnu32
instead ofOption<u32>
for simpler keyset counter handling (thesimplekid). - cdk: Refactored wallet keyset management methods for better clarity and separation of concerns (thesimplekid).
- cdk: Renamed
get_keyset_keys
tofetch_keyset_keys
to indicate network operation (thesimplekid). - cdk: Renamed
get_active_mint_keyset
tofetch_active_keyset
for consistency (thesimplekid). - cdk: Updated
get_active_mint_keysets
torefresh_keysets
with improved keyset refresh logic (thesimplekid). - cdk: Improved
load_mint_keysets
method to be the primary method for getting keysets for token operations (thesimplekid). - cdk: Enhanced keyset management with better offline/online operation separation (thesimplekid).
- cdk: Updated method documentation to clarify storage vs network operations (thesimplekid).
- cdk: Refactored invoice payment monitoring to use centralized lifecycle management instead of manual task spawning (thesimplekid).
- cdk: Enhanced mint startup to initialize payment processors before starting background services (thesimplekid).
- cdk: Improved mint shutdown to gracefully stop payment processors alongside background services (thesimplekid).
- cdk-mintd: Updated to use new mint lifecycle methods for improved service management (thesimplekid).
- cdk-integration-tests: Updated test utilities to use new mint lifecycle management (thesimplekid).
- cdk: HTTP retry only on transport errors (crodas).
- cdk-lnbits: Migrate to LNBits v1 websocket API and remove pre-v1 code paths (thesimplekid).
- cdk-cln: Use millisatoshis (msats) for amounts (thesimplekid).
- cdk: NUT-20 support toggle in mint builder configuration (thesimplekid).
- cashu/cdk: New secret derivation per updated spec (lollerfirst).
- cdk-sqlite: Introduce
cdk-sql-common
crate for shared SQL storage codebase (crodas). - cdk-sqlite: Rename
still_active
tostale
for better clarity (crodas). - cdk-integration-tests: Refactored regtest setup to use Rust binaries instead of shell scripts (thesimplekid).
- cdk-integration-tests: Improved environment variable handling for test configurations (thesimplekid).
- cdk-integration-tests: Enhanced CLN client connection with retry logic (thesimplekid).
- cdk-integration-tests: Updated integration tests to use proper temp directory management (thesimplekid).
- cdk-integration-tests: Simplified regtest shell scripts to use new binaries (thesimplekid).
- crates/cdk-mintd: Moved mintd library functions to separate module for better organization and testability (thesimplekid).
- dev/docker: Switch base image to Debian Trixie (thesimplekid).
- Updated MSRV to 1.85.0 (thesimplekid).
- dev: Simplified Nix flake configuration by removing specific dependency version constraints from MSRV shell hook (thesimplekid).
Fixed
- cashu: Fixed CurrencyUnit custom units preserving original case instead of being converted to uppercase (thesimplekid).
- cdk: Fix P2PK spending-condition validation and requirements (thesimplekid).
- cdk: Fixed BOLT12 missing payments notifications (crodas).
- cdk-axum/mint: Fix BOLT12 WebSocket behavior on mint (thesimplekid).
- cdk-lnbits: Fix payment check and unit handling (thesimplekid).
- cdk-sqlite: Fix
get_mint_quote_by_request_lookup_id
function synchronization (crodas). - cdk-sqlite: Reduce mmap_size to 5 MiB to avoid resource issues (thesimplekid).
- cdk: Remove unwrap in startup checks (thesimplekid).
- cdk: Allow paid and issued BOLT12 quotes to settle internally (gudnuf).
- cdk: Include change in melt quote state updates (thesimplekid).
- cdk-mintd/axum: Pass auth config from mintd through to axum correctly (thesimplekid).
- cdk: fix: implement atomic keyset counter (vnprc)
Migration
- cdk-sql-common: Improve migrations with namespaced and global migrations support (crodas).
New Contributors
- @mountdisk made their first contribution in #865
Full Changelog: v0.11.0...v0.12.0