# 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.