nips/118.md

37 lines
1.9 KiB
Markdown
Raw Normal View History

2024-06-25 04:38:23 -04:00
# NIP-118
## Polls
`draft` `optional`
The purpose of this nip is to create a mechanism for polling on nostr.
The NIP aims to have the following properties.
1. Provide a method for gauging eligibility. Only eligible votes should be counted.
2. Provide a method for maintaining anonymity. Participants should be able to not reveal their identities to everyone, yet their votes should be counted.
3. Provide a mechanism for verifiability. Participants should be able to verify that their votes have been counted, under an eligibility criteria.
## Events
### Poll Content
The poll event is defined as a `kind:1068` event. This event carries over the `name` , `description` and `field` tags as defined in [nip-101](https://github.com/nostr-protocol/nips/pull/1190/files).
This event has no other tags and completely defines the poll content, which is uneditable.
### Responses
The response event is the same as the one on [nip-101](https://github.com/nostr-protocol/nips/pull/1190/files)
### Eligibilty
Eligibility to a vote is determined by another `kind:30180` event that can be created by anyone and is essentially a reference to a list of pubkeys, the author of the eligibility event is interested in. The eligibility event MUST contain an "e" tag to the poll event, and
"list" tags which references either a `kind:3` (contact list) or a `kind:30000`(follow sets) containing a list of "p" tags.
### Counting Results.
Results can be counted for different eligibility events, by querying for `kind:1069` events only authored by the pubkeys mentioned in the eligibility event.
### Anonymous Voting
For people that wish to maintain anonymity, while still having their votes counted can do so by signing the response event with a random private key and sending over the corresponding pubkey to the author of a `kind:30180` eligibility event. The author of the eligibility event may demand "proofs of eligibility" before adding the pubkey in any of the lists.