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