Skip to content

Releases: cashubtc/cdk

v0.16.0

31 Mar 08:44
v0.16.0
a46f998

Choose a tag to compare

0.16.0

Summary

Version 0.16.0 introduces NUT-28 (Pay-to-Blinded-Key) and NUT-29 (Batch Minting) as significant protocol enhancements. This release also brings BIP-321 (Bitcoin Payment Requests) support and BIP-353 resolution in the CLI. A major architectural refinement introduces the WalletTrait, unifying core and FFI wallet implementations.

Key highlights include:

  • NUT-28 (Pay-to-Blinded-Key): Privacy-enhancing P2PK variant that blinds keys before spending.
  • NUT-29 (Batch Minting): Support for batching mint quotes for improved efficiency.
  • BIP-321 Support: Complete parsing and creation of Bitcoin payment requests (BIP-321).
  • WalletTrait: Unified abstraction for all wallet types, simplifying integrations and FFI bindings.
  • Improved WASM Support: Refactored WebSocket client and time handling for better browser compatibility.
  • CLI Enhancements: BIP-353 resolution, NUT-26 PR support, and improved mint management commands.

Added

Changed

  • cdk: BREAKING - Unified melt and melt_async logic in the mint implementation (#1715) (0xEgao).
  • cdk: BREAKING - NUT-18 payment requests now use Vec<T> instead of Option<Vec<T>> for better consistency (#1664) (Forte11Cuba).
  • cdk: Upgraded redb to version 3.0.0 (#1672) (thesimplekid).
  • cdk: Align signatory keyset derivation with the remote signer specification (#1257) (lescuer97).
  • cdk: For mint quotes, use enum for mint connector selection (#1708) (thesimplekid).
  • cdk: Replaced TryFrom<MeltQuote> with a direct OutgoingPaymentOptions function for cleaner API (#1724) (TheMhv).
  • cdk: Use amount with unit in gRPC communication (#1616) (thesimplekid).
  • cdk: Remove default features of hyper-rustls to reduce binary size and dependencies (#1768) (thesimplekid).
  • cdk: Static release builds for all platforms (#1683) (thesimplekid).
  • cdk: Tor service default configuration (#1449) (gandlafbtc).
  • cdk: Inject version header at client level instead of per request (#1766) (Forte11Cuba).
  • cdk: Moved spending conditions implementation to nut10 module for better organization (#1714) (TheMhv).
  • cdk-lnd: Update lnd proto file (#1656)) ((lescuer97).

Fixed

  • cdk: Auth token (NUT-22) no longer requires base64 padding for better compatibility (#1755) (crodas).
  • cdk: Wallet restore now scans all keysets, including inactive ones, to prevent missed funds (#1753) (crodas).
  • cdk: Correctly filter sagas and quotes by wallet unit and mint URL (#1759) (thesimplekid).
  • cdk: Ensure extra_json is persisted on mint_quotes in SQL backends (#1742) (vnprc).
  • cdk: Publish pubsub notifications only after successful transaction commit (thesimplekid).
  • cdk: Allow denomination reuse in amount split for restricted keysets (#1676) (thesimplekid).
  • cdk: Compensate for failed sagas in the mint to ensure consistency (#1675) (thesimplekid).
  • cdk: Fixed saga proof reservation in the wallet to prevent accidental spending during pending operations (#1728) (thesimplekid).
  • cdk: Pass currency unit through protobuf instead of hardcoding Msat in MakePayment (#1673) (crodas).
  • cdk: Fixed wallet validation for impossible multisig and refund configurations (#1711) (ritoban23).
  • cdk: Handle WASM compatibility in WebSocket client and time handling (#1615, #1662) (crodas).
  • cashu: Accept first tag in spending condition if multiple are provided (#1805) (thesimplekid).
  • cdk-axum: CORS preflight now allows all headers instead of hardcoded list (#1798) (robwoodgate).
  • cdk-mint-rpc: Added missing version header to all mint RPC CLI subcommands (#1764) (thesimplekid).

Removed

New Contributors

Full Changelog: v0.15.1...v0.16.0

v0.16.0-rc.4

30 Mar 16:48
v0.16.0-rc.4
cdfe491

Choose a tag to compare

v0.16.0-rc.4 Pre-release
Pre-release
v0.16.0-rc.4

v0.16.0-rc.3

30 Mar 12:20
v0.16.0-rc.3
c01ead4

Choose a tag to compare

v0.16.0-rc.3 Pre-release
Pre-release
v0.16.0-rc.3

v0.16.0-rc.2

29 Mar 14:35
v0.16.0-rc.2
3a2c605

Choose a tag to compare

v0.16.0-rc.2 Pre-release
Pre-release
v0.16.0-rc.2

v0.16.0-rc.1

27 Mar 17:39
v0.16.0-rc.1
19ccf15

Choose a tag to compare

v0.16.0-rc.1 Pre-release
Pre-release

0.16.0

Summary

Version 0.16.0 introduces NUT-28 (Pay-to-Blinded-Key) and NUT-29 (Batch Minting) as significant protocol enhancements. This release also brings BIP-321 (Bitcoin Payment Requests) support and BIP-353 resolution in the CLI. A major architectural refinement introduces the WalletTrait, unifying core and FFI wallet implementations.

Key highlights include:

  • NUT-28 (Pay-to-Blinded-Key): Privacy-enhancing P2PK variant that blinds keys before spending.
  • NUT-29 (Batch Minting): Support for batching mint quotes for improved efficiency.
  • BIP-321 Support: Complete parsing and creation of Bitcoin payment requests (BIP-321).
  • WalletTrait: Unified abstraction for all wallet types, simplifying integrations and FFI bindings.
  • Improved WASM Support: Refactored WebSocket client and time handling for better browser compatibility.
  • CLI Enhancements: BIP-353 resolution, NUT-26 PR support, and improved mint management commands.

Added

  • cdk: NUT-29 Batch Minting support (#1698) ([thesimplekid]).
  • cdk: NUT-28 Pay-to-Blinded-Key (P2BK) support (#1253, #1729) ([lollerfirst]).
  • cdk: BIP-321 (Bitcoin Payment Requests) parsing and creation (#1716) ([thesimplekid]).
  • cdk: WalletTrait shared between core and FFI wallets for improved architectural consistency (#1581) ([crodas]).
  • cdk: WASM-compatible WebSocket client abstraction (#1615) ([crodas]).
  • cdk: Added inactive/expired keysets to MintBuilder ([crodas]).
  • cdk: Added config_unit to MintBuilder (#1659) ([thesimplekid]).
  • cdk: Added get_mint_quotes to the mint database trait (#1689) ([thesimplekid]).
  • cdk: Added MacOS builds to the automated release process (#1702) ([thesimplekid]).
  • cdk: Subscribe to mint quote state changes in FFI bindings (#1725) ([Forte11Cuba]).
  • cdk: Add to_bech32_string to FFI (#1712) ([thesimplekid]).
  • cdk: Store Nostr payment request information (#1732) ([thesimplekid]).
  • cdk: Add keys and mint info to mock connector for testing (#1727) ([thesimplekid]).
  • cdk-cli: BIP-353 human-readable address resolution (#1739) ([thesimplekid]).
  • cdk-cli: NUT-26 Payment Request CLI subcommands (#1731) ([thesimplekid]).
  • cdk-cli: Recover from incomplete saga command (#1674) ([thesimplekid]).
  • cdk-mintd: Home page and footer with custodial information (#1760, #1771) ([thesimplekid]).
  • cdk-mintd: Add expose_private_channels configuration for CLN backend (#1758) ([4xvgal]).

Changed

  • cdk: BREAKING - Unified melt and melt_async logic in the mint implementation (#1715) ([0xEgao]).
  • cdk: BREAKING - NUT-18 payment requests now use Vec<T> instead of Option<Vec<T>> for better consistency (#1664) ([Forte11Cuba]).
  • cdk: Upgraded redb to version 3.0.0 (#1672) ([thesimplekid]).
  • cdk: Align signatory keyset derivation with the remote signer specification (#1257) ([lescuer97]).
  • cdk: For mint quotes, use enum for mint connector selection (#1708) ([thesimplekid]).
  • cdk: Replaced TryFrom<MeltQuote> with a direct OutgoingPaymentOptions function for cleaner API (#1724) ([TheMhv]).
  • cdk: Use amount with unit in gRPC communication (#1616) ([thesimplekid]).
  • cdk: Remove default features of hyper-rustls to reduce binary size and dependencies (#1768) ([thesimplekid]).
  • cdk: Static release builds for all platforms (#1683) ([thesimplekid]).
  • cdk: Tor service default configuration (#1449) ([gandlafbtc]).
  • cdk: Inject version header at client level instead of per request (#1766) ([Forte11Cuba]).
  • cdk: Moved spending conditions implementation to nut10 module for better organization (#1714) ([TheMhv]).

Fixed

  • cdk: Auth token (NUT-22) no longer requires base64 padding for better compatibility (#1755) ([crodas]).
  • cdk: Wallet restore now scans all keysets, including inactive ones, to prevent missed funds (#1753) ([crodas]).
  • cdk: Correctly filter sagas and quotes by wallet unit and mint URL (#1759) ([thesimplekid]).
  • cdk: Ensure extra_json is persisted on mint_quotes in SQL backends (#1742) ([vnprc]).
  • cdk: Publish pubsub notifications only after successful transaction commit ([thesimplekid]).
  • cdk: Allow denomination reuse in amount split for restricted keysets (#1676) ([thesimplekid]).
  • cdk: Compensate for failed sagas in the mint to ensure consistency (#1675) ([thesimplekid]).
  • cdk: Fixed saga proof reservation in the wallet to prevent accidental spending during pending operations (#1728) ([thesimplekid]).
  • cdk: Pass currency unit through protobuf instead of hardcoding Msat in MakePayment (#1673) ([crodas]).
  • cdk: Fixed wallet validation for impossible multisig and refund configurations (#1711) ([ritoban23]).
  • cdk: Handle WASM compatibility in WebSocket client and time handling (#1615, #1662) ([crodas]).
  • cdk-mint-rpc: Added missing version header to all mint RPC CLI subcommands (#1764) ([thesimplekid]).

Removed

  • cdk: Remove output_already_signed (#1690) ([thesimplekid]).
  • cdk: Remove redundant unit field from get_payment_quote (#1704) ([thesimplekid]).
  • cdk: Remove deprecated promises field from RestoreResponse (#1663) ([Forte11Cuba]).

New Contributors

Full Changelog: v0.15.1...v0.16.0-rc.0

v0.15.2-rc.0

07 Mar 00:34
v0.15.2-rc.0
d4b72ad

Choose a tag to compare

v0.15.2-rc.0 Pre-release
Pre-release

0.15.2

Added

  • cdk-ffi: Export to_bech32_string for payment requests ([thesimplekid])
  • cdk-cli: Add recover-incomplete-sagas command to recover from interrupted wallet operations ([thesimplekid])

Fixed

  • cashu: Allow denomination reuse in amount split for restricted keysets ([thesimplekid])
  • cdk: Compensate prepared saga in mint ([thesimplekid])

v0.15.1

19 Feb 15:38
v0.15.1
fde8598

Choose a tag to compare

Caution

This release includes a database migration for the mint. Ensure you back up your database before upgrading your mint instance to avoid data loss

0.15.1

Fixed

  • cdk: Add limits to secret and witness ([thesimplekid])
  • cdk: build_with_seed with custom paths ([thesimplekid])

v0.15.0

17 Feb 13:56
v0.15.0
f031066

Choose a tag to compare

0.15.0

Caution

This release includes a database migration for the mint. Ensure you back up your database before upgrading your mint instance to avoid data loss

Summary

Version 0.15.0 introduces Wallet Sagas, a major architectural improvement that brings the saga pattern to all wallet operations for robust error recovery and crash resilience. This release also adds async wallet operations support and NUT-26 (Payment Request Bech32m Encoding) for compatibility with BIP-321 and BIP-353 human-readable addresses.

Key highlights include:

  • Wallet Sagas: All wallet operations (mint, melt, send, receive, swap) now use the saga pattern with type-state safety and automatic compensation actions
  • Melt Flow Redesign: New two-phase prepare/confirm pattern for melts with PreparedMelt, similar to PreparedSend
  • Async Wallet Operations: Non-blocking melt operations via prefer field - returns immediately with a PendingMelt future that can be awaited immediately OR dropped to complete via WebSocket notifications or background recovery
  • NUT-26: Payment Request Bech32m Encoding support (CREQ-B format) - provides better QR code compatibility and enables integration with BIP-321/BIP-353 human-readable addresses
  • Breaking Change: MultiMintWallet has been removed - use WalletRepository instead
  • Authentication (NUT-21/NUT-22) is now always enabled - the auth feature flag has been removed
  • Keyset V2 is now the default for new keysets

Added

  • cdk: Wallet saga pattern for all wallet operations (mint, melt, send, receive, swap) with type-state pattern and compensation actions ([thesimplekid]).
  • cdk: Wallet::recover_incomplete_sagas() method to recover from interrupted operations and prevent proofs from being stuck in reserved states ([thesimplekid]).
  • cdk: Wallet::prepare_melt() and Wallet::prepare_melt_proofs() to create PreparedMelt for two-phase melt operations ([thesimplekid]).
  • cdk: PreparedMelt with confirm(), confirm_with_options(), confirm_prefer_async(), and cancel() methods for controlled melt execution ([thesimplekid]).
  • cdk: MeltConfirmOptions to configure melt behavior (e.g., skip_swap) ([thesimplekid]).
  • cdk: MeltOutcome enum with Paid (immediate completion) or Pending variants - Pending returns a PendingMelt that can be awaited immediately OR dropped to complete via WebSocket notifications or Wallet::finalize_pending_melts() ([thesimplekid]).
  • cdk: PendingMelt struct that implements IntoFuture for awaiting async melt completion ([thesimplekid]).
  • cdk: Wallet::finalize_pending_melts() to recover and complete pending melt operations after crash ([thesimplekid]).
  • cdk: Async wallet operations support using prefer field in request body ([thesimplekid]).
  • cdk: NUT-26 Payment Request Bech32m Encoding support (CREQ-B format as an alternative to NUT-18's CREQ-A) ([thesimplekid]).
  • cdk: WalletRepository as a simpler replacement for MultiMintWallet - manages Wallet instances by mint URL and currency unit with direct access to Wallet methods ([asmo]).
  • cdk: WalletRepositoryBuilder for constructing WalletRepository with configurable proxy, Tor, and database settings ([asmo]).
  • cdk: WalletConfig for per-wallet customization of connectors, target proof counts, and metadata cache TTL ([asmo]).
  • cdk: TokenData struct for extracting mint URL, proofs, and metadata from parsed tokens ([asmo]).
  • cdk: Keyset V2 configuration with use_keyset_v2 setting - defaults to V2 for new keysets while preserving existing keyset versions ([thesimplekid]).
  • cdk: Input and output limits for swap, melt, and other transactions to prevent DoS attacks ([thesimplekid]).
  • cdk: Glob pattern support for NUT-21/22 route validation ([thesimplekid]).
  • cdk: Wallet::fetch_mint_quote() method to retrieve mint quote by ID ([asmo]).
  • cdk-ldk-node: BIP39 mnemonic seed configuration ([asmo]).
  • cdk-ldk-node: Configurable announcement addresses ([asmo]).
  • cdk-ldk-node: Configurable logging settings ([asmo]).

Changed

  • cdk: BREAKING - Removed MultiMintWallet and all its methods - use WalletRepository instead for managing multiple wallets ([asmo]).
  • cdk: BREAKING - Removed auth feature flag - authentication code (NUT-21/NUT-22) is now always compiled ([crodas]).
  • cdk: Melt operations now use the saga pattern with type-state safety and automatic compensation on failure ([thesimplekid]).
  • cdk: PreparedMelt, PreparedSend, and other prepared structs marked with #[must_use] to prevent accidental drops ([thesimplekid]).
  • cashu: Default features are now off ([thesimplekid]).
  • cdk-common: Abstracted HTTP client behind cdk_common::HttpClient ([crodas]).

Fixed

  • cdk: Fee conversion in payment backend ([thesimplekid]).
  • cdk: Mint publishes quote back to unpaid state on failure ([thesimplekid]).
  • cdk: Add error code for input and output limits ([thesimplekid]).
  • cdk-sqlite: Correct SQLite connection pool size check ([crodas]).

Removed

  • cdk: MultiMintWallet and all associated methods ([asmo]).
  • cdk: auth feature flag and all conditional compilation paths ([crodas]).

v0.15.0-rc.3

16 Feb 17:39
v0.15.0-rc.3
daf1188

Choose a tag to compare

v0.15.0-rc.3 Pre-release
Pre-release
v0.15.0-rc.3

v0.15.0-rc.2

16 Feb 08:33
v0.15.0-rc.2
bfae0f9

Choose a tag to compare

v0.15.0-rc.2 Pre-release
Pre-release
v0.15.0-rc.2