Cashu Nutshell v0.12.1: Performance and Stability Improvements
Cashu is a Chaumian Ecash wallet and mint for Bitcoin Lightning. Cashu Nutshell is the reference implementation in Python.
- "This release includes a ton of performance and stability improvements!"
- Disclaimer: Cashu is still experimental and not production-ready.
What's new
NUTs
- Dynamic change output amounts (NUT-08 update).
Mint
- Use
httpx
library instead ofrequests
for asynchronous operations. - Transition from using DB locks to asyncio locks (for compatibility with RaspberryPi systems and LNbits).
Wallet
- Huge performance increase thanks to db optimizations.
- Multimint swaps in Nutshell! Enter
cashu swap
or use the wallet API. - Option to mint tokens of a specific denomination (for headless operation).
- Option to send existing token denominations without a
/split
(for high-frequency payments). - Improve wallet REST API.
Changes
- [Wallet] Bugfix/enable-funding-multiple-mints by @callebtc in #210
- add CONTRIBUTING.md by @callebtc in #211
- Allow to set maximum peg in/out for mint by @sihamon in #209
- Assert
mint_private_key
is available at startup by @xphade in #208 - [Mint] add trace logs by @callebtc in #213
- more traces by @callebtc in #214
- Mint/moremore_traces by @callebtc in #215
- more logging by @callebtc in #216
- add transactions and locking for certain operations by @Semisol in #217
- Chore: make format by @callebtc in #218
- Refactor Compat and Database for LNbits comaptibility by @callebtc in #219
- [Mint] Fix balance views for Postgres by @callebtc in #222
- [Mint] rewrite lnbits backend with httpx by @callebtc in #230
- Mint API: Check
?amount
is within a sensible range by @AngusP in #226 - [Mint] LNBits backend refactor httpx by @AngusP in #234
- db: postgres cast int to bigint by @callebtc in #231
- Add secp256k1 deps to dockerfile by @ebrakke in #235
- [Wallet] Define responses for API by @sihamon in #233
- Catch all exceptions in wallet API by @sihamon in #220
- Implement dynamic amount of tokens for change by @xphade in #223
- [Wallet] API: optional amount in
InvoiceResponse
by @callebtc in #236 - update .env example to reflect latest flags by @callebtc in #238
- fix typo by @callebtc in #239
- Allow to start wallet API by cashu --daemon by @sihamon in #243
- [Wallet] Allow minting of specific amounts by @callebtc in #248
- [Wallet] send without split by @callebtc in #249
- [Wallet] DB optimization for faster payments by @callebtc in #250
- update readme by @callebtc in #251
- [Mint] Fix: check keyset id in mint and allow custom split amounts for
LIGHTNING=False
by @callebtc in #253 - [Wallet] balance: await wallet.load_proofs() by @callebtc in #254
- [Wallet] no async for deserialization functions by @callebtc in #255
- Use m̶u̶l̶t̶i̶p̶r̶o̶c̶e̶s̶s̶i̶n̶g̶ asyncio locks instead of db locks by @callebtc in #256
- [Wallet] store public keys of each keyset by @callebtc in #165
- Add multi-mint swap to CLI and API by @sihamon in #212
- bump version to 0.12.1 by @callebtc in #258
- Wallet: fix wallet pubkey migration start by @callebtc in #259
New Contributors
- @xphade made their first contribution in #208
- @Semisol made their first contribution in #217
- @AngusP made their first contribution in #226
- @ebrakke made their first contribution in #235
Full Changelog: 0.12.0...0.12.1