Skip to content

Prefer decoupled lists for each directory authority component/capability

In C-tor, directory authorities are listed in src/app/config/auth_dirs.inc, with entries containing identities and general contact points (OR port and dirport) for each authority. This single list contains all of the details needed for any interactions with the directory authorities.

Arti currently has a list of directory authorities in crates/tor-dirmgr/src/authority.rs, but only contains their RSA authority identities so that clients can verify the consensus documents that it downloads. As clients don't need to connect to directory authorities, Arti does not currently contain any contact info for these authorities. We will need to add directory authority contact information to Arti as we add relay support, as relays will need to upload server descriptors and download directory documents.

Proposal 330 describes how future directory authorities can have different contact points for different components/capabilities (receiving server descriptors, receiving votes, etc).

Rather than having a single list of directory authorities with general contact points like in C-tor, it may be better for Arti to have decoupled lists for each component. For example a list of directory authority identities for verifying consensus documents, a list of contact points for uploading server descriptors, a list of contact points for downloading documents, etc.

This would allow more flexibility and better decoupling of directory authority features. For example as far as a client or relay is concerned, the location that they download directory documents from is completely unrelated to where directory authorities publish their consensus votes. There's no need for these independent things to be in a single list.

While this fits naturally with proposal 330 (or some variation of it), I think this idea of "decoupled lists for each capability" can be done independently of proposal 330, even if it means duplicating some directory authority information across the lists.

cc @nickm

Edited by Nick Mathewson