Cashu Nutshell v0.14.0: P2PK, DLEQ Proofs, Mint & Wallet Improvements

Cashu Nutshell is a Chaumian Ecash wallet and mint for Bitcoin Lightning. Cashu Nutshell is the reference implementation in Python.

Cashu Nutshell v0.14.0: P2PK, DLEQ Proofs, Mint & Wallet Improvements
  • "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."
  • "Update with pip install cashu -U."
  • Disclaimer: "The author is NOT a cryptographer and this work has not been reviewed. This means that there is very likely a fatal flaw somewhere. Cashu is still experimental and not production-ready."

What's new

  • 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."
  • 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.

Full Changelog0.13.0...0.14.0

GitHub Repo