commit 7647f6d4de98acae6b71782648b0a646f11b146a
Author: George Kadianakis <desnacked(a)riseup.net>
Date: Sun Aug 31 16:27:35 2014 +0300
Specify how Guard Fraction voting should occur.
---
proposals/236-single-guard-node.txt | 26 +++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/proposals/236-single-guard-node.txt b/proposals/236-single-guard-node.txt
index d7c03d3..32327db 100644
--- a/proposals/236-single-guard-node.txt
+++ b/proposals/236-single-guard-node.txt
@@ -110,12 +110,14 @@ Status: Open
To do so, everytime an authority needs to vote for a guard, it
reads a set of consensus documents spanning the past NNN months,
where NNN is the number of months in the guard rotation period (10
- months if this proposal is adopted in full) and calculates the
- visibility of the guard; that is, in how many consensuses it has
- had the guard flag.
+ months if this proposal is adopted in full) and calculates in how
+ many consensuses it has had the guard flag for.
- The authorities include the age of each guard by appending
- '[SP "GV=" INT]' in the guard's "w" line.
+ Then, in their votes, the authorities include the Guard Fraction of
+ each guard by appending '[SP "GuardFraction=" INT]' in the guard's
+ "w" line. Its value is an integer between 0 and 100, with 0 meaning
+ that it's a brand new guard, and 100 that it has been present in
+ all the inspected consensuses.
A guard N that has been visible for V out of NNN*30*24 consensuses
has had the opportunity to be chosen as a guard by approximately
@@ -142,6 +144,20 @@ Status: Open
D' = D + F*B, if N has the exit flag
E' = E + (1-F)*B, if N has the exit flag
+1.3.1. Guard Fraction voting
+
+ To pass that information to clients, we introduce consensus method
+ 19, where if 3 or more authorities provided GuardFraction values in
+ their votes, the authorities produce a consensus containing a
+ GuardFraction keyword equal to the low-median of the GuardFraction
+ votes.
+
+ The GuardFraction keyword is appended in the 'w' line of each router
+ in the consensus, after the optional 'Unmeasured' keyword. Example:
+ w Bandwidth=20 Unmeasured=1 GuardFraction=66
+ or
+ w Bandwidth=53600 GuardFraction=99
+
1.4. Raise the bandwidth threshold for being a guard
From dir-spec.txt: