Filename: ExtraRelayDescriptorFields.txt
Title: Adding new X- fields to relay descriptor
Author: Virgil Griffith, Nick Mathewson
Created: 2014-06-03
Status: Open


1. Motivation
We wish to allow developers to build new applications atop relays. Towards this
end, we wish to add the ability for users to specify arbitrary new key-value
entries under the "X-" namespace.


2. Proposal
Allow optional key-value lines in the relay's torrc file.  These lines will be
mirrored in the relay's descriptor which is then published in the directory
consensus.


For example:
X-bitcoin 19mP9FKrXqL46Si58pHdhGKow88SUPy1V8
X-gravatar https://s.gravatar.com/avatar/d27fce46c9ac41a41bb52455ae75701d
X-favoritequote Be excellent to each other.  Party on dudes!
X-foo bar


The value field must be printable ASCII (characters 32-126).  The value must
not under any condition contain a newline.  The key may contain lowercase
ASCII letters (a-z), digits, underscore, or dash.  In regex, [-_0-9a-z].

There may need to be a maximum sum length of the X- entries.  This is
left to the developers.  I propose a maximum sum length of 5 kilobytes.

To mitigate the chance of a malformed torrc file, I additionally propose there
be a schema for the relay descriptor, and if the relay descriptor fails to
match the schema it errors to the user to change her torrc file.

-V