recommended/required semantics are maybe wrong with respect to arti clients and HS
With Arti, you can build a client without onion service support, or without onion client support.
But once arti#1849 (closed) is done, all these clients will get warnings because of these members of recommended-client-protocols
: HSDir=2 HSIntro=4 HSRend=2
.
Open questions to answer:
What are the semantics of this recommendation?
As stated, they seem to mean "If you are going to be a client on the Tor network, you should support hsdir=2, hsintro=4, and hsrend=2". Does this mean that we should warn when built without onion-service support?
Or maybe they mean, "If you are going to connect to onion services on Tor, you should support hsdir=2, hsintro=4, and hsrend=2"?
Or maybe they mean, "If you are going to offer onion services on the network, you should support hsdir=2, hsintro=4, and hsrend=2"?
What protocols does a onion-service-client-only client have?
Suppose we have a client that enabled the feature onion-service-client, but not onion-service-service.
Does this client implement e.g. HSDir=2
or not?
Recommendations
I think I'd like to make the following changes:
- On an interim basis, have arti not warn about the HS* protocols that it would have if onion services were enabled.
- Add a new
{recommended,required}-hsc-protocols
for clients connecting to onion services. - Add a new
{recommended,required}-hsc-protocols
to the consensus, for onion services themselves. - Remove "hsdir=2, hsintro=4, hsrend=2" from recommended-client-protocols.
What do you think?