Implement proposal 321: "Better performance and usability for the MyFamily option (v2)"
Proposal 321 explains how to migrate from the status quo, in which an n-member family consumes O(n^2) bytes in advertising itself, to an improved situation in which an n-member family requires only O(n) bytes to advertise itself. This is a prerequisite for Walking Onions.
To implement the proposal, we should follow approximately these steps:
- Double-check with the relay operator community about usability issues.
- Ask the network-health community about possible issues I haven't thought of.
- Implement code to generate, read, and maintain family keys and family certificates.
- Relays should publish family certificates in router descriptors
- Authorities should derive family-keys entries in microdescriptors from family certificates. This will require a new consensus method.
Relays should, based on a
derive-family-lineconsensus parameter, infer entries for a family line based on other observed router descriptors with the same family keys.
- Clients should use family-keys entries when deciding if two relays are in the same family.