It took a bit to build but now all the pieces are there in the protocol:
- P2PK that allows you to mint ecash that only the owner of an npub can spend [1]
- DLEQ proofs that allow *anyone* to check if the ecash that is publicly posted is signed by the mint public keys [2]
With this, we could do the following:
- Alice posts something nice on nostr
- Carol has a nostr client with Cashu support. Carol takes 100 sats of ecash and locks it with P2PK to Alice's npub.
- Carol now has ecash locked to Alice and DLEQ proofs (it's all inside the ecash token).
- Carol zaps Alices nostr post by simply replying with the ecash (using a special nutzap kind)
- Alice sees that she received ecash that only she can spend.
- Dave, another nostr user sees Alice's post and Carol's ecash. Dave checks with the DLEQ proof if the ecash is valid and the P2PK lock is indeed Alice's npub. If so, Dave's client displays "100 sats zapped from Alice to Carol"
[1]: https://github.com/cashubtc/nuts/blob/main/11.md
[2]: https://github.com/cashubtc/nuts/blob/main/12.md