Cashu Nutshell v0.12.3: Pay To Pubkey (P2PK)

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

Cashu Nutshell v0.12.3: Pay To Pubkey (P2PK)
  • "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 ore 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

GitHub Repo