Skip to content

Releases: cashubtc/nutshell

0.19.2

19 Feb 13:49
0eddf4c

Choose a tag to compare

Caution

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

What's Changed

Full Changelog: 0.19.0...0.19.2

0.19.0

13 Feb 16:29
235415f

Choose a tag to compare

Wallet

  • Lightning address support via npubx.cash

Mint

  • Background sync for unpaid invoices
  • Tor service

NUTs

  • new P2PK spending rules (#842)
  • keyset metadata in keysets response (#868)

What's Changed

New Contributors

Full Changelog: 0.18.2...0.19.0

0.18.2

21 Nov 09:44
1568e51

Choose a tag to compare

This release introduces updated default mint fees and several bug fixes across both the mint and wallet.

Default Fees

New mints now use a default fee of 100 ppk. This value can be changed via the .env parameter:

MINT_INPUT_FEE_PPK=100

Recap: How Cashu fees work

Fees in Cashu are based on the number of inputs in a transaction (see NUT-02). Each proof counted as an input contributes linearly to total fees. A fee of 100 ppk means 100 parts per thousand inputs, rounded up. In other words, roughly 0.1 base units per input, rounded up to the nearest integer.

Example:

  • For a sat keyset, 5 inputs incur 0.5 sat fee, rounded up to 1 sat.
  • Any transaction with up to 10 inputs costs 1 sat, 11 to 20 inputs cost 2 sats, and so on.
  • For usd keysets, this corresponds to 1 cent per 10 inputs.

Fees are designed to stay low to maintain a smooth user experience while still discouraging abuse. All mints are encouraged to enable fees for protection.

Fixes

  • Mint now returns a clean error for pending blinded outputs (code 10002). A dedicated error code for pending outputs will be introduced soon to distinguish this case from already-signed outputs.
  • Strike backend now applies USDT fees correctly.
  • Wallet updates keyset fee settings when they change.
  • Mint now tracks fees accurately across multiple keysets.

What's Changed

Full Changelog: 0.18.1...0.18.2

0.18.1

05 Nov 00:18
0041e3a

Choose a tag to compare

Caution

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

Fixes

  • Clean up large witnesses that might contaminate the database due to the lack of a size check on the HTLC preimage size.
  • Remove timeout for Lightning backend HTTP connections.

What's Changed

  • Mint: migration to clean up overly large witnesses by @callebtc in #817
  • fix: remove 5 seconds timeout by @lollerfirst in #819

Full Changelog: 0.18.0...0.18.1

0.18.0

28 Oct 11:58
c856643

Choose a tag to compare

Caution

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

New Features

Mint management via gRPC

Mint management gRPC server for integration with management UI Orchard and a CLI tool that can send commands to the Mint while it's running.

Additional Protocol Updates

  • NUT-04: Create invoices with a description.

Fixes and Improvements

  • SIG_ALL signature flag
  • USD support for Strike backend
  • Improve invoice stream to Lightning backend
  • Prevent duplicate blank outputs while melting
  • Fix double-execution of melt quotes for the same invoice
  • Several other bug fixes

What's Changed

  • Mint: adjust mint melt settings by @callebtc in #764
  • Add verbose request logging feature to wallet by @olindost in #758
  • Mint Management gRPC Server by @lollerfirst in #723
  • [BUGFIX] SIG_ALL check returns true for other sigflags by @lollerfirst in #767
  • management RPC follow up by @lollerfirst in #770
  • fix "Expected currency USD, got USDT" when generating mint quote by @gudnuf in #772
  • Adjust mint melt settings 2 by @callebtc in #777
  • feat: implement exponential backoff for paid_invoices_stream by @lollerfirst in #778
  • fix: subscription re-init bug by @lollerfirst in #781
  • add description to NUT-04 method options by @callebtc in #783
  • update .env.example by @asmogo in #794
  • Fix duplicate blank outputs during melt by @callebtc in #795
  • check for existing b by @callebtc in #802
  • refactor: HTLC spending conditions by @lollerfirst in #803
  • fix: unique ('PENDING', checking_ID) for melt quotes by @lollerfirst in #800
  • bump to 0.18.0 by @callebtc in #812

New Contributors

Full Changelog: 0.17.1...0.18.0

0.17.1

01 Jun 10:23
67b7ea6

Choose a tag to compare

This release includes a hotfix for the updated LNbits v1 backend API.

What's Changed

Full Changelog: 0.17.0...0.17.1

0.17.0

19 May 10:47
3e32dc4

Choose a tag to compare

Caution

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

New Features

Blind Authentication

  • Limit mint access using Clear and Blind Authentication. Nutshell now supports NUT-21 and NUT-22, enabling the use of OAuth 2.0 identity providers like Keycloak (or any compatible provider). This allows you to create closed systems where only registered users of a service can access the mint.
  • NUT-22 introduces Blind Authentication, which enhances user privacy by anonymizing authentication within the set of registered users.

Improved Multi-Nut Payments

  • Multi-nut payments via LND are now more reliable. Nutshell queries multiple routes before failing, significantly improving payment success rates.

Removed Features

The wallet REST API has been removed from the project due to a low utility to maintenance cost ratio.

Additional Protocol Updates

  • SIG_ALL Multisig Flag: Users can now lock ecash to specific destinations (outputs). PR #735
  • Mint and Melt Quote Enhancements: The update to NUT-04/05 introduces new fields (amount, unit, request) to mint and melt quotes. PR #719
  • ToS URL: Mints now have the option to enter a Terms of Service (ToS) URL in the mint info settings.

Fixes and Improvements

  • Wallet Un-reservation: Nutshell wallet now un-reserves ecash after a failed Lightning payment more reliably.
  • Improved Keyset Rotation: Enhanced keyset rotation process for mints.
  • Pending Melt Quotes: Mints now check pending melt quotes in the background every hour, ensuring more reliable processing of pending ecash.
  • Balance Tracking for Keysets: Mints can now track balances for each keyset separately, offering better observability and reporting.
  • Strike backend: now supports msat keysets

What's Changed

  • Blind authentication by @callebtc in #675
  • Update Error Codes by @lollerfirst in #702
  • Set correct blink min fee by @callebtc in #701
  • Balance Views Grouped By Keyset by @lollerfirst in #652
  • Add CLI Decode Command by @lollerfirst in #709
  • Update README.md - Add Redis info? by @findingsov in #714
  • Update README.md-install nutshell into nutshell dir by @findingsov in #713
  • [FIX] NUT-15 mpp amount in millisats by @lollerfirst in #703
  • Add LightningPaymentFailedError exception by @callebtc in #706
  • [NUT-15] LND: Try Multiple Routes by @lollerfirst in #692
  • Wallet: determine valid amounts from mint's keys response by @NonsoAmadi10 in #684
  • Upgrade coincurve to version 21.0.0 by @ofek in #721
  • NUT-04/05: add amount, unit, request to melt and mint quote responses by @callebtc in #719
  • Fix mint migrations: Fill in missing keyset IDs in proofs and promises by @callebtc in #729
  • Add terms of service URL to MintInformation class by @callebtc in #715
  • Cjbeery24/mint copy: Invoice checker background tasks by @callebtc in #722
  • Fix getting the invoice from LNbits API by @iWarpBTC in #732
  • SIG_ALL signature flag for P2PK by @callebtc in #735
  • Mint Keyset Rotation by @lollerfirst in #734
  • Wallet: add Wallet.get_melt_proof(), recover reserved state in failed Wallet.melt() by @callebtc in #730
  • Chore: reorganize docker compose files for redis and keycloak by @callebtc in #736
  • Wallet: Fix cli mpp off by @callebtc in #741
  • Mint: add new init test to mint by @callebtc in #743
  • .env.example update for mint TOS by @callebtc in #746
  • Testing: check if pipeline gets stuck because of startup task by @callebtc in #745
  • Bump version to 0.16.6 by @callebtc in #747
  • [PATCH] LND use_mission_control + exclude failing channels by @lollerfirst in #738
  • Tests: split wallet test from mint test pipeline by @callebtc in #748
  • Mint: watchdog balance log and killswitch by @callebtc in #705
  • Wallet: fix db migration 13 duplicate by @callebtc in #750
  • Mint: add msat support for Strike backend by @callebtc in #755

New Contributors

Full Changelog: 0.16.5...0.16.6-rc1

0.17.0-rc1

13 May 16:02
081a30e

Choose a tag to compare

0.17.0-rc1 Pre-release
Pre-release

Important

This release candidate is not meant to be used in production.

Caution

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

New Features

Blind Authentication

  • Limit mint access using Clear and Blind Authentication. Nutshell now supports NUT-21 and NUT-22, enabling the use of OAuth 2.0 identity providers like Keycloak (or any compatible provider). This allows you to create closed systems where only registered users of a service can access the mint.
  • NUT-22 introduces Blind Authentication, which enhances user privacy by anonymizing authentication within the set of registered users.

Improved Multi-Nut Payments

  • Multi-nut payments via LND are now more reliable. Nutshell queries multiple routes before failing, significantly improving payment success rates.

Removed Features

The wallet REST API has been removed from the project due to a low utility to maintenance cost ratio.

Additional Protocol Updates

  • SIG_ALL Multisig Flag: Users can now lock ecash to specific destinations (outputs). PR #735
  • Mint and Melt Quote Enhancements: The update to NUT-04/05 introduces new fields (amount, unit, request) to mint and melt quotes. PR #719
  • ToS URL: Mints now have the option to enter a Terms of Service (ToS) URL in the mint info settings.

Fixes and Improvements

  • Wallet Un-reservation: Nutshell wallet now un-reserves ecash after a failed Lightning payment more reliably.
  • Improved Keyset Rotation: Enhanced keyset rotation process for mints.
  • Pending Melt Quotes: Mints now check pending melt quotes in the background every hour, ensuring more reliable processing of pending ecash.
  • Balance Tracking for Keysets: Mints can now track balances for each keyset separately, offering better tracking and reporting.
  • Strike backend: now supports msat keysets

What's Changed

  • Blind authentication by @callebtc in #675
  • Update Error Codes by @lollerfirst in #702
  • Set correct blink min fee by @callebtc in #701
  • Balance Views Grouped By Keyset by @lollerfirst in #652
  • Add CLI Decode Command by @lollerfirst in #709
  • Update README.md - Add Redis info? by @findingsov in #714
  • Update README.md-install nutshell into nutshell dir by @findingsov in #713
  • [FIX] NUT-15 mpp amount in millisats by @lollerfirst in #703
  • Add LightningPaymentFailedError exception by @callebtc in #706
  • [NUT-15] LND: Try Multiple Routes by @lollerfirst in #692
  • Wallet: determine valid amounts from mint's keys response by @NonsoAmadi10 in #684
  • Upgrade coincurve to version 21.0.0 by @ofek in #721
  • NUT-04/05: add amount, unit, request to melt and mint quote responses by @callebtc in #719
  • Fix mint migrations: Fill in missing keyset IDs in proofs and promises by @callebtc in #729
  • Add terms of service URL to MintInformation class by @callebtc in #715
  • Cjbeery24/mint copy: Invoice checker background tasks by @callebtc in #722
  • Fix getting the invoice from LNbits API by @iWarpBTC in #732
  • SIG_ALL signature flag for P2PK by @callebtc in #735
  • Mint Keyset Rotation by @lollerfirst in #734
  • Wallet: add Wallet.get_melt_proof(), recover reserved state in failed Wallet.melt() by @callebtc in #730
  • Chore: reorganize docker compose files for redis and keycloak by @callebtc in #736
  • Wallet: Fix cli mpp off by @callebtc in #741
  • Mint: add new init test to mint by @callebtc in #743
  • .env.example update for mint TOS by @callebtc in #746
  • Testing: check if pipeline gets stuck because of startup task by @callebtc in #745
  • Bump version to 0.16.6 by @callebtc in #747
  • [PATCH] LND use_mission_control + exclude failing channels by @lollerfirst in #738
  • Tests: split wallet test from mint test pipeline by @callebtc in #748
  • Mint: watchdog balance log and killswitch by @callebtc in #705
  • Wallet: fix db migration 13 duplicate by @callebtc in #750

New Contributors

Full Changelog: 0.16.5...0.16.6-rc1

0.16.5

29 Jan 21:41
b67ffd8

Choose a tag to compare

This maintenance release contains various bug fixes for the mint and the wallet. Most notably, overpaid Lightning fees are now issued to the user at the next restart of the mint in cases where the mint has crashed or turned off while an outgoing Lightning payment was still pending.

What's Changed

  • Add restart policy for Redis Docker container by @callebtc in #687
  • update asyncpg 0.29.0 -> 0.30.0 to make Python 3.13 happy by @prusnak in #690
  • chore: use poetry the latest 1.8.x poetry consistently by @prusnak in #691
  • config cleanup regarding MPP by @prusnak in #689
  • Issue NUT-08 overpaid Lightning fees for melt quote checks on startup by @callebtc in #688
  • Fix Redis teardown logic based on usage by @callebtc in #696
  • [FIX] Specs conformant error codes by @lollerfirst in #693
  • wallet fix: load proofs before receiving by @callebtc in #698
  • [FIX] Reject Internal MPP Melt Quote Requests by @lollerfirst in #697
  • bump to 0.16.5 by @callebtc in #699

Full Changelog: 0.16.4...0.16.5

0.16.4

03 Jan 23:02
c108bb1

Choose a tag to compare

This release brings two new protocol spec updates to nutshell, NUT-19 and NUT-20 (thank you @lollerfirst). It also includes a new HTTP compression middleware (thank you @ok300) and several bug fixes.

Note

Don't forget to run poetry install if you update nutshell from the GitHub repository.

NUT-19: Cached Response

The nutshell mint now supports NUT-19 cached responses using Redis. The mint will replay successful mint, melt, and swap responses from its caching middleware. Enable these settings in your .env to cache responses in Redis:

MINT_REDIS_CACHE_ENABLED=TRUE
MINT_REDIS_CACHE_URL="redis://localhost:6379"

A new file in /docker/docker-compose.yml can be used to start a redis server using docker compose up.

NUT-20: Signature on Mint Quote

NUT-20 allows users to create mint quotes that can only be minted if a valid signature is provided by the creator of the mint quote.

What's Changed

  • Add MPP methods key to info endpoint by @callebtc in #672
  • parse env example by @callebtc in #677
  • recommend openssl for key generation by @callebtc in #678
  • Mint: Catch websocket disconnect errors by @callebtc in #674
  • fix: NUT-15 setting remove mpp boolean by @callebtc in #673
  • Add HTTP compression middleware by @ok300 in #676
  • NUT-19: Cached Requests and Responses by @lollerfirst in #624
  • NUT-20 (signatures on quotes) for mint and wallet side by @lollerfirst in #670
  • Add period at the end of the phrase by @whileunless in #681
  • Bump version to 0.16.4 by @callebtc in #685
  • Add NUT-19 example for caching responses by @callebtc in #686

New Contributors

Full Changelog: 0.16.3...0.16.4