diff options
| author | Alex Gleason <alex@alexgleason.me> | 2023-12-07 10:01:57 -0600 |
|---|---|---|
| committer | Alex Gleason <alex@alexgleason.me> | 2023-12-07 10:01:57 -0600 |
| commit | 0146892501d63042d13724bae7c887bfa985e251 (patch) | |
| tree | 75c752efd5d9c84a55ab61cc8eadecff847c0f0c /02.md | |
| parent | 2bd4bf784112aabff9d0fc2dd90fed9107aa5cde (diff) | |
NIP-02: Rename Contact List to Follow List
Diffstat (limited to '02.md')
| -rw-r--r-- | 02.md | 20 |
1 files changed, 10 insertions, 10 deletions
| @@ -1,12 +1,12 @@ | |||
| 1 | NIP-02 | 1 | NIP-02 |
| 2 | ====== | 2 | ====== |
| 3 | 3 | ||
| 4 | Contact List and Petnames | 4 | Follow List |
| 5 | ------------------------- | 5 | ----------- |
| 6 | 6 | ||
| 7 | `final` `optional` | 7 | `final` `optional` |
| 8 | 8 | ||
| 9 | A special event with kind `3`, meaning "contact list" is defined as having a list of `p` tags, one for each of the followed/known profiles one is following. | 9 | A special event with kind `3`, meaning "follow list" is defined as having a list of `p` tags, one for each of the followed/known profiles one is following. |
| 10 | 10 | ||
| 11 | Each tag entry should contain the key for the profile, a relay URL where events from that key can be found (can be set to an empty string if not needed), and a local name (or "petname") for that profile (can also be set to an empty string or not provided), i.e., `["p", <32-bytes hex key>, <main relay URL>, <petname>]`. The `content` can be anything and should be ignored. | 11 | Each tag entry should contain the key for the profile, a relay URL where events from that key can be found (can be set to an empty string if not needed), and a local name (or "petname") for that profile (can also be set to an empty string or not provided), i.e., `["p", <32-bytes hex key>, <main relay URL>, <petname>]`. The `content` can be anything and should be ignored. |
| 12 | 12 | ||
| @@ -25,27 +25,27 @@ For example: | |||
| 25 | } | 25 | } |
| 26 | ``` | 26 | ``` |
| 27 | 27 | ||
| 28 | Every new contact list that gets published overwrites the past ones, so it should contain all entries. Relays and clients SHOULD delete past contact lists as soon as they receive a new one. | 28 | Every new following list that gets published overwrites the past ones, so it should contain all entries. Relays and clients SHOULD delete past following lists as soon as they receive a new one. |
| 29 | 29 | ||
| 30 | ## Uses | 30 | ## Uses |
| 31 | 31 | ||
| 32 | ### Contact list backup | 32 | ### Follow list backup |
| 33 | 33 | ||
| 34 | If one believes a relay will store their events for sufficient time, they can use this kind-3 event to backup their following list and recover on a different device. | 34 | If one believes a relay will store their events for sufficient time, they can use this kind-3 event to backup their following list and recover on a different device. |
| 35 | 35 | ||
| 36 | ### Profile discovery and context augmentation | 36 | ### Profile discovery and context augmentation |
| 37 | 37 | ||
| 38 | A client may rely on the kind-3 event to display a list of followed people by profiles one is browsing; make lists of suggestions on who to follow based on the contact lists of other people one might be following or browsing; or show the data in other contexts. | 38 | A client may rely on the kind-3 event to display a list of followed people by profiles one is browsing; make lists of suggestions on who to follow based on the follow lists of other people one might be following or browsing; or show the data in other contexts. |
| 39 | 39 | ||
| 40 | ### Relay sharing | 40 | ### Relay sharing |
| 41 | 41 | ||
| 42 | A client may publish a full list of contacts with good relays for each of their contacts so other clients may use these to update their internal relay lists if needed, increasing censorship-resistance. | 42 | A client may publish a follow list with good relays for each of their follows so other clients may use these to update their internal relay lists if needed, increasing censorship-resistance. |
| 43 | 43 | ||
| 44 | ### Petname scheme | 44 | ### Petname scheme |
| 45 | 45 | ||
| 46 | The data from these contact lists can be used by clients to construct local ["petname"](http://www.skyhunter.com/marcs/petnames/IntroPetNames.html) tables derived from other people's contact lists. This alleviates the need for global human-readable names. For example: | 46 | The data from these follow lists can be used by clients to construct local ["petname"](http://www.skyhunter.com/marcs/petnames/IntroPetNames.html) tables derived from other people's follow lists. This alleviates the need for global human-readable names. For example: |
| 47 | 47 | ||
| 48 | A user has an internal contact list that says | 48 | A user has an internal follow list that says |
| 49 | 49 | ||
| 50 | ```json | 50 | ```json |
| 51 | [ | 51 | [ |
| @@ -53,7 +53,7 @@ A user has an internal contact list that says | |||
| 53 | ] | 53 | ] |
| 54 | ``` | 54 | ``` |
| 55 | 55 | ||
| 56 | And receives two contact lists, one from `21df6d143fb96c2ec9d63726bf9edc71` that says | 56 | And receives two follow lists, one from `21df6d143fb96c2ec9d63726bf9edc71` that says |
| 57 | 57 | ||
| 58 | ```json | 58 | ```json |
| 59 | [ | 59 | [ |