From 4d646052dc0b72a2fba21a00a932fc159d4f9db1 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 24 May 2024 16:58:40 -0400 Subject: [PATCH 01/15] Adds a right to vanish NIP --- 62.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 62.md diff --git a/62.md b/62.md new file mode 100644 index 0000000000..2311bf6ea5 --- /dev/null +++ b/62.md @@ -0,0 +1,63 @@ +NIP-62 +====== + +Right to Vanish +--------------- + +`draft` `optional` + +This NIP offers a Nostr-native way to request a complete reset of a key's fingerprint on the web. In some jurisdictions, this is a legally binding procedure and thus supporters of this NIP MUST trully delete events from their database. + +## Delete Account + +Kind `62` informs a specific relay to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.createdAt` + +```js +{ + "kind": 62, + "pubkey": <32-bytes hex-encoded public key of the event creator>, + "tags": [ + ["relay", ""] + ], + "content": "", + //...other fields +} +``` + +The tag list MUST include at least one `relay` value. + +Content MAY include a reason or a legal notice to the relay operator. + +Relays MUST fully delete any events from the `.pubkey` if their service url is tagged in the event. + +Relays MAY store the deletion request for bookeeping and to make sure past events are not re-broadcasted into the relay. + +Paid relays or relays that have restrictions on who can post MUST also follow the request even if the key has not paid to get access to the relay. + +Kind `62` SHOULD only be sent to the target relays. + +## Right to Vanish + +Kind `63` informs ALL relays to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.createdAt` + +```js +{ + "kind": 63, + "pubkey": <32-bytes hex-encoded public key of the event creator>, + "tags": [], + "content": "", + //...other fields +} +``` + +The tag list MUST be empty. + +Content MAY include a reason or a legal notice to the relay operator. + +Relays MUST fully delete any events from the `.pubkey`. + +Relays MAY store the deletion request for bookeeping and to make sure past events are not re-broadcasted into the relay. + +Paid relays or relays that have restrictions on who can post MUST also follow the request even if the key has not paid to get access to the relay. + +Kind `63` SHOULD be widely broadcasted. \ No newline at end of file From 21377193a0547271d6d6de70e17a9ba917a0db5d Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 24 May 2024 16:59:47 -0400 Subject: [PATCH 02/15] updates readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index d5b6219fe3..ccfbfc7de8 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos - [NIP-57: Lightning Zaps](57.md) - [NIP-58: Badges](58.md) - [NIP-59: Gift Wrap](59.md) +- [NIP-62: Right to Vanish](62.md) - [NIP-65: Relay List Metadata](65.md) - [NIP-71: Video Events](71.md) - [NIP-72: Moderated Communities](72.md) @@ -110,6 +111,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `42` | Channel Message | [28](28.md) | | `43` | Channel Hide Message | [28](28.md) | | `44` | Channel Mute User | [28](28.md) | +| `62` | Delete Account | [62](62.md) | +| `63` | Right to Vanish | [62](62.md) | | `818` | Merge Requests | [54](54.md) | | `1021` | Bid | [15](15.md) | | `1022` | Bid confirmation | [15](15.md) | From 609571e2e875e36b5fc6045a1459ad33021b528e Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 24 May 2024 17:03:19 -0400 Subject: [PATCH 03/15] Typos --- 62.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/62.md b/62.md index 2311bf6ea5..2169beb789 100644 --- a/62.md +++ b/62.md @@ -30,9 +30,9 @@ Content MAY include a reason or a legal notice to the relay operator. Relays MUST fully delete any events from the `.pubkey` if their service url is tagged in the event. -Relays MAY store the deletion request for bookeeping and to make sure past events are not re-broadcasted into the relay. +Relays MAY store the deletion request for bookkeeping and ensure past events are not re-broadcasted into the relay. -Paid relays or relays that have restrictions on who can post MUST also follow the request even if the key has not paid to get access to the relay. +Paid relays or relays that have restrictions on who can post MUST also follow the request even if the key has not been paid to get access to the relay. Kind `62` SHOULD only be sent to the target relays. @@ -56,8 +56,8 @@ Content MAY include a reason or a legal notice to the relay operator. Relays MUST fully delete any events from the `.pubkey`. -Relays MAY store the deletion request for bookeeping and to make sure past events are not re-broadcasted into the relay. +Relays MAY store the deletion request for bookkeeping and ensure past events are not re-broadcasted into the relay. -Paid relays or relays that have restrictions on who can post MUST also follow the request even if the key has not paid to get access to the relay. +Paid relays or relays that have restrictions on who can post MUST also follow the request even if the key has not been paid to get access to the relay. Kind `63` SHOULD be widely broadcasted. \ No newline at end of file From 651abea85a3fd9d9ac24ed58efc437a73d4c8384 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 24 May 2024 21:46:52 -0400 Subject: [PATCH 04/15] Update 62.md Co-authored-by: fiatjaf_ --- 62.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/62.md b/62.md index 2169beb789..e8bed82752 100644 --- a/62.md +++ b/62.md @@ -52,7 +52,7 @@ Kind `63` informs ALL relays to delete everything, including [NIP-09](09.md) Del The tag list MUST be empty. -Content MAY include a reason or a legal notice to the relay operator. +Content MAY include a reason to the relay operator. Relays MUST fully delete any events from the `.pubkey`. From 01627945f84fb67b52b43683fe8ecb32b4aedf2d Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 28 May 2024 16:58:28 -0400 Subject: [PATCH 05/15] Unifies 62 and 63 into one with ALL_RELAYS --- 62.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/62.md b/62.md index e8bed82752..a3735964e6 100644 --- a/62.md +++ b/62.md @@ -10,7 +10,7 @@ This NIP offers a Nostr-native way to request a complete reset of a key's finger ## Delete Account -Kind `62` informs a specific relay to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.createdAt` +Kind `62` informs a specific relay to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at` ```js { @@ -32,25 +32,27 @@ Relays MUST fully delete any events from the `.pubkey` if their service url is t Relays MAY store the deletion request for bookkeeping and ensure past events are not re-broadcasted into the relay. -Paid relays or relays that have restrictions on who can post MUST also follow the request even if the key has not been paid to get access to the relay. +Paid relays or relays that have restrictions on who can post MUST also follow the request regardless of the user's status. -Kind `62` SHOULD only be sent to the target relays. +Clients SHOULD send this event to the target relays only. ## Right to Vanish -Kind `63` informs ALL relays to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.createdAt` +Kind `62` informs ALL relays to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at` ```js { - "kind": 63, + "kind": 62, "pubkey": <32-bytes hex-encoded public key of the event creator>, - "tags": [], - "content": "", + "tags": [ + ["relay", "ALL_RELAYS"] + ], + "content": "", //...other fields } ``` -The tag list MUST be empty. +The tag list MUST include a `relay` with value `ALL_RELAYS` in uppercase. Content MAY include a reason to the relay operator. @@ -58,6 +60,6 @@ Relays MUST fully delete any events from the `.pubkey`. Relays MAY store the deletion request for bookkeeping and ensure past events are not re-broadcasted into the relay. -Paid relays or relays that have restrictions on who can post MUST also follow the request even if the key has not been paid to get access to the relay. +Paid relays or relays that have restrictions on who can post MUST also follow the request regardless of the user's status. -Kind `63` SHOULD be widely broadcasted. \ No newline at end of file +Clients SHOULD broadcast this event to as many relays as possible. \ No newline at end of file From 985388ecbe6e0d8ab43f5283ab455ca1a1cbc8a3 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 28 May 2024 17:01:36 -0400 Subject: [PATCH 06/15] Removes 63 from the readme --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index ccfbfc7de8..9d96075dea 100644 --- a/README.md +++ b/README.md @@ -111,8 +111,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | `42` | Channel Message | [28](28.md) | | `43` | Channel Hide Message | [28](28.md) | | `44` | Channel Mute User | [28](28.md) | -| `62` | Delete Account | [62](62.md) | -| `63` | Right to Vanish | [62](62.md) | +| `62` | Right to Vanish | [62](62.md) | | `818` | Merge Requests | [54](54.md) | | `1021` | Bid | [15](15.md) | | `1022` | Bid confirmation | [15](15.md) | From 86fc5938e781438893a9932d50f723aa66e15484 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 28 May 2024 17:03:23 -0400 Subject: [PATCH 07/15] wording --- 62.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/62.md b/62.md index a3735964e6..77f5f186d8 100644 --- a/62.md +++ b/62.md @@ -38,7 +38,7 @@ Clients SHOULD send this event to the target relays only. ## Right to Vanish -Kind `62` informs ALL relays to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at` +Kind `62` can also inform ALL relays to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at` ```js { From 7521f7a445f808058f5885a4630028ec9dc99d51 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 3 Jun 2024 18:47:59 -0400 Subject: [PATCH 08/15] Changed from delete account to delete my content. --- 62.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/62.md b/62.md index 77f5f186d8..90ba5ae509 100644 --- a/62.md +++ b/62.md @@ -8,7 +8,7 @@ Right to Vanish This NIP offers a Nostr-native way to request a complete reset of a key's fingerprint on the web. In some jurisdictions, this is a legally binding procedure and thus supporters of this NIP MUST trully delete events from their database. -## Delete Account +## Delete My Content Kind `62` informs a specific relay to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at` From d9b39fc4687d14bc0da5f26c1b506442958cc57c Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 25 Aug 2024 09:51:52 -0400 Subject: [PATCH 09/15] - Changed language from Right to Vanish to Request to Vanish - Added deletion of GiftWrapped DMs - Reduced duplications from the merge of the two separate events in the past. --- 62.md | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/62.md b/62.md index 90ba5ae509..4c40f3407f 100644 --- a/62.md +++ b/62.md @@ -1,16 +1,16 @@ NIP-62 ====== -Right to Vanish ---------------- +Request to Vanish +----------------- `draft` `optional` -This NIP offers a Nostr-native way to request a complete reset of a key's fingerprint on the web. In some jurisdictions, this is a legally binding procedure and thus supporters of this NIP MUST trully delete events from their database. +This NIP offers a Nostr-native way to request a complete reset of a key's fingerprint on the web. This is a legally binding procedure in some jurisdictions and thus supporters of this NIP should trully delete events from their database. -## Delete My Content +## Request to Vanish from Relay -Kind `62` informs a specific relay to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at` +Kind `62` requests a specific relay to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at`. ```js { @@ -30,15 +30,19 @@ Content MAY include a reason or a legal notice to the relay operator. Relays MUST fully delete any events from the `.pubkey` if their service url is tagged in the event. -Relays MAY store the deletion request for bookkeeping and ensure past events are not re-broadcasted into the relay. +Relays SHOULD delete all [NIP-59](59.md) Gift Wraps that p-tagged the `.pubkey`, deleting all DMs to the pubkey. + +Relays MUST ensure the deleted events cannot be re-broadcasted into the relay. + +Relays MAY store the signed deletion request for bookkeeping. Paid relays or relays that have restrictions on who can post MUST also follow the request regardless of the user's status. Clients SHOULD send this event to the target relays only. -## Right to Vanish +## Global Request to Vanish -Kind `62` can also inform ALL relays to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at` +To request ALL relays to delete everything, the event MUST include a `relay` tag with value `ALL_RELAYS` in uppercase. ```js { @@ -52,14 +56,4 @@ Kind `62` can also inform ALL relays to delete everything, including [NIP-09](09 } ``` -The tag list MUST include a `relay` with value `ALL_RELAYS` in uppercase. - -Content MAY include a reason to the relay operator. - -Relays MUST fully delete any events from the `.pubkey`. - -Relays MAY store the deletion request for bookkeeping and ensure past events are not re-broadcasted into the relay. - -Paid relays or relays that have restrictions on who can post MUST also follow the request regardless of the user's status. - Clients SHOULD broadcast this event to as many relays as possible. \ No newline at end of file From ab8a580e0e693ed3bce049d182097326d48c4ef6 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 25 Aug 2024 09:53:29 -0400 Subject: [PATCH 10/15] typos --- 62.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/62.md b/62.md index 4c40f3407f..51ae80e44c 100644 --- a/62.md +++ b/62.md @@ -6,7 +6,7 @@ Request to Vanish `draft` `optional` -This NIP offers a Nostr-native way to request a complete reset of a key's fingerprint on the web. This is a legally binding procedure in some jurisdictions and thus supporters of this NIP should trully delete events from their database. +This NIP offers a Nostr-native way to request a complete reset of a key's fingerprint on the web. This is a legally binding procedure in some jurisdictions and thus supporters of this NIP should truly delete events from their database. ## Request to Vanish from Relay @@ -15,7 +15,7 @@ Kind `62` requests a specific relay to delete everything, including [NIP-09](09. ```js { "kind": 62, - "pubkey": <32-bytes hex-encoded public key of the event creator>, + "pubkey": <32-byte hex-encoded public key of the event creator>, "tags": [ ["relay", ""] ], @@ -28,7 +28,7 @@ The tag list MUST include at least one `relay` value. Content MAY include a reason or a legal notice to the relay operator. -Relays MUST fully delete any events from the `.pubkey` if their service url is tagged in the event. +Relays MUST fully delete any events from the `.pubkey` if their service URL is tagged in the event. Relays SHOULD delete all [NIP-59](59.md) Gift Wraps that p-tagged the `.pubkey`, deleting all DMs to the pubkey. @@ -36,18 +36,18 @@ Relays MUST ensure the deleted events cannot be re-broadcasted into the relay. Relays MAY store the signed deletion request for bookkeeping. -Paid relays or relays that have restrictions on who can post MUST also follow the request regardless of the user's status. +Paid relays or relays that restrict who can post MUST also follow the request regardless of the user's status. Clients SHOULD send this event to the target relays only. ## Global Request to Vanish -To request ALL relays to delete everything, the event MUST include a `relay` tag with value `ALL_RELAYS` in uppercase. +To request ALL relays to delete everything, the event MUST include a `relay` tag with the value `ALL_RELAYS` in uppercase. ```js { "kind": 62, - "pubkey": <32-bytes hex-encoded public key of the event creator>, + "pubkey": <32-byte hex-encoded public key of the event creator>, "tags": [ ["relay", "ALL_RELAYS"] ], From 9601eb2b23f549486eb3725cb72f791f39d5f653 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 18 Sep 2024 11:55:36 -0400 Subject: [PATCH 11/15] Update 62.md Co-authored-by: K --- 62.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/62.md b/62.md index 51ae80e44c..8a838abb73 100644 --- a/62.md +++ b/62.md @@ -44,7 +44,7 @@ Clients SHOULD send this event to the target relays only. To request ALL relays to delete everything, the event MUST include a `relay` tag with the value `ALL_RELAYS` in uppercase. -```js +```jsonc { "kind": 62, "pubkey": <32-byte hex-encoded public key of the event creator>, From 1cf833d7c643541b02a202239036469a3f1a8885 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 18 Sep 2024 11:55:42 -0400 Subject: [PATCH 12/15] Update 62.md Co-authored-by: K --- 62.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/62.md b/62.md index 8a838abb73..517f9d8fdf 100644 --- a/62.md +++ b/62.md @@ -12,7 +12,7 @@ This NIP offers a Nostr-native way to request a complete reset of a key's finger Kind `62` requests a specific relay to delete everything, including [NIP-09](09.md) Deletion Events, from the `.pubkey` until its `.created_at`. -```js +```jsonc { "kind": 62, "pubkey": <32-byte hex-encoded public key of the event creator>, From 44d81229fe864c1abf8ba2b3431598712459a11a Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 14 Oct 2024 10:17:58 -0400 Subject: [PATCH 13/15] Adds clause to disallow kind5 deletions of kind 62 --- 62.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/62.md b/62.md index 517f9d8fdf..3787cf4055 100644 --- a/62.md +++ b/62.md @@ -6,7 +6,7 @@ Request to Vanish `draft` `optional` -This NIP offers a Nostr-native way to request a complete reset of a key's fingerprint on the web. This is a legally binding procedure in some jurisdictions and thus supporters of this NIP should truly delete events from their database. +This NIP offers a Nostr-native way to request a complete reset of a key's fingerprint on the web. This procedure is legally binding in some jurisdictions, and thus, supporters of this NIP should truly delete events from their database. ## Request to Vanish from Relay @@ -38,6 +38,8 @@ Relays MAY store the signed deletion request for bookkeeping. Paid relays or relays that restrict who can post MUST also follow the request regardless of the user's status. +Kind `5` deletions MUST not delete kind `62`s. + Clients SHOULD send this event to the target relays only. ## Global Request to Vanish @@ -56,4 +58,4 @@ To request ALL relays to delete everything, the event MUST include a `relay` tag } ``` -Clients SHOULD broadcast this event to as many relays as possible. \ No newline at end of file +Clients SHOULD broadcast this event to as many relays as possible. From 4b73e751b445c48abb01e85e7c4dd08c0502caff Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 14 Oct 2024 18:18:18 -0400 Subject: [PATCH 14/15] Update 62.md --- 62.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/62.md b/62.md index 3787cf4055..c12a97d5ff 100644 --- a/62.md +++ b/62.md @@ -38,7 +38,7 @@ Relays MAY store the signed deletion request for bookkeeping. Paid relays or relays that restrict who can post MUST also follow the request regardless of the user's status. -Kind `5` deletions MUST not delete kind `62`s. +Publishing a deletion request event (Kind `5`) against a request to vanish has no effect. Clients and relays are not obliged to support "unrequest vanish" functionality. Clients SHOULD send this event to the target relays only. From 553de6638ddbac805ad54f73ca5f18ee64014527 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 14 Oct 2024 18:22:48 -0400 Subject: [PATCH 15/15] adjust DM deletion require matching relay service url --- 62.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/62.md b/62.md index c12a97d5ff..a00ddfc033 100644 --- a/62.md +++ b/62.md @@ -30,13 +30,13 @@ Content MAY include a reason or a legal notice to the relay operator. Relays MUST fully delete any events from the `.pubkey` if their service URL is tagged in the event. -Relays SHOULD delete all [NIP-59](59.md) Gift Wraps that p-tagged the `.pubkey`, deleting all DMs to the pubkey. +Relays SHOULD delete all [NIP-59](59.md) Gift Wraps that p-tagged the `.pubkey` if their service URL is tagged in the event, deleting all DMs to the pubkey. Relays MUST ensure the deleted events cannot be re-broadcasted into the relay. -Relays MAY store the signed deletion request for bookkeeping. +Relays MAY store the signed request to vanish for bookkeeping. -Paid relays or relays that restrict who can post MUST also follow the request regardless of the user's status. +Paid relays or relays that restrict who can post MUST also follow the request to vanish regardless of the user's status. Publishing a deletion request event (Kind `5`) against a request to vanish has no effect. Clients and relays are not obliged to support "unrequest vanish" functionality.