github cashubtc/nutshell 0.12.3
0.12.3 - P2PK

latest releases: 0.16.3, 0.16.2, 0.16.1...
16 months ago

Pay to pubkey – P2PK

Getting ready for a new type of Nostr zaps

This Nutshell release introduces a new token lock type called Pay-to-Pubkey or P2PK. This allows you to create ecash tokens that can only be spent by their designated recipient. A token locked with P2PK can be posted online without any third party being able to spend it.

Using P2PK

  • The receiver generates a public key lock via cashu lock.
  • The sender locks tokens to this public key via cashu send <amount> --lock <P2PK_lock>.
  • The receiver then receives the tokens via cashu receive <locked_token>.

Background

In an upcoming upgrade we will also add DLEQ proofs (PR) which allow anyone to check the validity of the mint's signature on a token without having to contact the mint.

These two features combined, P2PK and DLEQ proofs, allow for a very interesting use case: publicly verifiable payments to a pubkey in the form of ecash. As soon as the ecash is publicly posted, the transaction can be viewed as complete: The token can evidently be spent only by the intended recipient, and the validity of its signature can be verified client-side. In such a case, the recipient of this ecash can remain fully offline but be confident that they received a transaction.

It gets even more interesting: This ecash can be attached to anything.... including as a reply to a Nostr note! TBD

The P2PK feature also includes a new timelock feature that allows you to release a token from its lock after a certain time has passed. After the timelock is passed, the token can either be spent by everyone

Note: This feature is still experimental and some parts are incomplete. Things to add are multisignature spending paths and signature flags that can commit to the outputs of a transaction as well.

NUT updates

  • NUT-09: wallet can now show mint information with cashu info -m (#262)
  • NUT-07: Mint responds with token proof's pending state #277

Other changes

  • Wallet: Ability to configure a HTTP proxy (#269)
  • Fix corner case for fee reserve output calculation (#260 and #261)

Full Changelog: 0.12.1...0.12.3

Don't miss a new nutshell release

NewReleases is sending notifications on new releases.