mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-09-28 16:00:55 +00:00
Add Trust Score
This commit is contained in:
parent
1728f93d17
commit
b437ff2d5e
85
64.md
Normal file
85
64.md
Normal file
@ -0,0 +1,85 @@
|
||||
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"](https://github.com/arthurfranca/nips/blob/bunch-of-events/61.md#tagging-into-event-sets) 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:
|
||||
|
||||
```js
|
||||
[
|
||||
"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:
|
||||
|
||||
```js
|
||||
{
|
||||
"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](54.md) |
|
Loading…
Reference in New Issue
Block a user