github cashubtc/nutshell 0.14.0

latest releases: 0.16.0, 0.16.0-rc3, 0.16.0-rc2...
10 months ago

Nutshell 0.14.0 brings many new features and improvements. These include a completely redesigned approach to use ecash spending conditions (programmable ecash) and the ability to transact offline (using offline signature validation). Protocol changes are according to the new specifications NUT-10, NUT-11, and NUT-12.

Protocol updates

Well-known spending conditions

Nutshell now supports NUT-10 spending conditions. This is a standardized way to create complex contracts between two Cashu users, if the mint supports a certain type of contract. One example is the P2PK implementation (see below).

Pay to Pubkey (P2PK)

P2PK allows you to lock a token to a specific pubkey. That way, only the intended receiver can redeem a token and nobody else. The recipient receives the token by providing a valid signature when redeeming it with the mint. The contract is enforced by the mint. To create a pubkey lock as a receiver, enter cashu lock. To send to this lock, the sender enters cashu send <amount> --lock <p2pk_lock_of_receiver>. This token can now be redeemed by the receiver. Read the specifications in NUT-11

DLEQ proofs

Discrete-log equality (DLEQ) proofs are now generated by the mint and handed over to wallets. Wallets can use these to verify the signature of the mint given their public key. Wallets can also send DLEQ proofs to other receiving wallets via cashu send --dleq <amount>. Receiving wallets will validate the DLEQ proof before redeeming the token via the mint. Read more information in the DLEQ PR and the specification in NUT-12.

Other Improvements

  • Wallet secret derivation fixed. Old tokens will not be restored with the new secret derivation. Use cashu selfpay to send yourself entire balance once.
  • cashu info now shows all mints
  • Wallet stores mint keysets for offline verification.
  • Mint DB with Postgres support
  • Include nostr submodule in project repo
  • Improve Docker pipeline for wallet and mint

All changes

Full Changelog: 0.13.0...0.14.0

Don't miss a new nutshell release

NewReleases is sending notifications on new releases.