Compare commits

...

33 Commits

Author SHA1 Message Date
Vitor Pamplona
8e3ec643bd
Merge 8dafaf8714 into d857cfb1b8 2024-12-06 17:32:51 -08:00
Vitor Pamplona
8dafaf8714 moves event set names to the right position on readme 2024-10-11 08:36:13 -04:00
Vitor Pamplona
8cb2ebc46b Merge remote-tracking branch 'upstream/master' into relationship-status
# Conflicts:
#	README.md
2024-10-11 08:35:30 -04:00
Vitor Pamplona
3ba8526756 Fixing kind numbers 2024-06-20 14:35:45 -04:00
Vitor Pamplona
4e0b5fa038 Aligning the Private Relationship status Kind with the other PRs 2024-06-20 14:34:02 -04:00
Vitor Pamplona
a8c573f4ea adds public relationship status to the readme 2024-05-10 20:22:30 -04:00
Vitor Pamplona
bae459a771 Updates relationship status to use event sets. 2024-05-10 20:01:11 -04:00
Vitor Pamplona
89e812488d Merge remote-tracking branch 'upstream/master' into relationship-status
# Conflicts:
#	README.md
2024-05-10 19:50:00 -04:00
Vitor Pamplona
a5ff486989
Update 81.md
Co-authored-by: arthurfranca <arthur.a.franca@gmail.com>
2024-05-10 10:39:33 -04:00
Vitor Pamplona
08d8b1e5ac
Update 81.md
Co-authored-by: arthurfranca <arthur.a.franca@gmail.com>
2024-05-10 10:39:28 -04:00
Vitor Pamplona
a3a678464e
Update 81.md
Co-authored-by: arthurfranca <arthur.a.franca@gmail.com>
2024-05-10 10:39:22 -04:00
Vitor Pamplona
4482a41d90 Creating two event kinds. 2024-03-19 16:16:00 -04:00
Vitor Pamplona
61898c0cd0 Simplifying statuses 2024-03-19 16:01:55 -04:00
Vitor Pamplona
a401682a58 renames nicknames to petnames 2024-02-14 15:01:55 -05:00
Vitor Pamplona
3ff65d1d64 Adds edge cases 2024-02-12 12:17:06 -05:00
Vitor Pamplona
1e7da2bb70 Moves to 10008 kind for name maps 2024-02-12 11:57:50 -05:00
Vitor Pamplona
fbb5abac84 Merge remote-tracking branch 'upstream/master' into relationship-status 2024-02-12 11:53:26 -05:00
Vitor Pamplona
873569c208 formatting 2024-02-12 11:51:45 -05:00
Vitor Pamplona
df362d1461 formatting 2024-02-12 11:49:47 -05:00
Vitor Pamplona
1bcbd31090 wording 2024-02-12 11:49:02 -05:00
Vitor Pamplona
ee6d4e673e enhancing the example with private ntags 2024-02-12 11:48:35 -05:00
Vitor Pamplona
6868e029f9 formatting 2024-02-12 11:46:33 -05:00
Vitor Pamplona
c31a5043a3 Updating NIP-81 to add private and public statuses 2024-02-12 11:42:10 -05:00
Vitor Pamplona
0f4edef69f Switch to random UUID for better security. 2024-02-07 18:33:15 -05:00
Vitor Pamplona
225be8a2a1 correcting the example 2024-02-07 18:00:19 -05:00
Vitor Pamplona
73a2aab8dd Optional n tag 2024-02-07 17:59:27 -05:00
Vitor Pamplona
bd1755f44c Improves formatting 2024-02-07 17:57:53 -05:00
Vitor Pamplona
dc4af5d133 Refines proposal to make relationships private. 2024-02-07 17:54:20 -05:00
Vitor Pamplona
fe00ddd14d
Merge pull request #1 from sudocarlos/patch-1
correct typo
2023-09-06 13:38:32 -04:00
sudocarlos
5cc0c937dc
correct typo 2023-09-04 11:50:32 -04:00
Vitor Pamplona
0006b13d72 adds privately 2023-09-04 11:42:33 -04:00
Vitor Pamplona
b7aa64dab4 Quick adjustments 2023-09-04 11:41:59 -04:00
Vitor Pamplona
a3292f4ae7 First Draft 2023-09-04 11:35:30 -04:00
2 changed files with 79 additions and 0 deletions

75
81.md Normal file
View File

@ -0,0 +1,75 @@
NIP-81
======
Relationship Status
-------------------
`draft` `optional`
This NIP defines two new event kinds (`30382` and `31382`) to document the relationship between two keys.
Both kinds offer public and private tags to describe that relationship. Private tags are JSON Stringified, [NIP-44](44.md)-encrypted to the signer's keys and placed inside the `.content` of the event.
### Public Relationship Status
Event kind `30382` is used when the relationship itself is public. The `d` tag contains the target public key in hex.
```js
{
"kind": 30382,
"tags": [
["d", "e88a691e98d9987c964521dff60025f60700378a4879180dcbbb4a5027850411"],
["n", "follow"],
["n", "bitcoiner"],
["n", "6064460175057025"]
],
"content": nip44Encrypt(JSON.stringify([
["petname", "NVK (Coldcard)"],
["summary", "Owes me a beer"]
])),
// ...other fields
}
```
`petname` SHOULD be rendered instead of the person's display name in all interfaces when the signer of this event is logged in.
### Relationship Categories
Optional `n` tags `["n", "<identifier>"]` add the target key to event sets. This allows clients to query by `n` and download all members of a set.
Set `identifier` can be human readable and public or not.
For private cases, a new event kind named "Event Set Names" (`kind:10008`) uses `map` tags to store the set name. Clients SHOULD display the `name` instead of the `identifier` if the `identifier` is present in this event.
```js
{
"kind": 10008,
"content": nip44Encrypt(JSON.stringify([
["map", "<identifier>", "<name>"],
["map", "bitcoiner", "bitcoiner"],
["map", "6064460175057025", "debtor"]
])),
// ...other fields
}
```
### Private Relationship Status
For relationships that must remain private (e.g private follows, client lists, etc), the event kind `31382` uses a similar structure but with a hashed `d` tag using [NIP-44](44.md)'s `hkdf` function.
```js
{
"kind": 31382,
"tags": [
["d", sha256(hkdf(private_key, salt: 'nip81') || "<pubkey>")],
["n", "6064460175057025"],
],
"content": nip44Encrypt(JSON.stringify([
["p", "<pubkey>", "<relay url>"],
["n", "client-list"],
["petname", "<My buddy>"],
["summary", "<Summary of the relationship>"],
])),
// ...other fields
}
```

View File

@ -86,6 +86,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
- [NIP-73: External Content IDs](73.md)
- [NIP-75: Zap Goals](75.md)
- [NIP-78: Application-specific data](78.md)
- [NIP-81: Relationship Status](81.md)
- [NIP-84: Highlights](84.md)
- [NIP-86: Relay Management API](86.md)
- [NIP-89: Recommended Application Handlers](89.md)
@ -168,6 +169,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `10005` | Public chats list | [51](51.md) |
| `10006` | Blocked relays list | [51](51.md) |
| `10007` | Search relays list | [51](51.md) |
| `10008` | Event Set Names | [81](81.md) |
| `10009` | User groups | [51](51.md), [29](29.md) |
| `10015` | Interests list | [51](51.md) |
| `10019` | Nutzap Mint Recommendation | [61](61.md) |
@ -206,6 +208,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `30078` | Application-specific Data | [78](78.md) |
| `30311` | Live Event | [53](53.md) |
| `30315` | User Statuses | [38](38.md) |
| `30382` | Public Relationship Status | [81](81.md) |
| `30388` | Slide Set | [Corny Chat][cornychat-slideset] |
| `30402` | Classified Listing | [99](99.md) |
| `30403` | Draft Classified Listing | [99](99.md) |
@ -213,6 +216,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
| `30618` | Repository state announcements | [34](34.md) |
| `30818` | Wiki article | [54](54.md) |
| `30819` | Redirects | [54](54.md) |
| `31382` | Private Relationship Status | [81](81.md) |
| `31388` | Link Set | [Corny Chat][cornychat-linkset] |
| `31890` | Feed | [NUD: Custom Feeds][NUD: Custom Feeds] |
| `31922` | Date-Based Calendar Event | [52](52.md) |