upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--88.md92
-rw-r--r--README.md3
2 files changed, 0 insertions, 95 deletions
diff --git a/88.md b/88.md
deleted file mode 100644
index 1e71ffa..0000000
--- a/88.md
+++ /dev/null
@@ -1,92 +0,0 @@
1# NIP-88
2
3## Polls
4
5`draft` `optional`
6
7This NIP defines the event scheme that describe Polls on nostr.
8
9The NIP makes the following tradeoffs.
10
111. All votes are public.
122. All votes are editable (latest response by timestamp considered last vote)
13
14## Events
15
16### Poll Event
17
18The poll event is defined as a `kind:1068` event.
19
20- **content** key holds the label for the poll.
21
22Major tags in the poll event are:
23
24
25- **option**: The option tags contain an OptionId(any alphanumeric) field, followed by an option label field.
26- **relay**: One or multiple tags that the poll is expecting respondents to respond on.
27- **polltype**: can be "singlechoice", "multiplechoice", or "rankedchoice". Polls that do not have a polltype should be considered a "singlechoice" poll.
28
29
30Example Event
31
32```json
33{
34 "content": "",
35 "created_at": 1719888496,
36 "id": "9d1b6b9562e66f2ecf35eb0a3c2decc736c47fddb13d6fb8f87185a153ea3634",
37 "kind": 1068,
38 "pubkey": "dee45a23c4f1d93f3a2043650c5081e4ac14a778e0acbef03de3768e4f81ac7b",
39 "sig": "7fa93bf3c430eaef784b0dacc217d3cd5eff1c520e7ef5d961381bc0f014dde6286618048d924808e54d1be03f2f2c2f0f8b5c9c2082a4480caf45a565ca9797",
40 "tags": [
41 ["label", "Pineapple on Pizza"],
42 ["option", "qj518h583", "Yay"],
43 ["option", "gga6cdnqj", "Nay"],
44 ["relay","<relay url1>"],
45 ["relay", "<relay url2>"],
46 ["polltype", "singlechoice"]
47 ]
48}
49```
50
51### Responses
52
53The response event is a `kind:30068` event. It contains a d tag with the poll event it is referencing, followed by one or more response tags.
54
55- **response** : The tag contains "response" as it's first positional argument followed by the option Id selected.
56
57Example Response Event
58
59```json
60{
61 "content": "",
62 "created_at": 1720097117,
63 "id": "60a005e32e9596c3f544a841a9bc4e46d3020ca3650d6a739c95c1568e33f6d8",
64 "kind": 30068,
65 "pubkey": "1bc70a0148b3f316da33fe7e89f23e3e71ac4ff998027ec712b905cd24f6a411",
66 "sig": "30071a633c65db8f3a075c7a8de757fbd8ce65e3607f4ba287fe6d7fbf839a380f94ff4e826fbba593f6faaa13683b7ea9114ade140720ecf4927010ebf3e44f",
67 "tags": [
68 ["d", "1fc80cf813f1af33d5a435862b7ef7fb96b47e68a48f1abcadf8081f5a545550"],
69 ["response", "gga6cdnqj"],
70 ["response", "m3agjsdq1"]
71 ]
72}
73```
74
75### Poll Types
76
77Poll Types can be configured in the settings object of the poll, the setting dictates how multiple response tags are handled in the `kind:30068` event.
78
79- **PollType: singlechoice**: The first response tag is to be considered the actual response.
80- **PollType: multiplechoice**: The first response tag pointing to each id is considered the actual response, without considering the order of the response tags.
81- **PollType: rankedchoice**: The first response tag pointing to each id is the considered the actual response, while also taking into account the order of the response tags.
82
83### Counting Results
84
85Results can be queried by fetching `kind:30068` events from the relays specified in the poll.
86The results displayed should only be 1 vote event per pubkey.
87In case of multiple events for a pubkey, the event with the largest timestamp should be considered.
88
89### Curation
90
91The clients may configure fetching results by specific people. This can be achieved by creating `kind:30000` follow sets, and fetching results only from the follow set.
92Clients can also employ other curation algorithms, like Proof Of Work and Web of Trust scores for result curations.
diff --git a/README.md b/README.md
index 5222e28..b22f1a3 100644
--- a/README.md
+++ b/README.md
@@ -82,7 +82,6 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
82- [NIP-75: Zap Goals](75.md) 82- [NIP-75: Zap Goals](75.md)
83- [NIP-78: Application-specific data](78.md) 83- [NIP-78: Application-specific data](78.md)
84- [NIP-84: Highlights](84.md) 84- [NIP-84: Highlights](84.md)
85- [NIP-88: Polls](88.md)
86- [NIP-89: Recommended Application Handlers](89.md) 85- [NIP-89: Recommended Application Handlers](89.md)
87- [NIP-90: Data Vending Machines](90.md) 86- [NIP-90: Data Vending Machines](90.md)
88- [NIP-92: Media Attachments](92.md) 87- [NIP-92: Media Attachments](92.md)
@@ -119,13 +118,11 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
119| `44` | Channel Mute User | [28](28.md) | 118| `44` | Channel Mute User | [28](28.md) |
120| `64` | Chess (PGN) | [64](64.md) | 119| `64` | Chess (PGN) | [64](64.md) |
121| `818` | Merge Requests | [54](54.md) | 120| `818` | Merge Requests | [54](54.md) |
122| `1018` | Poll Response | [88](88.md) |
123| `1021` | Bid | [15](15.md) | 121| `1021` | Bid | [15](15.md) |
124| `1022` | Bid confirmation | [15](15.md) | 122| `1022` | Bid confirmation | [15](15.md) |
125| `1040` | OpenTimestamps | [03](03.md) | 123| `1040` | OpenTimestamps | [03](03.md) |
126| `1059` | Gift Wrap | [59](59.md) | 124| `1059` | Gift Wrap | [59](59.md) |
127| `1063` | File Metadata | [94](94.md) | 125| `1063` | File Metadata | [94](94.md) |
128| `1068` | Poll | [88](88.md) |
129| `1311` | Live Chat Message | [53](53.md) | 126| `1311` | Live Chat Message | [53](53.md) |
130| `1617` | Patches | [34](34.md) | 127| `1617` | Patches | [34](34.md) |
131| `1621` | Issues | [34](34.md) | 128| `1621` | Issues | [34](34.md) |