177-flag-abstention.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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: Draft
  6. Overview:
  7. We should have a way for authorities to vote on flags in
  8. particular instances, without having to vote on that flag for all
  9. servers.
  10. Motivation:
  11. Suppose that the status of some router becomes controversial, and
  12. an authority wants to vote for or against the BadExit status of
  13. that router. Suppose also that the authority is not currently
  14. voting on the BadExit flag. If the authority wants to say that
  15. the router is or is not "BadExit", it cannot currently do so
  16. without voting yea or nay on the BadExit status of all other
  17. routers.
  18. Suppose that an authority wants to vote "Valid" or "Invalid" on a
  19. large number of routers, but does not have an opinion on some of
  20. them. Currently, it cannot do so: if it votes for the Valid flag
  21. anywhere, it votes for it everywhere.
  22. Design:
  23. We add a new line "extra-flags" in directory votes, to appear
  24. after "known-flags". It lists zero or more flags that an
  25. authority has occasional opinions on, but for which the authority
  26. will usually abstain. No flag may appear in both extra-flags and
  27. known-flags.
  28. In the router-status section for each directory vote, we allow an
  29. optional "s2" line to appear after the "s" line. It contains
  30. zero or more flag votes. A flag vote is of the form of one of
  31. "+", "-", or "/" followed by the name of a flag. "+" denotes a
  32. yea vote, and "-" denotes a nay vote, and "/" notes an
  33. abstention. Authorities may omit most abstentions, except as
  34. noted below. No flag may appear in an s2 line unless it appears
  35. in the known-flags or extra-flags line.We retain the rule that no
  36. flag may appear in an s line unless it appears in the known-flags
  37. line.
  38. When using an appropriate consensus method to vote, we use these
  39. new rules to determine flags:
  40. A flag is listed in the consensus if it is in the known-flags
  41. section of at least one voter, and in the known-flags or
  42. extra-flags section of at least three voters (or half the
  43. authorities, whichever set is smaller).
  44. A single authority's vote for a given flag on a given router is
  45. interpreted as follows:
  46. - If the authority votes +Flag or -Flag or /Flag in the s2 line for
  47. that router, the vote is "yea" or "nay" or "abstain" respectively.
  48. - Otherwise, if the flag is listed on the "s" line for the
  49. router, then the vote is "yea".
  50. - Otherwise, if the flag is listed in the known-flags line,
  51. then the vote is "nay".
  52. - Otherwise, the vote is "abstain".
  53. A router is assigned a flag in the consensus iff the total "yeas"
  54. outnumber the total "nays".
  55. As an exception, this proposal does not affect the behavior of
  56. the "Named" and "Unnamed" flags; these are still treated as
  57. before. (An authority can already abstain from a single naming
  58. decision by not voting Named on any router with a given name.)
  59. Examples:
  60. Suppose that it becomes important to know which Tor servers are
  61. operated by burrowing marsupials. Some authority operators
  62. diligently research this question; others want to vote about
  63. individual routers on an ad hoc basis when they learn about a
  64. particular router's being e.g. located underground in New South
  65. Wales.
  66. If an authority usually has no opinions on the RunByWombats flag,
  67. it should list it in the "extra-flags" of its votes. If it
  68. occasionally wants to vote that a router is (or is not) run by
  69. wombats, it should list "s2 +RunByWombats" or "s2 -RunByWombats"
  70. for the routers in question. Otherwise it can omit the flag from
  71. its s and s2 lines entirely.
  72. If an authority usually has an opinion on the RunByWombats flag,
  73. but wants to abstain in some cases, it should list "RunByWombats"
  74. in the "known-flags" part of its votes, and include
  75. "RunByWombats" in the s line for every router that it believes is
  76. run by wombats. When it wants to vote that a router is not run
  77. by wombats, it should list the RunByWombats flag in neither the s
  78. nor the s2 line. When it wants to abstain, it should list "s2
  79. /RunByWombats".
  80. In both cases, when the new consensus method is used, a router
  81. will get listed as "RunByWombats" if there are more authorities
  82. that say it is run by wombats than there are authorities saying
  83. it is not run by wombats. (As now, "no" votes win ties.)