diff options
| author | Terry Yiu <963907+tyiu@users.noreply.github.com> | 2024-08-14 20:02:13 -0400 |
|---|---|---|
| committer | Terry Yiu <963907+tyiu@users.noreply.github.com> | 2024-08-14 20:08:41 -0400 |
| commit | 95885afe2da245b0c4d80b91e9e44ee7f5ad447f (patch) | |
| tree | 5db11cf600c38c9c23e87e4b2ecaddf8afdfad14 /09.md | |
| parent | 645a562a8b870a41fd953a422e171b33f74aef07 (diff) | |
Update NIP-09 to rename deletion to retraction
Diffstat (limited to '09.md')
| -rw-r--r-- | 09.md | 26 |
1 files changed, 14 insertions, 12 deletions
| @@ -1,14 +1,14 @@ | |||
| 1 | NIP-09 | 1 | NIP-09 |
| 2 | ====== | 2 | ====== |
| 3 | 3 | ||
| 4 | Event Deletion | 4 | Event Retraction |
| 5 | -------------- | 5 | -------------- |
| 6 | 6 | ||
| 7 | `draft` `optional` | 7 | `draft` `optional` |
| 8 | 8 | ||
| 9 | A special event with kind `5`, meaning "deletion" is defined as having a list of one or more `e` or `a` tags, each referencing an event the author is requesting to be deleted. Deletion requests SHOULD include a `k` tag for the kind of each event being deleted. | 9 | A special event with kind `5`, meaning "retraction" is defined as having a list of one or more `e` or `a` tags, each referencing an event the author is requesting to be retracted. Retraction requests SHOULD include a `k` tag for the kind of each event being retracted. |
| 10 | 10 | ||
| 11 | The event's `content` field MAY contain a text note describing the reason for the deletion. | 11 | The event's `content` field MAY contain a text note describing the reason for the retraction. |
| 12 | 12 | ||
| 13 | For example: | 13 | For example: |
| 14 | 14 | ||
| @@ -28,24 +28,26 @@ For example: | |||
| 28 | } | 28 | } |
| 29 | ``` | 29 | ``` |
| 30 | 30 | ||
| 31 | Relays SHOULD delete or stop publishing any referenced events that have an identical `pubkey` as the deletion request. Clients SHOULD hide or otherwise indicate a deletion status for referenced events. | 31 | Relays SHOULD delete or stop publishing any referenced events that have an identical `pubkey` as the retraction request. Clients SHOULD hide or otherwise indicate a retraction status for referenced events. |
| 32 | 32 | ||
| 33 | Relays SHOULD continue to publish/share the deletion events indefinitely, as clients may already have the event that's intended to be deleted. Additionally, clients SHOULD broadcast deletion events to other relays which don't have it. | 33 | Relays SHOULD continue to publish/share the retraction events indefinitely, as clients may already have the event that's intended to be retracted. Additionally, clients SHOULD broadcast retraction events to other relays which don't have it. |
| 34 | 34 | ||
| 35 | When an `a` tag is used, relays SHOULD delete all versions of the replaceable event up to the `created_at` timestamp of the deletion event. | 35 | When an `a` tag is used, relays SHOULD delete all versions of the replaceable event up to the `created_at` timestamp of the retraction event. |
| 36 | 36 | ||
| 37 | ## Client Usage | 37 | ## Client Usage |
| 38 | 38 | ||
| 39 | Clients MAY choose to fully hide any events that are referenced by valid deletion events. This includes text notes, direct messages, or other yet-to-be defined event kinds. Alternatively, they MAY show the event along with an icon or other indication that the author has "disowned" the event. The `content` field MAY also be used to replace the deleted events' own content, although a user interface should clearly indicate that this is a deletion reason, not the original content. | 39 | Clients MAY choose to fully hide any events that are referenced by valid retraction events. This includes text notes, direct messages, or other yet-to-be defined event kinds. Alternatively, they MAY show the event along with an icon or other indication that the author has "disowned" the event. The `content` field MAY also be used to replace the retracted events' own content, although a user interface should clearly indicate that this is a retraction reason, not the original content. |
| 40 | 40 | ||
| 41 | A client MUST validate that each event `pubkey` referenced in the `e` tag of the deletion request is identical to the deletion request `pubkey`, before hiding or deleting any event. Relays can not, in general, perform this validation and should not be treated as authoritative. | 41 | A client MUST validate that each event `pubkey` referenced in the `e` tag of the retraction request is identical to the retraction request `pubkey`, before hiding or deleting any event. Relays can not, in general, perform this validation and should not be treated as authoritative. |
| 42 | 42 | ||
| 43 | Clients display the deletion event itself in any way they choose, e.g., not at all, or with a prominent notice. | 43 | Clients display the retraction event itself in any way they choose, e.g., not at all, or with a prominent notice. |
| 44 | |||
| 45 | Clients MAY choose to inform the user that their request for retraction does not guarantee deletion because it is impossible to delete events from all relays and clients. | ||
| 44 | 46 | ||
| 45 | ## Relay Usage | 47 | ## Relay Usage |
| 46 | 48 | ||
| 47 | Relays MAY validate that a deletion event only references events that have the same `pubkey` as the deletion itself, however this is not required since relays may not have knowledge of all referenced events. | 49 | Relays MAY validate that a retraction event only references events that have the same `pubkey` as the retraction itself, however this is not required since relays may not have knowledge of all referenced events. |
| 48 | 50 | ||
| 49 | ## Deleting a Deletion | 51 | ## Retracting a Retraction |
| 50 | 52 | ||
| 51 | Publishing a deletion event against a deletion has no effect. Clients and relays are not obliged to support "undelete" functionality. | 53 | Publishing a retraction event against a retraction has no effect. Clients and relays are not obliged to support "unretract" functionality. |