<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-davids-forsalereg-15" submissionType="independent" category="info" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true" tocDepth="3">

<front>
<title abbrev="forsalereg">The "_for-sale" Underscored and Globally Scoped DNS Node Name</title><seriesInfo value="draft-davids-forsalereg-15" stream="independent" status="informational" name="Internet-Draft"></seriesInfo>
<author initials="M." surname="Davids" fullname="Marco Davids"><organization abbrev="SIDN Labs">SIDN Labs</organization><address><postal><street>Meander 501</street>
<city>Arnhem</city>
<code>6825 MD</code>
<country>Netherlands</country>
</postal><phone>+31 26 352 5500</phone>
<email>marco.davids@sidn.nl</email>
</address></author><date/>
<area>Internet</area>
<workgroup>Independent Submission Editor (ISE)</workgroup>

<abstract>
<t>This document defines an operational convention that uses the reserved
underscored DNS leaf node name &quot;_for-sale&quot; to indicate that the
parent domain name is available for purchase. The convention can be
deployed without disrupting existing operations, and it may be
applied even when the domain name is still actively in use.</t>
<t>This document is not an IETF consensus document: it is published for informational purposes.</t>
</abstract>

<note removeInRFC="true"><name>About This Document</name>
<t>This note is to be removed before publishing as an RFC.</t>
<t>This document contains a &quot;Note to the RFC Editor&quot; requesting removal
of <xref target="implementation"></xref> prior to publication. Please also review the Status of
This Memo section and other relevant parts before publication,
particularly <xref target="ianaconsid"></xref>.</t>
</note>

</front>

<middle>

<section anchor="introsect"><name>Introduction</name>
<t>Well-established services <xref target="RFC3912"></xref><xref target="RFC9083"></xref> exist to determine whether a domain name is registered. However, the fact that a domain name exists does not necessarily mean it
is unavailable; it may still be for sale.</t>
<t>Some registrars and other parties offer brokerage services between domain name holders and interested buyers.
Such services are of limited value when the domain name is not available for purchase, but they may be
beneficial for domain names that are clearly being offered for sale.</t>
<t>This specification defines a lightweight method to ascertain whether a domain name, although registered, is available for purchase. It enables a domain name holder to add a reserved underscored
leaf node name <xref target="RFC8552"></xref> in the zone, indicating that the domain name is for sale.</t>
<t>The TXT RR type <xref target="RFC1035"></xref> created for this purpose <bcp14>MUST</bcp14> follow the formal definition of
<xref target="conventions"></xref>. Its content <bcp14>MAY</bcp14> contain a pointer, such as a Uniform Resource Identifier (URI)
<xref target="RFC3986"></xref>, or another string, allowing interested parties to obtain information or
contact the domain name holder for further negotiations.</t>
<t>With due caution, such information can also be incorporated into automated availability services. When checking a domain name for availability, the service may indicate whether it is for sale and provide a pointer to the seller's information.</t>
<t>Note: In this document, the term &quot;for sale&quot; is used in a broad sense and
<bcp14>MAY</bcp14> also refer to cases where the domain name is available for lease,
or where the contractual right to use the domain name is offered to another party.</t>

<section anchor="terminology"><name>Terminology</name>
<t>The key words &quot;<bcp14>MUST</bcp14>&quot;, &quot;<bcp14>MUST NOT</bcp14>&quot;, &quot;<bcp14>REQUIRED</bcp14>&quot;, &quot;<bcp14>SHALL</bcp14>&quot;, &quot;<bcp14>SHALL NOT</bcp14>&quot;,
&quot;<bcp14>SHOULD</bcp14>&quot;, &quot;<bcp14>SHOULD NOT</bcp14>&quot;, &quot;<bcp14>RECOMMENDED</bcp14>&quot;, &quot;<bcp14>NOT RECOMMENDED</bcp14>&quot;, &quot;<bcp14>MAY</bcp14>&quot;, and
&quot;<bcp14>OPTIONAL</bcp14>&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"></xref> <xref target="RFC8174"></xref>
when, and only when, they appear in all capitals, as shown here.</t>
</section>
</section>

<section anchor="rationale"><name>Rationale</name>
<t>There are undoubtedly more ways to address this problem space. The reasons for the approach
defined in this document are primarily accessibility and simplicity. The indicator can be
easily turned on and off at will and, moreover, it is immediately deployable and does not
require significant changes in existing services, allowing for a smooth introduction of the concept.</t>
<t>The method described in this memo does not alter existing IETF standards.</t>
<t>Furthermore, the chosen approach aligns with ethical considerations by promoting a more equitable domain aftermarket and minimizing potential for unintended commercial entanglements by registries, as detailed in <xref target="ethicalconsids"></xref>.</t>
</section>

<section anchor="conventions"><name>Conventions</name>

<section anchor="abnf"><name>General Record Format</name>
<t>Each &quot;_for-sale&quot; TXT record <bcp14>MUST</bcp14> begin with a version tag, optionally followed by a string containing content that follows a simple &quot;tag=value&quot; syntax.</t>
<t>The formal definition of the record format, using ABNF <xref target="RFC5234"></xref><xref target="RFC7405"></xref>, is as follows:</t>

<artwork><![CDATA[forsale-record  = forsale-version [forsale-content]
                  ; referred to as 'content' or RDATA
                  ; in a single character-string

forsale-version = %s"v=FORSALE1;"
                  ; %x76.3D.46.4F.52.53.41.4C.45.31.3B
                  ; version tag, case sensitive, no spaces

forsale-content = fcod-pair / ftxt-pair / furi-pair / fval-pair
                  ; referred to as 'tag-value pairs'
                  ; only one tag-value pair per record

fcod-pair       = fcod-tag fcod-value
ftxt-pair       = ftxt-tag ftxt-value
furi-pair       = furi-tag furi-value
fval-pair       = fval-tag fval-value
                  ; the tags are referred to as 'content tags'
                  ; the values are referred to as 'content values'

fcod-tag        = %s"fcod="
ftxt-tag        = %s"ftxt="
furi-tag        = %s"furi="
fval-tag        = %s"fval="
                  ; all content tags case sensitive lowercase

fcod-value      = 1*239OCTET

ftxt-value      = 1*239OCTET

furi-value      = URI
                  ; http, https, mailto and tel URI schemes
                  ; exactly one URI

URI             = <as defined in RFC3986, Appendix A>

fval-value      = fval-currency fval-amount
                  ; total length: 2 to 239 characters 
fval-currency   = 1*%x41-5A
                  ; one or more uppercase letters (A-Z)
                  ; indicating (crypto)currency
                  ; e.g., USD, EUR, BTC, ETH
                  ; standard three-letter fiat currencies recommended
fval-amount     = int-part [ %x2E frac-part ]
                  ; integer part with optional fractional part
                  ; e.g., 0.00010
int-part        = 1*DIGIT
frac-part       = 1*DIGIT
]]></artwork>
<t>See <xref target="tagdefs"></xref> for more detailed format definitions per content tag type.</t>
<t>Each &quot;_for-sale&quot; TXT record <bcp14>MUST NOT</bcp14> contain more than one tag-value
pair, but multiple TXT records <bcp14>MAY</bcp14> be present in a single RRset.</t>
<t>Every tag-value pair in the RRset <bcp14>MUST</bcp14> be unique, but multiple
instances of the same content tag <bcp14>MAY</bcp14> occur within a single RRset
(e.g., two &quot;fcod=&quot; content tags, each with a different content value).</t>
<t>See <xref target="rrsetlimits"></xref> for additional RRset limitations.</t>
<t>The <bcp14>OPTIONAL</bcp14> forsale-content provides information to interested parties as explained
in <xref target="introsect"></xref>.</t>
<t>If the forsale-content is absent or invalid, but a valid version tag
is present, processors <bcp14>SHOULD</bcp14> assume that the domain is for sale. For
example:</t>

<artwork><![CDATA[_for-sale.example.com. IN TXT "v=FORSALE1;"
_for-sale.example.com. IN TXT "v=FORSALE1;fcod="
_for-sale.example.com. IN TXT "v=FORSALE1;foo=bar"
]]></artwork>
<t>In such cases, processors <bcp14>SHOULD</bcp14> determine how to proceed.
An approach might be to signal that the domain is for sale and
to rely on traditional mechanisms such as WHOIS or RDAP to retrieve and present contact
information.</t>
<t>TXT records in the same RRset, but without a version tag, <bcp14>MUST NOT</bcp14> be interpreted or processed as a valid &quot;_for-sale&quot; indicator.
However, they may still offer some additional information for humans when considered alongside a valid
record. For example:</t>

<artwork><![CDATA[_for-sale.example.com. IN TXT "I am for sale"
_for-sale.example.com. IN TXT "v=FORSALE1;fcod=XX-NGYyYjEyZWY"
]]></artwork>
<t>If no TXT records at a leaf node contain a valid version tag, processors <bcp14>MUST</bcp14> consider the node name invalid and discard it.</t>
<t>See <xref target="contentlimits"></xref> for additional content limitations.</t>
</section>

<section anchor="tagdefs"><name>Content Tag Type Definitions</name>
<t>A new IANA sub-registry for known content tags is created in <xref target="ianasubreg"></xref>, with
this document registering the initial set. Implementations <bcp14>SHOULD</bcp14>
process only registered tags they support, and <bcp14>MAY</bcp14> ignore any others.</t>
<t>The following content tags are defined as the initial valid content tags.</t>

<section anchor="fcoddef"><name>fcod</name>
<t>This content tag is intended to contain a code that is meaningful only to processors
that understand its semantics. The content value <bcp14>MUST</bcp14> consist of at least one octet.</t>
<t>The manner in which the &quot;fcod=&quot; content tag is used is determined by agreement
between cooperating parties.</t>
<t>For example, a domain name registry may allow registrars to enter a &quot;for sale&quot; URL into their system.
From that URL, a unique code is generated. This code is inserted as the value of
the &quot;fcod=&quot; content tag of the &quot;_for-sale&quot; TXT record of a domain name, as shown in the example below.</t>
<t>When a user checks the availability of the domain name using a registry-provided tool
(e.g., a web interface), the domain name registry may use the code to redirect the user to the
appropriate &quot;for sale&quot; URL, which may include a query component containing the domain name, for example:</t>

<artwork><![CDATA[https://forsale-url.example.com/acme?d=example.org
]]></artwork>
<t>The rationale for this approach is that controlling parties retain
authority over redirection URLs and any other information derived
from the content tag, thereby preventing users from being sent
to unintended or malicious destinations or from being presented
with unintended content.</t>
<t>The following example shows a string encoded using Base64 <xref target="RFC4648"></xref>
preceded by the prefix &quot;ACME-&quot; as the value of the content tag:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fcod=ACME-S2lscm95IHdhcyBoZXJl"
]]></artwork>
<t>See the <xref target="examples" format="title"></xref> section for other possible uses of this
content tag.</t>
<t>Note: As an implementation consideration, when multiple parties are involved in
the domain sale process and use the same mechanism, it may be difficult to identify
the relevant content in an RRset. Adding a recognizable prefix to the content (e.g.,
&quot;ACME-&quot;) is one possible approach. However, this is left to the implementor,
as it is not enforced in this document. In this case, ACME would recognize its
content tag and interpret it as intended. This example uses Base64 encoding
to avoid escaping and ensure printable characters, though this is also
<bcp14>OPTIONAL</bcp14> and not required.</t>
</section>

<section anchor="ftxt"><name>ftxt</name>
<t>This content tag is intended to contain human-readable text that conveys information to interested parties. For example:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;ftxt=Call for info."
]]></artwork>
<t>While a single octet is the minimum, it is <bcp14>RECOMMENDED</bcp14> to provide more context.</t>
<t>While a URI in this field is not syntactically prohibited, its
interpretation as a URI is not guaranteed. Use of URIs in this
field <bcp14>SHOULD</bcp14> be avoided in favor of the &quot;furi=&quot; content tag.</t>
<t>See <xref target="fvalpar"></xref> for a way to explicitly indicate an asking price for easier machine parsing.</t>
<t>See <xref target="handlerdata"></xref> for considerations regarding the representation of non-ASCII data in the content value.</t>
</section>

<section anchor="furi"><name>furi</name>
<t>This content tag is intended to contain a human-readable and machine-parseable URI that conveys information to interested parties.</t>
<t>While the syntax allows any URI scheme, only the following schemes are <bcp14>RECOMMENDED</bcp14>
for use: <tt>http</tt> and <tt>https</tt> <xref target="RFC9110"></xref>, <tt>mailto</tt> <xref target="RFC6068"></xref>, and <tt>tel</tt> <xref target="RFC3966"></xref>.</t>
<t>The content value <bcp14>MUST</bcp14> contain exactly one URI. For example:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=https://example.com/foo%20bar"
]]></artwork>
<t>URIs <bcp14>MUST</bcp14> conform to the syntax and encoding requirements specified in
<xref target="RFC3986" sectionFormat="of" section="2.1"></xref>, including the percent-encoding of characters
not allowed unencoded (e.g., spaces <bcp14>MUST</bcp14> be encoded as <tt>%20</tt> in a URI).</t>
<t>See the <xref target="security" format="title"></xref> section for possible risks.</t>
</section>

<section anchor="fvalpar"><name>fval</name>
<t>This content tag is intended to contain human-readable and machine-parseable
text that explicitly indicates an asking price in a certain currency, as opposed to
the price being loosely incorporated in an &quot;ftxt=&quot; content tag. For example:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fval=EUR999"
]]></artwork>
<t>See <xref target="currency"></xref> for additional operational guidelines.</t>
</section>
</section>

<section anchor="contentlimits"><name>Content Limitations</name>
<t>The &quot;_for-sale&quot; TXT record <xref target="RFC8553" sectionFormat="parens" section="2.1"></xref> <bcp14>MUST</bcp14> contain content deemed valid under this specification.</t>
<t>Any text suggesting that a domain is not for sale is invalid content. If a domain name is not or no longer for sale,
a &quot;_for-sale&quot; indicator <bcp14>SHOULD NOT</bcp14> exist. The presence of a valid &quot;_for-sale&quot; TXT record
<bcp14>SHOULD</bcp14> therefore be regarded as an indication that the domain name is for sale.</t>
<t>The existence of a &quot;_for-sale&quot; leaf node does not obligate the holder to sell the domain name;
it may have been published in error, or withdrawn later for other reasons.</t>
<t>This specification does not dictate the exact use of any content values in the &quot;_for-sale&quot; TXT record.
Parties <bcp14>MAY</bcp14> use it in their tools, perhaps even by defining specific requirements that the content
value must meet. Content values can also be represented in a human-readable format for individuals to
interpret. See the <xref target="examples" format="title"></xref> section for clarification.</t>
<t>See <xref target="guidelines"></xref> for additional guidelines.</t>
</section>

<section anchor="rrsetlimits"><name>RRset Limitations</name>
<t>This specification does not define restrictions on the number of TXT records in the
RRset of &quot;_for-sale&quot; TXT records.</t>
<t>When multiple &quot;_for-sale&quot; TXT records are present in an RRset, the
processor <bcp14>MAY</bcp14> select one or more of them.</t>
<t>For example, a domain name registry might extract content from an RRset that includes
a recognizable &quot;fcod=&quot; content tag and use it to direct visitors to a sales page as
part of its services. An individual, on the other hand, might extract a
phone number (if present) from a &quot;furi=&quot; tag in the same RRset and use it to contact a potential seller.</t>
<t>An example of such a combined record is provided in <xref target="combiexample"></xref>.</t>
<t>The RDATA <xref target="RFC9499"></xref> of each &quot;_for-sale&quot; TXT record <bcp14>MUST</bcp14> consist of a single character-string
<xref target="RFC1035"></xref> with a maximum length of 255 octets, to avoid the need to concatenate multiple
character-strings during processing.</t>
<t>The following example illustrates an invalid &quot;_for-sale&quot; TXT record due to the presence of multiple
character-strings:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;" "ftxt=foo" "bar" "invalid"
]]></artwork>
</section>

<section anchor="wildcard-limitation"><name>Wildcard Limitation</name>
<t>Wildcards are only interpreted as leaf names, so &quot;_for-sale.*.example.&quot; is not a valid wildcard
<xref target="RFC4592"></xref> and is non-conformant. Hence, it is not possible to put all domains under a TLD for
sale with just one &quot;_for-sale&quot; TXT record.</t>
<t>The example below, however, shows a common use case where a &quot;_for-sale&quot; leaf node exists alongside a
wildcard:</t>

<artwork><![CDATA[*         IN A    198.51.100.80
          IN AAAA 2001:DB8::80
_for-sale IN TXT  "v=FORSALE1;ftxt=Only $99 at ACME"
]]></artwork>
</section>

<section anchor="placement-of-the-leaf-node-name"><name>Placement of the Leaf Node Name</name>
<t>The &quot;_for-sale&quot; leaf node name can essentially be placed at any level of
the DNS except in the in-addr.arpa. infrastructure TLD.</t>
<t><xref target="placements"></xref> illustrates this:</t>
<table anchor="placements"><name>Placements of TXT record </name>
<thead>
<tr>
<th>Name</th>
<th>Situation</th>
<th>Verdict</th>
</tr>
</thead>

<tbody>
<tr>
<td>_for-sale.example.</td>
<td>root zone</td>
<td>For sale</td>
</tr>

<tr>
<td>_for-sale.aaa.example.</td>
<td>second level</td>
<td>For sale</td>
</tr>

<tr>
<td>_for-sale.acme.bbb.example.</td>
<td>third level with public registry</td>
<td>For sale</td>
</tr>

<tr>
<td>_for-sale.www.ccc.example.</td>
<td>third level without public registry</td>
<td>See note 1</td>
</tr>

<tr>
<td>_for-sale.51.198.in-addr.arpa.</td>
<td>infrastructure TLD</td>
<td>See note 2</td>
</tr>

<tr>
<td>xyz._for-sale.example.</td>
<td>Invalid placement, not a leaf</td>
<td>non-conformant</td>
</tr>
</tbody>
</table><t>Note 1:
When the &quot;_for-sale&quot; leaf node is applied to a label under a subdomain,
there may not be a public domain name registry <xref target="RFC8499"></xref> capable of properly recording the rights associated with that label.
Nevertheless, this does not constitute a violation of this document.
One possible approach is for the involved parties to establish a mutual agreement to formalize these rights.</t>
<t>Note 2:
If a &quot;_for-sale&quot; leaf node were to appear under the .arpa infrastructure top-level
domain, it might be interpreted as an offer to sell IP address space.
However, such use is explicitly out of scope for this document, and processors
<bcp14>MUST</bcp14> ignore any such records.</t>
</section>
</section>

<section anchor="examples"><name>Additional Examples</name>

<section anchor="example-1-code-format"><name>Example 1: Code Format</name>
<t>A proprietary format, defined and used by agreement between parties - for example,
a domain name registry and its registrars - without a clearly specified meaning for third parties.
For example, it may be used to automatically redirect visitors to a web page, as described in
<xref target="fcoddef"></xref>:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fcod=XX-aHR0cHM...wbGUuY29t"
]]></artwork>
<t>Note: the content value in the above example is truncated for readability.</t>
<t>The use of the &quot;fcod=&quot; content tag is, in principle, unrestricted, allowing implementers to define additional
uses as needed. For example, it may convey arbitrary formatting or conditional display
instructions, such as adding an extra banner (e.g., &quot;eligibility criteria apply&quot;) or
specifying a style, including color, font, emojis, or logos.</t>
</section>

<section anchor="example-2-free-text-format"><name>Example 2: Free Text Format</name>
<t>Free format text, with some additional unstructured information, aimed at
being human-readable:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;ftxt=Eligibility criteria apply."
]]></artwork>
<t>The content in the following example could be malicious, but it is not in violation of this specification (see
the <xref target="security" format="title"></xref>):</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;ftxt=<script>...</script>"
]]></artwork>
</section>

<section anchor="example-3-uri-format"><name>Example 3: URI Format</name>
<t>The holder of &quot;example.com&quot; wishes to signal that the domain is for sale and adds this record to the &quot;example.com&quot; zone:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=https://example.com/fs?d=eHl6"
]]></artwork>
<t>An interested party notices this signal and can visit the URI mentioned for further information. The TXT record
may also be processed by automated tools, but see the <xref target="security" format="title"></xref> section for possible risks.</t>
<t>As an alternative, a mailto: URI could also be used:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=mailto:hq@example.com?subject=foo"
]]></artwork>
<t>Or a telephone URI:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=tel:+1-201-555-0123"
]]></artwork>
<t>There can be a use case for these URIs, especially since WHOIS (or RDAP) often has privacy restrictions.
But see the <xref target="privacy" format="title"></xref> section for possible downsides.</t>
</section>

<section anchor="example-4-asking-price-format"><name>Example 4: Asking Price Format</name>
<t>Consists of an uppercase currency code (e.g., USD, EUR), followed by a
numeric amount. See <xref target="currency"></xref> for additional guidelines.</t>
<t>In Bitcoins:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fval=BTC0.000010"
]]></artwork>
<t>In US dollars:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fval=USD750"
]]></artwork>
</section>

<section anchor="combiexample"><name>Example 5: Combinations</name>
<t>An example of multiple valid TXT records from which a processor can choose:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;furi=https://fs.example.com/"
          IN TXT "v=FORSALE1;ftxt=This domain name is for sale"
          IN TXT "v=FORSALE1;fval=EUR500"
          IN TXT "v=FORSALE1;fcod=ACME-ZGVhZGJlZWYx"
          IN TXT "v=FORSALE1;fcod=XYZ1-MTExLTIyMi0zMzMtNDQ0"
]]></artwork>
</section>
</section>

<section anchor="guidelines"><name>Operational Guidelines</name>

<section anchor="dns-wildcards"><name>DNS Wildcards</name>
<t>DNS wildcards interact poorly with underscored names <xref target="RFC8552" sectionFormat="parens" section="1.4"></xref>,
but they may still be encountered in practice, especially with operators who
are not implementing this mechanism. This is why the version
tag is a <bcp14>REQUIRED</bcp14> element: it allows processors to distinguish
valid &quot;_for-sale&quot; records from unrelated TXT records.</t>
<t>Nonetheless, any assumptions about the content of &quot;_for-sale&quot; TXT
records <bcp14>SHOULD</bcp14> be made with caution, particularly in edge
cases where wildcard expansion - possibly combined with DNS aliases
(e.g., CNAMEs) or redirections (e.g., DNAMEs <xref target="RFC6672"></xref>) - might
result in misleading listings or unintended references to third-party domains.</t>
</section>

<section anchor="handlerdata"><name>Handling of RDATA</name>
<t>Since this method relies on DNS TXT records, standard content rules apply as
defined in <xref target="RFC1035" sectionFormat="parens" section="5.1"></xref>. This includes the possibility of
representing non-ASCII data in the content value, by using escape sequences
(e.g., \DDD or \X notation).</t>
<t>All text exchanged between systems that are not part of a closed ecosystem
<bcp14>SHALL</bcp14> be encoded in and interpreted as UTF-8 <xref target="RFC3629"></xref> and conform
to the Network Unicode format <xref target="RFC5198"></xref>.</t>
<t>Processors <bcp14>MUST</bcp14> be capable of handling such encodings to ensure that
non-ASCII content values are interpreted correctly.</t>
<t>Note: When non-ASCII data is used, the ABNF octet limit applies to the encoded
byte sequence, not the number of visible characters. Multi-byte
characters will reduce the available character count.</t>
<t>For example, this TXT record contains two Japanese Kanji characters
encoded in UTF-8 using octal escapes, resulting in a content value
of six octets.</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;ftxt=\229\163\178\229\135\186"
]]></artwork>
</section>

<section anchor="currency"><name>Currency</name>
<t>The ABNF in <xref target="abnf"></xref> allows currency codes consisting of one or
more uppercase letters, providing flexibility to
accommodate both standard fiat currencies and other widely
recognized abbreviations, such as cryptocurrencies.</t>
<t>The use of standard fiat currencies is <bcp14>RECOMMENDED</bcp14>. When used,
they <bcp14>MUST</bcp14> be represented by three-letter uppercase currency
codes as specified in <xref target="ISO4217"></xref> (e.g., USD, EUR, GBP, JPY).</t>
<t>The amount component consists of an integer part, optionally
followed by a fractional part separated by a decimal point (%x2E, &quot;.&quot;).</t>
</section>

<section anchor="ttls"><name>TTLs</name>
<t>Long TTLs <xref target="RFC1035" sectionFormat="parens" section="3.2.1"></xref> increase the risk of outdated data misleading buyers into thinking the domain is still
available.</t>
</section>

<section anchor="ambiguous-constructs"><name>Ambiguous Constructs</name>
<t>Ambiguous constructs in content values <bcp14>SHOULD</bcp14> be avoided, as illustrated by the following
example:</t>

<artwork><![CDATA[_for-sale IN TXT "v=FORSALE1;fcod=TRIP-confusing;ftxt=dont_do_this"
]]></artwork>
<t>The above example is a valid &quot;fcod=&quot; content tag that includes the
string &quot;;ftxt=&quot; in the content value, which may be confusing,
as it does not actually represent an &quot;ftxt=&quot; content tag.</t>
</section>

<section anchor="robustness"><name>Robustness</name>
<t>Because the format of the content part is not strictly defined in this
document, processors <bcp14>MAY</bcp14> apply the robustness principle of being
liberal in what they accept. This also applies to space
characters (<tt>%x20</tt>) immediately following the version tag.
Alternatively, parties may agree on a more strictly defined proprietary format
for the content value to reduce ambiguity.</t>
</section>

<section anchor="scope-of-application"><name>Scope of Application</name>
<t>Note that this mechanism relies on the domain name being resolvable in the DNS.
This is not guaranteed, for example during a redemption period, in
pendingDelete status <xref target="STD69"></xref>, or when the domain is DNSSEC-signed but fails
validation (i.e., has a bogus state).</t>
</section>
</section>

<section anchor="security"><name>Security Considerations</name>
<t>One use of the TXT record type defined in this document is to parse the content
it contains and to automatically publish certain information from it on a
website or elsewhere. However, there is a risk if the domain name holder
publishes a malicious URI or one that points to improper content.
This may result in reputational damage to the party parsing the record.</t>
<t>An even more serious scenario arises when the content of the TXT record
is not properly validated and sanitized, potentially enabling attacks such as XSS or SQL injection.</t>
<t>Therefore, it is <bcp14>RECOMMENDED</bcp14> that any parsing and publishing is conducted with the utmost care.
Possible approaches include maintaining a list of validated URIs or applying other validation methods after parsing and before publishing.</t>
<t>There is also a risk that this method will be abused as a marketing tool, or to lure individuals into visiting certain sites or making contact by other
means, without there being any intention to actually sell the domain name. Therefore, this method is best suited for use by professionals.</t>
</section>

<section anchor="privacy"><name>Privacy Considerations</name>
<t>The use of the &quot;_for-sale&quot; leaf node name publicly indicates the intent to sell a domain name.
Domain holders should be aware that this information is accessible to anyone querying the
DNS and may have privacy implications.</t>
<t>There is a risk of data scraping, such as email addresses and phone numbers.</t>
<t>Publishing contact information may expose domain name holders to spam, or unwanted contact.</t>
</section>

<section anchor="ethicalconsids"><name>Ethical Considerations</name>
<t>Although not specifically designed for this purpose, the mechanisms
described in this document may also facilitate domain name
transactions by professional speculators, often referred to
as domainers, and those commonly referred to as domain drop catchers.
Some may view this as controversial.</t>
<t>However, by enabling domain name holders to more explicitly
signal their intent to sell, the proposed approach
aims to introduce greater clarity and predictability
into the domain lifecycle. This potentially reduces the
advantage currently held by these professionals, and
fosters a more equitable environment for all.</t>
<t>Furthermore, this mechanism avoids creating unnecessary
dependencies on registries for market transactions,
which could otherwise introduce complexities and
potential for unintended commercial entanglements.</t>
</section>

<section anchor="implementation"><name>Implementation Status</name>
<t>The concept described in this document has been in use at the .nl ccTLD registry since 2022,
when it initially started as a pilot. Since then, hundreds of thousands of domain names have
been marked with the &quot;_for-sale&quot; indicator. See for example:</t>

<artwork><![CDATA[https://www.sidn.nl/en/whois?q=example.nl
]]></artwork>
<t>The Dutch domain name registry SIDN offers registrars the option to register a sales
landing page via its registrar dashboard following the &quot;fcod=&quot; method.
When this option is used, a unique code is generated, which can be included in the &quot;_for-sale&quot; record.
If such a domain name is entered on the domain finder page of SIDN, a &quot;for sale&quot;
button is displayed accordingly.</t>
<t>A simple demonstration of a validator is present at:</t>

<artwork><![CDATA[https://forsalereg.sidnlabs.nl/demo
]]></artwork>
<t>&lt;NOTE TO RFC EDITOR: Please remove this section before publication as per RFC7942.&gt;</t>
</section>

<section anchor="ianaconsid"><name>IANA Considerations</name>
<t></t>
<t>This document requires two IANA actions:</t>

<ol>
<li><t>Addition of &quot;_for-sale&quot; to the existing &quot;Underscored and Globally Scoped DNS Node Names&quot; registry
(<xref target="ianareg"></xref>).</t>
</li>
<li><t>Creation of a new sub-registry for &quot;_for-sale Content Tags&quot; (<xref target="ianasubreg"></xref>).</t>
</li>
</ol>

<section anchor="ianareg"><name>Underscored and Globally Scoped DNS Node Name</name>
<t>IANA is requested to add the following entry to the &quot;Underscored and Globally Scoped DNS Node Names&quot;
registry <xref target="RFC8552"></xref> :</t>
<table><name>Entry for the &quot;Underscored and Globally Scoped DNS Node Names&quot; registry
</name>
<thead>
<tr>
<th>RR Type</th>
<th>_NODE NAME</th>
<th>Reference</th>
</tr>
</thead>

<tbody>
<tr>
<td>TXT</td>
<td>_for-sale</td>
<td>&lt;this memo&gt;</td>
</tr>
</tbody>
</table></section>

<section anchor="ianasubreg"><name>Creation of a Sub-registry</name>
<t>A sub-registry is to be created, titled &quot;The &quot;_for-sale&quot; Underscored and Globally Scoped DNS Node Name&quot;
in the &quot;Domain Name System (DNS) Parameters&quot; registry group.</t>
<t>The change controller for this sub-registry will be the Independent Submissions
Editor.</t>
<t>Assignments in this registry follow the policy of &quot;RFC Required&quot; as specified in
<xref target="RFC8126"></xref>.</t>
<t>The sub-registry entries consist of &quot;_for-sale Content Tags&quot; as defined in
<xref target="abnf"></xref> and <xref target="tagdefs"></xref> and the initial set is as follows:</t>
<table><name>Set of entries in the &quot;_for-sale Content Tags&quot; sub-registry
</name>
<thead>
<tr>
<th>Tag Name</th>
<th>Reference</th>
<th>Status</th>
<th>Description</th>
</tr>
</thead>

<tbody>
<tr>
<td>fcod</td>
<td>&lt;this memo&gt;</td>
<td>active</td>
<td>For Sale Proprietary Code</td>
</tr>

<tr>
<td>ftxt</td>
<td>&lt;this memo&gt;</td>
<td>active</td>
<td>For Sale Free Format Text</td>
</tr>

<tr>
<td>furi</td>
<td>&lt;this memo&gt;</td>
<td>active</td>
<td>For Sale URI</td>
</tr>

<tr>
<td>fval</td>
<td>&lt;this memo&gt;</td>
<td>active</td>
<td>For Sale Asking Price</td>
</tr>
</tbody>
</table><t>The &quot;status&quot; column can have one of the following values:</t>

<ul spacing="compact">
<li>active - the tag is in use in current implementations.</li>
<li>historic - the tag is deprecated and not expected to be used in current implementations.</li>
</ul>
<t>Newly defined content tags <bcp14>MUST NOT</bcp14> alter the semantics of existing content tags.</t>
<t>The addition of a new content tag to the registered list does not require the
definition of a new version tag. However, any modification to existing content tags does.</t>
<t>Tags beginning with the character &quot;x&quot; may be used for development and testing, and
<bcp14>SHOULD NOT</bcp14> be requested or assigned.</t>
<t>A tag name length of 4 characters is <bcp14>RECOMMENDED</bcp14> for consistency with the initial tag
set and to maintain compact record formats.</t>
<t>This registry was created by [RFCXXXX], which was published on the Independent Submission Stream.
Any issues that arise with the management of this registry will be resolved by IANA in consultation
with the Independent Submissions Editor.</t>
</section>
</section>

</middle>

<back>
<references><name>References</name>
<references><name>Normative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7405.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
</references>
<references><name>Informative References</name>
<reference anchor="ISO4217" target="https://www.iso.org/iso-4217-currency-codes.html">
  <front>
    <title>ISO 4217 Currency Codes</title>
    <author>
      <organization>SIX Group</organization>
    </author>
  </front>
</reference>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3912.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3966.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4592.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5198.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6068.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6672.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8499.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8553.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9083.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9499.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml9/reference.STD.69.xml"/>
</references>
</references>

<section anchor="acknowledgements" numbered="false"><name>Acknowledgements</name>
<t>The author would like to thank Thijs van den Hout, Caspar Schutijser, Melvin
Elderman, Ben van Hartingsveldt, Jesse Davids, Juan Stelling, John R. Levine,
and Eliot Lear (ISE) for their valuable feedback.</t>
</section>

</back>

</rfc>
