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:
PreparedMelt, similar to PreparedSendprefer field - returns immediately with a PendingMelt future that can be awaited immediately OR dropped to complete via WebSocket notifications or background recoveryWalletRepository insteadauth feature flag has been removedWallet::recover_incomplete_sagas() method to recover from interrupted operations and prevent proofs from being stuck in reserved states (thesimplekid).Wallet::prepare_melt() and Wallet::prepare_melt_proofs() to create PreparedMelt for two-phase melt operations (thesimplekid).PreparedMelt with confirm(), confirm_with_options(), confirm_prefer_async(), and cancel() methods for controlled melt execution (thesimplekid).MeltConfirmOptions to configure melt behavior (e.g., skip_swap) (thesimplekid).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).PendingMelt struct that implements IntoFuture for awaiting async melt completion (thesimplekid).Wallet::finalize_pending_melts() to recover and complete pending melt operations after crash (thesimplekid).prefer field in request body (thesimplekid).WalletRepository as a simpler replacement for MultiMintWallet - manages Wallet instances by mint URL and currency unit with direct access to Wallet methods (asmo).WalletRepositoryBuilder for constructing WalletRepository with configurable proxy, Tor, and database settings (asmo).WalletConfig for per-wallet customization of connectors, target proof counts, and metadata cache TTL (asmo).TokenData struct for extracting mint URL, proofs, and metadata from parsed tokens (asmo).use_keyset_v2 setting - defaults to V2 for new keysets while preserving existing keyset versions (thesimplekid).Wallet::fetch_mint_quote() method to retrieve mint quote by ID (asmo).MultiMintWallet and all its methods - use WalletRepository instead for managing multiple wallets (asmo).auth feature flag - authentication code (NUT-21/NUT-22) is now always compiled (crodas).PreparedMelt, PreparedSend, and other prepared structs marked with #[must_use] to prevent accidental drops (thesimplekid).cdk_common::HttpClient (crodas).auth feature flag and all conditional compilation paths (crodas).cdk-ffi: Export token creation from raw bytes ([cloudsupper]).
cdk: Batch proof witness queries in check_state to prevent pool exhaustion (thesimplekid).
cdk-mint-rpc: Set payment_id and payment_amount when moving mint_quote into PAID state (asmo).
cdk: Fix fee_ppk unit mismatch in select_exact_proofs (thesimplekid).
cdk: Fix wallet restore gaps (thesimplekid).
cdk-ffi: Add Payment Requests support (thesimplekid).
cdk-ffi: Add multimint melt with mint functionality (thesimplekid).
cdk-ffi: Add get wallets functionality (thesimplekid).
cdk: Add MultiMintWallet function to check proofs state (thesimplekid).
cdk: Add get_token_data and get_mint_keysets to MultiMintWallet (thesimplekid).
cdk: Melt external support (thesimplekid).
cdk: Swap before melt (thesimplekid).
cdk: Use try proof in swap within melt (thesimplekid).
cdk-ffi: Add metadata cache TTL configuration methods (thesimplekid).
cdk: Ensure mint info is loaded before quote operations (thesimplekid).
cdk: Replace deferred database persistence with synchronous writes in mint metadata cache (thesimplekid).
cdk: Add get_all_mint_info to MultiMintWallet (thesimplekid).
This release focuses on reliability and robustness improvements across the codebase. The mint now implements saga patterns for both melt and swap operations, providing better error recovery and state consistency during these critical operations. Async melt processing has been added for improved throughput. The wallet gains a new Tor mint connector with isolated circuits support for enhanced privacy when communicating with mints, along with a MintMetadataCache that delivers significant performance improvements for key and metadata management. A new proof recovery mechanism automatically handles failed wallet operations. MultiMintWallet receives improvements including the ability to check and wait for mint quotes and configure internal wallets. NUT-11 SIG_ALL message aggregation has been updated to match the latest specification. On the infrastructure side, a generic pubsub module has been introduced in cdk-common, and cdk-ffi adds postgres support. Additional highlights include keyset amount tracking and SQL balance calculation optimization for improved performance, wallet functions to pay human readable addresses (BIP353 and Lightning address), invoice decoding for BOLT11 and BOLT12 in the FFI bindings, and a mutation testing infrastructure to ensure security-critical code coverage. The release also brings numerous bug fixes addressing database contention, HTLC witness handling, and quote state management.
cdk: Add wallet functions to pay human readable addresses (BIP353 and Lightning address) (thesimplekid).
cdk-ffi: Add invoice decoding for bolt11 and bolt12 (thesimplekid).
cdk: Add keyset_amounts table to track issued and redeemed amounts for improved performance (crodas).
cdk: Add melt quote state transition validation (thesimplekid).
cdk: Add payment request and proof to transaction records (thesimplekid).
cdk: Add WebSocket authentication support (thesimplekid).
cdk: Add proof recovery mechanism for failed wallet operations (crodas).
cdk-ffi: Added postgres support (asmo).
cdk: Optimize SQL balance calculation (vnprc).
cdk: Add tor mint connector for wallet with isolated circuits support (lollerfirst).
cdk-common: Introduce a generic pubsub module (crodas).
cdk: Add MultiMintWallet check and wait for mint quotes (davidcaseria).
cdk: Allow passing metadata to a melt (benthecarman).
cashu: Include supported amounts instead of assuming the power of 2 (crodas).
test: Add mutation testing infrastructure and security-critical coverage (thesimplekid).
cdk: Introduce MintMetadataCache for efficient key and metadata management (crodas).
cdk: Implement saga pattern for melt operations (thesimplekid).
cdk: Implement saga pattern for swap operations (thesimplekid).
cdk: Async melt processing (thesimplekid).
cdk: Extract keyset key loading into helper method (thesimplekid).
cdk: Update Wallet::fetch_mint_info (crodas).
cdk-ffi: Update FFI Database Objects to Records (davidcaseria).
cdk: Redesign Lightning invoice creation and display with better UX and status handling (erik).
cdk: Configure internal Wallets of a MultiMintWallet (davidcaseria).
cdk-ffi: Split uniffi types into multiple mods (davidcaseria).
cdk-ffi: Make Uniffi Records Codable in Swift (davidcaseria).
cdk: Replace proof swap with state check in error recovery (crodas).
cdk: Simplify mint addition in MultiMintWallet (thesimplekid).
cdk: Update NUT-11 SIG_ALL message aggregation per spec (SatsAndSports).
cdk: Remove delete functions for quotes (thesimplekid).
cdk: Clean witness data (thesimplekid).
cdk-lnbits: Fix lnbits fee calc (thesimplekid).
cashu: Add spending-condition inspection helpers and token_secrets() (lollerfirst).
cdk: Make sorting Transactions a stable sort (benthecarman).
Updated stable Rust to 1.85.0 (thesimplekid).
Version 0.13.0 marks a major milestone for mobile development with the introduction of comprehensive native mobile bindings that enable building Cashu wallets for iOS and Android using Swift and Kotlin. The release introduces cdk-ffi, a new Foreign Function Interface crate that provides UniFFI-based bindings for Swift, Kotlin, and Python, with full wallet functionality including multi-mint support, BOLT12 payments, BIP-353 address resolution, and advanced features like P2PK conditions and authentication. Mobile bindings are distributed through dedicated repositories at https://github.com/cashubtc/cdk-kotlin and https://github.com/cashubtc/cdk-swift that provide native package management for Android/JVM and iOS/macOS platforms respectively. The release also delivers significant infrastructure improvements including an event-driven payment architecture with real-time notifications, enhanced database layer with generic key-value storage, improved HTTP transport with proxy support and BIP-353 DNS resolution, and new operational features like Prometheus metrics collection and dedicated authentication database support.
Event enum for payment event handling with PaymentReceived variant (thesimplekid).payment_method field to MeltQuote struct for tracking payment method type (thesimplekid).payment_method column to melt_quote table for SQLite and PostgreSQL (thesimplekid).MintKVStoreDatabase trait providing generic key-value storage functionality for mint databases (thesimplekid).KVStoreTransaction trait for transactional key-value operations with read, write, remove, and list capabilities (thesimplekid).kv_store table for generic key-value storage in SQLite and PostgreSQL (thesimplekid).MintKVStoreDatabase trait for SQL-based databases with namespace support (thesimplekid).quote_id field to Transaction struct for tracking associated mint or melt quote IDs (thesimplekid).quote_id column to transactions table for SQLite and PostgreSQL (thesimplekid).amount_mintable() helper and stricter mint quote validation (thesimplekid).melt_request storage with associated blinded messages; new migrations for SQLite and PostgreSQL (thesimplekid).pay_index in the mint KV store to avoid missed events across restarts (thesimplekid).prometheus) (asmo).prometheus) (thesimplekid).cdk-postgres: Dedicated auth database support with separate schema and migrations when auth is enabled (thesimplekid/asmo).
cdk-common: Refactored MintPayment trait method wait_any_incoming_payment to wait_payment_event with event-driven architecture (thesimplekid).
cdk-common: Updated wait_payment_event return type to stream Event enum instead of WaitPaymentResponse directly (thesimplekid).
cdk: Updated mint payment handling to process payment events through new Event enum pattern (thesimplekid).
cashu: Updated BOLT12 payment method specification from NUT-24 to NUT-25 (thesimplekid).
cdk: Updated BOLT12 import references from nut24 to nut25 module (thesimplekid).
cdk: Do not fallback from WebSocket to HTTP on first error in subscriptions; retry only when appropriate (crodas).
cdk: Abstracted HTTP Transport; centralized pay_request logic into the cdk library (lollerfirst).
cdk: MultiMintWallet refactor for clearer APIs and behavior when managing multiple mints (davidcaseria/thesimplekid).
cdk: Treat None proxy host matcher as "apply to all hosts" for HTTP transport (lollerfirst).
cdk: QuoteId handling unified as string in APIs and storage (thesimplekid).
cdk-axum: Close WebSocket connections sooner on shutdown/errors to avoid dangling clients (crodas).
cdk-sql-common: Consistent ordering for SQL migrations and build uses OUT_DIR for embedded migration files (vnprc).
cdk-signatory: Updated protobuf to latest spec and added signatory-related DB migrations (crodas).
cdk-redb: Bumped dependency version (thesimplekid).
instant) (gudnuf).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—making load_mint_keysets the primary entry point for token operations—and the MSRV is updated to 1.85.0.
KeySetInfos type alias and KeySetInfosMethods trait for filtering keysets (thesimplekid).start() and stop() methods for graceful background service control (thesimplekid).start_fake_auth_mint for testing fake mint with authentication (thesimplekid).start_fake_mint for testing fake mint instances (thesimplekid).start_regtest_mints for testing regtest mints (thesimplekid).start() and stop() methods to MintPayment trait for payment processor lifecycle management (thesimplekid).security: Zeroize secrets on drop (vnprc).
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).
get_mint_quote_by_request_lookup_id function synchronization (crodas).Version 0.11.0 brings significant architectural changes to enhance database reliability and performance. The major changes include:
Database Engine Change: Replaced sqlx with rusqlite as the SQLite database driver and removed support for redb. This change provides better performance and reliability for database operations.
Transaction Management: Introduced robust database transaction support that encapsulates all database changes. The new Transaction trait implements a rollback operation on Drop unless explicitly committed, ensuring data integrity.
Race Condition Prevention: Added READ-and-lock operations to securely read and lock records from the database for exclusive access, preventing race conditions in concurrent operations.
If you are currently running a mint with redb, you must migrate to SQLite before upgrading to v0.11. Follow these steps:
Convert unit helper fn PR (davidcaseria).
cdk-sqlite: remove sqlx in favor of rusqlite (crodas).
cdk-lnd: use custom tonic gRPC instead of fedimint-tonic-grpc PR (thesimplekid).
cdk-cln: remove the us of mutex on cln client PR (thesimplekid).
cdk-signatory is optional for wallet PR (thesimplekid).Docker build workflow for arm64 images PR (asmo).
cdk-redb: Removed mint storage functionality to be wallet-only (thesimplekid).
Updated Nix flake to 25.05 and removed Nix cache PR (thesimplekid).
Updated dependencies PR (thesimplekid).
Refactored NUT-04 and NUT-05 PR (thesimplekid).
Updated Nix flake to 25.05 and removed Nix cache PR (thesimplekid).
Multi-part payments support in cdk-cli PR (thesimplekid).
Refactored Lightning module to use common types PR (thesimplekid).
Updated LND to support mission control and improved requery behavior PR (lollerfirst).
create_time, paid_time to mint and melt quotes PR (thesimplekid).cdk-mint-rpc: Added get mint and melt quotes ttl PR (thesimplekid).
cashu: Move wallet mod to cdk-common (thesimplekid).
Export Mint DB Traits PR (davidcaseria).
Move Mint and Melt quote to cdk commit from cashu PR (thesimplekid).
MintKeySetInfo PR (davidcaseria).UPDATE OR REPLACE (crodas).MintQuote and MeltQuote from cashu to cdk-common (thesimplekid).tos_url to MintInfo (nodlAndHodl).MintBuilder (thesimplekid).Completed checked arithmetic operations for Amount (i.e., checked_mul and checked_div) (davidcaseria).
Remove support for Memory Database in cdk (crodas).
Remove AmountStr (crodas).
Remove get_nostr_last_checked from WalletDatabase (thesimplekid).
Remove add_nostr_last_checked from WalletDatabase (thesimplekid).
cdk-mintd: Update to cdk v0.7.2 (thesimplekid).
Id is hex (thesimplekid).call_typed for cln rpc calls (daywalker90).cdk: Mint builder add ability to set custom derivation paths (thesimplekid).
cdk-cln: Return error on stream error (thesimplekid).
Moved db traits to cdk-common (crodas).
Moved other common types to cdk-common (crodas).
Wallet::mint returns the minted Proofs and not just the amount (davidcaseria).
Token::to_raw_bytes serializes generic token to raw bytes (lollerfirst).Token::try_from for Vec<u8> constructs a generic token from raw bytes (lollerfirst).TokenV4::to_raw_bytes() serializes a TokenV4 to raw bytes following the spec (lollerfirst).Wallet::receive_raw which receives raw binary tokens (lollerfirst).cashu: Core types and functions defined in NUTs (crodas).
Multimint unit check when wallet receiving token (thesimplekid).
Mint start up with most recent keyset after a rotation (thesimplekid).
cdk: Missing check on mint that outputs equals the quote amount (thesimplekid).
cdk: Reset mint quote status if in state that cannot continue (thesimplekid).
cdk-mintd: Get work-dir from env var (thesimplekid).
cdk: Enforce quote_id to uuid type in mint (tdelabro).
cdk: Refactor wallet mint connector (ok300).
NUT19 Settings in NUT06 info (thesimplekid).NUT17 Websocket support for wallet (crodas).cdk-axum: HTTP compression support (ok300).
cdk-sqlite: Keyset counter was overwritten when keyset was fetched from mint (thesimplekid).
cdk-cli: On mint use unit from cli args (thesimplekid).
cdk-cli: On restore create wallet if it does not exist (thesimplekid).
cdk: Signaling support for optional nuts (thesimplekid).
cdk-phd: Check payment has valid uuid (thesimplekid).
cdk: Bump bitcoin to 0.32.2 (prusnak).
cdk: Bump lightning-invoice to 0.32.2 (prusnak).
cdk: Bump lightning to 0.0.124 (prusnak).
cdk: PaymentMethod as a non_exhaustive enum (thesimplekid).
cdk: CurrencyUnit as a non_exhaustive enum (thesimplekid).
cdk: Enforce token is single mint (thesimplekid).
cdk: Mint will return change for over paid melt even over fee reserve (davidcaseria).
cdk: Refactor ln_backeds to be on the cdk::Mint and not with axum (thesimplekid).
cdk: Change is returned in the check quote response (thesimplekid).
cdk: Move unit conversion util fn to amount module (davidcaseria).
cdk: Remove spent proofs from db when check state is called (mubarak23).
cdk: Use MintUrl directly in wallet client (ok300).
cdk-cli: Change cdk-cli pay command to melt (mubarak23).
cdk: Rename Wallet::get_proofs to Wallet::get_unspent_proofs (ok300).
cdk: Id to u32 changed from TryFrom to From (vnprc).
MintQuoteBolt11Request (lollerfirst).mint_quote (lollerfirst).amount and fee_paid to Melted (davidcaseria).from_proofs on Melted (davidcaseria).PaymentResponse (thesimplekid).Wallet::get_proofs_with (ok300).cdk: Mint NUT-17 Websocket support (crodas).
cdk: Remove MintMeltSettings since it is no longer used (lollerfirst).
cdk: PaymentMethod::Custom (thesimplekid).
cdk: Remove deprecated MeltBolt11Response (thesimplekid).
cdk: Check of inputs to include fee (thesimplekid).
cdk: Make unit mandatory in tokenv4 (ok300).
cdk: Reduce MSRV to 1.63.0 (thesimplekid).
cdk-axum: Reduce MSRV to 1.63.0 (thesimplekid).
cdk-strike: Reduce MSRV to 1.63.0 (thesimplekid).
cdk-lnbits: Reduce MSRV to 1.63.0 (thesimplekid).
cdk-phoenixd: Reduce MSRV to 1.63.0 (thesimplekid).
cdk-fake-wallet: Reduce MSRV to 1.63.0 (thesimplekid).
cdk-cln: Reduce MSRV to 1.63.0 (thesimplekid).
cdk-sqlite: Reduce MSRV to 1.66.0 (thesimplekid).
cdk-redb: Reduce MSRV to 1.66.0 (thesimplekid).
cdk: Format url base lowercase (callebtc).
cdk: Use CDK error type instead of mint and wallet specific (thesimplekid).
cdk-cli: Tokenv4 error print diagnostic notation (ok300).
cdk-redb: Remove use of mutex (thesimplekid).
cdk: Multiple error types (thesimplekid).
cdk(mint): Use checked addition on amount to ensure there is no overflow (thesimplekid).
cdk(wallet): Removed CDK wallet error (thesimplekid).
cdk(mint): Removed CDK mint error (thesimplekid).
cdk(wallet): fn send returns Token so the user can use the struct of convert it to a v3 or v4 string (thesimplekid).
cdk(wallet): Publicly export MultiMintWallet (thesimplekid).
cdk(cdk-database/mint): Get pending and spent proofs by ys or secrets instead of a single proofs (thesimplekid).
cdk(cdk-database/mint): Change add_blind_signature to add_blind_signatures (thesimplekid).
cdk(cdk-database/mint): Rename add_active_keyset to set_active_keyset (thesimplekid).
cdk(cdk-database/wallet): Change get_proofs to return Vec<ProofInfo> instead of Option<Vec<ProofInfo>> (thesimplekid).
cdk-cli: Receive will add wallet when receiving if mint is unknown (thesimplekid).
cdk(cdk-database/mint): Rename get_blinded_signatures to get_blind_signatures (thesimplekid).
cdk(cdk-database/mint): Rename get_blinded_signatures_for_keyset to get_blind_signatures_for_keyset (thesimplekid).
cdk(mint): Typo rename total_redeame to total_redeemed (vnprc).
cdk(mint): Refactored MintKeySet::generate_from_xpriv and MintKeySet::generate_from_seed methods to accept max_order, currency_unit, and derivation_path parameters directly (vnprc).
cdk(wallet): Return WalletKey for UnknownWallet error (davidcaseria).
cdk(cdk-lightning): CreateInvoiceResponse added expiry time to better support backends where it cannot be set (thesimplekid).
cdk(cdk-lightning): Use Amount type instead of u64 (thesimplekid).
cdk(cdk-lightning): CreateInvoice requires unit argument (thesimplekid).
cdk(cdk/multi_mint_wallet): get_balances returns a BTreeMap instead of HashMap (thesimplekid).
Copy on SigFlag (thesimplekid).fn send_proofs that marks proofs as reserved and creates token (thesimplekid).fn melt_proofs that uses specific proofs for melt instead of selecting (thesimplekid).add_proofs, get_proofs_by_ys, get_proofs_states, and update_proofs_states (thesimplekid).get_blinded_signatures_for_keyset to get all blind signatures for a keyset_id (thesimplekid).total_issued and total_redeamed (thesimplekid).get_proofs_by_keyset_id (thesimplekid).mint_icon_url (cjbeery24).MintUrl that sanitizes mint url by removing trailing / (cjbeery24).update_proofs that both adds new ProofInfos to the db and deletes (davidcaseria).cdk(cdk-database/mint): Add set_pending_proofs, reserve_proofs, and set_unspent_proofs (davidcaseria).
cdk(mint): SIG_ALL is not allowed in melt (thesimplekid).
cdk(mint): On swap verify correct number of sigs on outputs when SigAll (thesimplekid).
cdk(mint): Use amount in payment_quote response from ln backend (thesimplekid).
cdk(mint): Create new keysets for added supported units (thesimplekid).
cdk(mint): If there is an error in swap proofs should be reset to unspent (thesimplekid).
cdk(wallet): Remove unused argument SplitTarget on melt (thesimplekid).
cdk(cdk-database/mint): Remove get_spent_proofs, get_spent_proofs_by_ys,get_pending_proofs, get_pending_proofs_by_ys, and remove_pending_proofs (thesimplekid).
cdk: Remove UncheckedUrl in favor of MintUrl (cjbeery24).
cdk(cdk-database/mint): Remove set_proof_state, remove_proofs and add_proofs (davidcaseria).
This release introduces TokenV4, which uses CBOR encoding as the default token format. It also includes fee support for both wallet and mint operations. When sending, the sender can choose to include the necessary fee to ensure that the receiver can redeem the full sent amount. If this is not done, the receiver will be responsible for the fee. Additionally, this release introduces a Mint binary cdk-mintd that uses the cdk-axum crate as a web server to create a full Cashu mint. When paired with a Lightning backend, currently implemented as Core Lightning, it is included in this release as cdk-cln.
cdk(wallet): wallet:receive will not claim proofs from a mint other than the wallet's mint (thesimplekid).
cdk(NUT00): Token is changed from a struct to enum of either TokenV4 or Tokenv3 (thesimplekid).
cdk(NUT00): Rename MintProofs to TokenV3Token (thesimplekid).
cdk(wallet): Additional arguments in send send_kind and include_fees for control of how to handle fees in a send (thesimplekid).
cdk(wallet): Additional arguments in create_swap include_fees for control of if fees to redeem the send proofs are included in send amount (thesimplekid).
wallet::receive_proof functions to claim specific proofs instead of encoded token (thesimplekid).send to print v3 token, default is v4 (thesimplekid).MintLightning trait (thesimplekid).MintInfo and NUTs builder (thesimplekid).PreMintSecret added Keyset id (thesimplekid).cdk: NUT02 Support fees (thesimplekid).
cdk: NUT06 deserialize MintInfo (thesimplekid).
cdk(wallet): wallet::total_pending_balance does not include reserved proofs (thesimplekid).