This commit is contained in:
Baris Aydek 2024-09-07 14:15:38 +03:00
parent a9d63ead4b
commit 274cb00e25

34
??.md
View File

@ -12,18 +12,18 @@ This NIP introduces a method for spam mitigation in comments by requiring a smal
## Motivation ## Motivation
Spam in Nostr, particularly in comment sections, is a growing issue. Spammers can easily generate thousands of comments without cost, overwhelming users. While NIP-13 provides a Proof of Work (PoW) mechanism to mitigate spam, it has notable downsides: While NIP-13 provides a Proof of Work (PoW) mechanism to mitigate spam, it has notable downsides:
1. Spammers with access to dedicated PoW miners can bypass this barrier easily. 1. Spammers with access to dedicated PoW miners can bypass this barrier easily.
2. Honest users, particularly those with low-end devices or mobile phones, may find PoW too resource-intensive, leading to drained batteries or slowed performance. 2. Honest users, particularly those with low-end devices or mobile phones, may find PoW too resource-intensive, leading to drained batteries or slowed performance.
This proposal seeks to create a more equitable and flexible spam prevention mechanism by requiring small Bitcoin payments (sats) to post comments. This proposal seeks to create a more equitable and flexible spam prevention mechanism by requiring small bitcoin payments to comment on posts.
## Specification ## Specification
### 1. The Writers Requirement for Zaps ### 1. The Writer's Requirement for Zaps
A user posting a note can include a tag to specify that comments on their note require a zap (a small Bitcoin payment) to be accepted. This is done by adding a `require-zap` tag to their note: A user posting a note can include a tag to specify that comments on their note require a `zap` (NIP-57) to be accepted. This is done by adding a `require-zap` tag to their note:
```json ```json
{ {
@ -39,9 +39,9 @@ A user posting a note can include a tag to specify that comments on their note r
} }
``` ```
### 2. The Commenters Zap Request ### 2. The Commenter's Zap Request
To post a comment on a note with a `require-zap` tag, the commenter must create a zap request event in compliance with NIP-57. The zap request includes the required amount of sats, and an `e` tag that links the comment to the original note: To post a comment on a note with a `require-zap` tag, the commenter must create a zap request event in compliance with NIP-57. The zap request includes the required amount of sats in millisathoshies, and an `e` tag that links the comment to the original note:
```json ```json
{ {
@ -63,7 +63,7 @@ To post a comment on a note with a `require-zap` tag, the commenter must create
### 3. Zap Receipt ### 3. Zap Receipt
Upon receiving the zap payment, the receivers LNURL server broadcasts a zap receipt event: Upon receiving the zap payment, the receiver's LNURL server broadcasts a zap receipt event:
```json ```json
{ {
@ -85,7 +85,7 @@ Upon receiving the zap payment, the receivers LNURL server broadcasts a zap r
### 4. Manual Zap Refund ### 4. Manual Zap Refund
As a social rule, if a writer requires a zap for comments, they are expected to refund the commenter if the comment is legitimate and not spam. The writer may choose to refund the zap by sending the same amount back via a new zap event: As a social rule, if a writer requires a zap for comments, they are expected to refund the commenter if the comment is legitimate and not spam. The writer may choose to refund the zap by sending the same amount back via a new zap event, this time connecting the previous zap event with an `e` tag. a `zap-refund` tag is added to distinguish it from a normal zap.
```json ```json
{ {
@ -101,7 +101,7 @@ As a social rule, if a writer requires a zap for comments, they are expected to
["lnurl", "<lnurl-b>"], ["lnurl", "<lnurl-b>"],
["p", "<pubkey-b>"], ["p", "<pubkey-b>"],
["e", "<event-id-b>"] ["e", "<event-id-b>"]
["zap-refund", "<event-id-b>"] ["require-zap-refund", "<event-id-b>"]
] ]
} }
``` ```
@ -124,20 +124,20 @@ Upon payment, the receiver's LNURL server broadcasts a zap receipt event, indica
} }
``` ```
### 5. Relay & Client interactions ## Client Interactions
Clients `SHOULD`: Clients `SHOULD`:
- Display an indicator when a note requires a zap for comments. - Display an indicator when a note requires a zap for comments.
- Help the user pay the zap invoice and create the zap request event. - Help the commenter create a zap request event and pay the zap invoice.
- Show whether a comment zap has been refunded or not. - Help the note owner (writer) to pay back Zaps for Comments easily.
- Show whether a zap comment has been paid back or not.
Relays: ## Relay Interactions
To mitigate spamming further, relays `MAY` ignore and refuse to propagate non-zapped comments, i.e zap receipt events. To mitigate spamming further, relays `MAY` ignore and refuse to propagate non-zapped comments, i.e zap receipt events. They can also apply different strategies like returning a `NOTICE` message for the first time receiving a non-zapped comment and ignore following ones.
They can also apply different strategies like returning a `NOTICE` message for the first time and ignore the rest. ## Flexibility in Usage
### 6. Flexibility in Usage
Writers have full control over the zap amount required for comments, providing flexibility to adjust based on the volume of spam they encounter. If a writer continues to receive spam, they can increase the zap amount. Writers can also decrease the zap amount for more legitimate engagement. Writers have full control over the zap amount required for comments, providing flexibility to adjust based on the volume of spam they encounter. If a writer continues to receive spam, they can increase the zap amount. Writers can also decrease the zap amount for more legitimate engagement.