github cashubtc/cdk v0.12.0

latest release: v0.12.1
7 days ago

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 and KeySetInfosMethods trait for filtering keysets (thesimplekid).
  • cdk: Mint lifecycle management with start() and stop() 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() and stop() methods to MintPayment 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 return u32 instead of Option<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 to fetch_keyset_keys to indicate network operation (thesimplekid).
  • cdk: Renamed get_active_mint_keyset to fetch_active_keyset for consistency (thesimplekid).
  • cdk: Updated get_active_mint_keysets to refresh_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 to stale 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

Full Changelog: v0.11.0...v0.12.0

Don't miss a new cdk release

NewReleases is sending notifications on new releases.