format clarifications

-organize and clarify format sections
-other minor edits
This commit is contained in:
landonMutch 2023-03-02 19:30:39 +09:00 committed by GitHub
parent 25ad6d7758
commit 4ad8b364c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

22
69.md
View File

@ -1,16 +1,22 @@
# Poll event
A poll note is a nostr event type (kind `6969`) for conducting paid polls. A poll presents two or more voting options, which participants my vote on by sending regular zap events which include an additional `poll_option` vote tag. Poll results may be blinded, until after users have voted. Polls may specify a closing time, after which results should be unblinded, closed to new votes, and considered final. Polls may also specify a consensus threshold.
A poll note is a nostr event (kind `6969`) for conducting paid polls. A poll presents two or more voting options, which participants my vote on by sending regular zap events which include an additional `poll_option` vote tag. Poll results may be blinded, until after users have voted. Polls may specify a closing time, after which results should be unblinded, closed to new votes, and considered final. Polls may also specify a consensus threshold.
## Purpose
The purpose of poll notes is to conduct quantitative public opinion polls over nostr by requiring voters pay to participate. By tying vote amounts and counts to real satoshi valuations, nostr polls intend to provide superior signal compared with other free polling models. Imposing real monetary costs on participants should also discourage attempts at fraudulent result manipulation, by automated or other means.
The purpose of poll notes is to conduct quantitative public opinion polls over nostr by requiring voters pay to participate. By tying vote amounts and counts to real satoshi valuations, nostr polls intend to provide superior signal compared to other free polling models. Imposing real monetary costs on participants should also discourage attempts at fraudulent result manipulation, by automated or other means.
## Poll format
A poll is a self-contained nostr event which MUST have a primary description string specified in the `content` field, along with a predefined list of voting options. A poll MUST include at least 2 unique voting options, and each option MUST contain a corresponding, unique secondary description string.
A poll MUST specify a primary tally method (`value` or `count`) and SHOULD specify a `closed_at` time. A `closed_at` value of less than or equal to the `created_at` field indicates a poll SHOULD NOT be closed.
Polls MAY also include a `consensus_threshold` integar (0-100), representing a percentage threshold for any single vote option to achieve poll consensus, with '0' indicative of null.
A poll event:
* MUST contain a primary description string, specified in the `content` field
* MUST contain a predefined list of voting options, defined in a `poll_options` tag
* MUST include at least 2 voting options, each with its own unique description string
* MUST specify a primary tally method: either `value` OR `count`
* SHOULD specify a `closed_at` time:
* a `closed_at` value of less than or equal to the `created_at` field indicates a poll SHOULD NOT be closed.
* MAY include a `consensus_threshold` integar (0-100), representing a percentage threshold for any single vote option to achieve poll consensus
* a `consensus_threshold` of '0' indicates no threshold is specified.
```json
{
@ -38,7 +44,11 @@ Polls MAY also include a `consensus_threshold` integar (0-100), representing a p
## Zap vote format
Poll options are voted on by sending zap events (to the original poll event) which include 1 additional `poll_option` tag within their otherwise standard json structure.
`poll_option` tags MUST include exactly 1 option from the list of predefined `polling_options`, referenced by its corresponding integar `n`:
Zap vote events (kind `9734` and `9735`):
* MUST include exactly 1 `poll_option` tag
* MUST reference the chosen vote option by its corresponding integar `n`, from the original poll event's list of predefined `polling_options`
* MUST transmit the exact `poll_option` between between kind `9734` and `9735`
```json
"tags": [