trivial fixes from earlier readings
[torspec/neena.git] / proposals / 177-flag-abstention.txt
blobf63f1ccd172a114a8cc5ba047204657a49d8955b
1 Filename: 177-flag-abstention.txt
2 Title: Abstaining from votes on individual flags
3 Author: Nick Mathewson
4 Created: 14 Feb 2011
5 Status: Open
6 Target: 0.2.4.x
8 Overview:
10    We should have a way for authorities to vote on flags in
11    particular instances, without having to vote on that flag for all
12    servers.
14 Motivation:
16    Suppose that the status of some router becomes controversial, and
17    an authority wants to vote for or against the BadExit status of
18    that router.  Suppose also that the authority is not currently
19    voting on the BadExit flag.  If the authority wants to say that
20    the router is or is not "BadExit", it cannot currently do so
21    without voting yea or nay on the BadExit status of all other
22    routers.
24    Suppose that an authority wants to vote "Valid" or "Invalid" on a
25    large number of routers, but does not have an opinion on some of
26    them.  Currently, it cannot do so: if it votes for the Valid flag
27    anywhere, it votes for it everywhere.
29 Design:
31    We add a new line "extra-flags" in directory votes, to appear
32    after "known-flags".  It lists zero or more flags that an
33    authority has occasional opinions on, but for which the authority
34    will usually abstain.  No flag may appear in both extra-flags and
35    known-flags.
37    In the router-status section for each directory vote, we allow an
38    optional "s2" line to appear after the "s" line.  It contains
39    zero or more flag votes.  A flag vote is of the form of one of
40    "+", "-", or "/" followed by the name of a flag.  "+" denotes a
41    yea vote, and "-" denotes a nay vote, and "/" notes an
42    abstention.  Authorities may omit most abstentions, except as
43    noted below.  No flag may appear in an s2 line unless it appears
44    in the known-flags or extra-flags line.We retain the rule that no
45    flag may appear in an s line unless it appears in the known-flags
46    line.
48    When using an appropriate consensus method to vote, we use these
49    new rules to determine flags:
51    A flag is listed in the consensus if it is in the known-flags
52    section of at least one voter, and in the known-flags or
53    extra-flags section of at least three voters (or half the
54    authorities, whichever set is smaller).
56    A single authority's vote for a given flag on a given router is
57    interpreted as follows:
59       - If the authority votes +Flag or -Flag or /Flag in the s2 line for
60         that router, the vote is "yea" or "nay" or "abstain" respectively.
61       - Otherwise, if the flag is listed on the "s" line for the
62         router, then the vote is "yea".
63       - Otherwise, if the flag is listed in the known-flags line,
64         then the vote is "nay".
65       - Otherwise, the vote is "abstain".
67    A router is assigned a flag in the consensus iff the total "yeas"
68    outnumber the total "nays".
70    As an exception, this proposal does not affect the behavior of
71    the "Named" and "Unnamed" flags; these are still treated as
72    before.  (An authority can already abstain from a single naming
73    decision by not voting Named on any router with a given name.)
75 Examples:
77    Suppose that it becomes important to know which Tor servers are
78    operated by burrowing marsupials.  Some authority operators
79    diligently research this question; others want to vote about
80    individual routers on an ad hoc basis when they learn about a
81    particular router's being e.g. located underground in New South
82    Wales.
84    If an authority usually has no opinions on the RunByWombats flag,
85    it should list it in the "extra-flags" of its votes.  If it
86    occasionally wants to vote that a router is (or is not) run by
87    wombats, it should list "s2 +RunByWombats" or "s2 -RunByWombats"
88    for the routers in question.  Otherwise it can omit the flag from
89    its s and s2 lines entirely.
91    If an authority usually has an opinion on the RunByWombats flag,
92    but wants to abstain in some cases, it should list "RunByWombats"
93    in the "known-flags" part of its votes, and include
94    "RunByWombats" in the s line for every router that it believes is
95    run by wombats. When it wants to vote that a router is not run
96    by wombats, it should list the RunByWombats flag in neither the s
97    nor the s2 line.  When it wants to abstain, it should list "s2
98    /RunByWombats".
100    In both cases, when the new consensus method is used, a router
101    will get listed as "RunByWombats" if there are more authorities
102    that say it is run by wombats than there are authorities saying
103    it is not run by wombats.  (As now, "no" votes win ties.)