NIP-61 replay protection: commit to P and e in Cashu proof
#2104
+33
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The Cashu tokens in NIP-61 nutzaps contain the receiver's pubkey which allows observes to verify that the payment was indeed sent to the user that's being zapped. However, since the tokens only contain the pubkey, the payment could been replayed to the same user.
Here, we introduce a new
efield in the Cashu token's tags field so that the payment commits to the event that's being zapped. We also add aPtag with the sender's nostr pubkey. That way, a zap to one event can't be replayed to zap a different event or by different user.This PR also improves some wording and clarifies that the
prooftags in the nutzap nostr event should repeat for multiple Cashu proofs.