2.2 KiB
NIP-81
Relationship Status
draft
optional
This NIP defines two new event kinds (30382
and 30383
) 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-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.
{
"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.
{
"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 30383
uses a similar structure but with a hashed d
tag using NIP-44's hkdf
function.
{
"kind": 30383,
"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
}