I plan to move clients to using 1 guard rather than 3. But I'd like to do that in a way that we can move them over as a group, once enough people have upgraded. I think that calls for a consensus param.
I shall call it NumEntryGuards.
And the controversial point is that I want to put it into 0.2.4.x as a security fix.
The timeline will be for some folks to upgrade, then we stick it in the consensus as NumEntryGuards=1, then when nothing explodes, we change the default-if-it's-not-in-the-consensus to 1, and eventually we don't need to set the consensus param anymore.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items
0
Link issues together to show that they're related.
Learn more.
Ok, my branch now has a second commit on it, that adds a NumDirectoryGuards consensus param. I chose the magic value 0 to mean "ignore this consensus param and do what you used to do", and that's the default.
What will this do during bootstrapping? I guess we don't pick guards before we have a consensus, so we don't need to worry about clients using the no-consensus default.
Assuming I'm right there, this seems okay to me for 025. I am kinda nervous about 024, but I can defer to your judgment there.
I think nickm is right about not picking guards before having a consensus, but I thought we were trying to get away from 3 guards? I'd feel slightly better if the default value passed into networkstatus_get_param() weren't the case we were trying to avoid, but I believe this is okay.
I thought we were trying to get away from 3 guards? I'd feel slightly better if the default value passed into networkstatus_get_param() weren't the case we were trying to avoid, but I believe this is okay.
My hope here is to exactly duplicate the current situation, just making it configurable via the consensus.
Then later, once enough people have upgraded that there won't be some weird partitioning thing going on for users who just upgraded, we can flip the switch in the consensus and move people to 1 guard.
(And if things go horribly in some unforseen way, we can move it back to 3 and maybe they'll go unhorribly again.)
(And if we flip the switch to 1 guard and it works smoothly, we can change the default from 3 to 1 in a future code update, and eventually we won't need the consensus param anymore.)