nips/64.md
2024-06-20 13:25:01 -03:00

3.1 KiB

NIP-64

Trust Score

A trust score is a public way to individually assign a quantifiable level of trust on specifc topics to a nostr identity. Ranks can be used to discover trusted people on a common topic.

Event Structure

The kind:30382 is a NIP-61 "Set Item Reference" event used to assign public information about a pubkey (set to the d tag).

This NIP makes use of one or more trust scores added to such events as T tags using the following structure:

  [
    "T",
    "<integer_score_ranging_from_-3_to_3><colon_separator><topic_name>",
    "<+_or_?_or_-><space_separator><review>" // optional and may appear many times
  ]

Topic names should be preferably in English, lower case and their words are dash separated. Topic names are separated from the score by a colon (:). Some topic names include a context prefix, also separated by a colon (:).

After the tag value, there may be any number of reviews, each one with a prefix followed by a space separator and the actual review text. The prefix denote a postive review (+), a negative review (-) or a neutral one (?).

The ? prefix is usually assigned for free form user generated reviews. On the other hand, + and - are usually related to clickable fixed options made available by a client.

Example:

{
  "kind": 30382,
  "tags": [
    ["d", "<pubkey>"],
    ["T", "3:wiki:role-playing-video-game"], // has written a based wiki article about RPG
    ["T", "2:car:driver", "+ Skilled", "+ Polite", "- Talks too much", "? Likes to talk about movies."],
    ["T", "3:buyer", "? No problems when selling to this person"],
    ["T", "-2:seller", "? Had a bad experience when buying from this person."],
    ["T", "0:inn-host"], // This person hosted me but I assigned no trust score yet
    ["T", "3:inn-guest"] // I hosted this person and had no problem
  ],
  // ...other fields
}

If a client doesn't recognize a topic name, it should leave the corresponding T tag untouched when editing other entry.

Trust by Score

The below table is the default way of interpreting trust score numbers but specific NIPs/NUDs using them may interpret them differently.

trusted a lot somewhat trusted a bit trusted neutral a bit untrusted somewhat untrusted untrusted a lot
3 2 1 0 -1 -2 -3

Filtering

The reason why the rating score (integer value) has few possible values and is placed together with the topic name is for letting clients filter on relays by both data to easily fetch good or bad users on specifc topcs.

Example filters:

  • Good car drivers: { "kinds": [30382], "#T": ["3:car:driver", "2:car:driver", "1:car:driver"] }
  • Best merchants: { "kinds": [30382], "#T": ["3:seller"] }

Topic List

For interoperability, topic names should be listed here:

Name What it ranks NIPs/NUDs
buyer goods/services buyer
car:driver car driver
inn:host (inn, hotel, hostel, etc) host
inn:guest (inn, hotel, hostel, etc) guest
seller goods/services seller
wiki:<article-name> article author NIP-54