<?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-12" submissionType="IETF" 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-12" stream="IETF" 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>Internet Engineering Task Force (IETF)</workgroup>

<abstract>
<t>This document defines an operational convention for using the reserved
underscored DNS leaf node name &quot;_for-sale&quot; to indicate that the
parent domain name is available for purchase. This approach enables
easy deployment without affecting ongoing operations, allowing the
method to be applied to a domain name that is still in full use.</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 several &quot;Notes to the RFC Editor&quot;, including this section.
These should be reviewed and resolved prior to publication.</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 for sale, 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. This allows for a smooth introduction of the concept.</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
                  ; must be at least 1 OCTET

ftxt-value      = 1*239OCTET
                  ; must be at least 1 OCTET

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*ALPHA
                  ; one or more uppercase letters (A-Z)
                  ; indicating (crypto)currency
                  ; e.g., USD, EUR, BTC, ETH
                  ; three-letter uppercase currency code 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 registry for known content tags is created in <xref target="ianaconsid"></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 MUST 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 base 64 <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 base 64 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>
</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>MUST 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.</t>
<t>When multiple content TXT records are present, 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 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 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 and is non-conformant.
Hence, it is not possible to put all domains under a TLD for sale with just one 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>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="guidelines"></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>. For the &quot;ftxt=&quot; content tag,
this includes the possibility of representing non-ASCII data in the content value,
for instance by using UTF-8 <xref target="RFC3629"></xref> or escape sequences (e.g., \DDD or \X notation).</t>
<t>Processors <bcp14>SHOULD</bcp14> be capable of handling such encodings to ensure that non-ASCII
content values are interpreted correctly.</t>
<t>Note: When UTF-8 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>While the ABNF for the &quot;fval=&quot; content value in <xref target="abnf"></xref> allows flexibility
regarding the currency indication, it is <bcp14>RECOMMENDED</bcp14> to use a three-letter uppercase
currency code, such as those listed in <xref target="ISO4217"></xref>, followed by a numeric amount,</t>

<artwork><![CDATA[fval-value    = fval-currency fval-amount
                ; total length: 4 to 239 characters 
fval-currency = 3ALPHA
                ; 3-letter uppercase currency code (A-Z)
                ; e.g., USD, EUR, BTC, ETH
fval-amount   = int-part [ %x2E frac-part ]
                ; integer part with optional fractional part
                ; e.g., 0.00010 (%x2E is ".")
int-part      = 1*DIGIT
                ; at least one digit before the decimal point
frac-part     = 1*DIGIT
                ; at least one digit after the decimal point
]]></artwork>
</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 pending delete 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="ianaconsid"><name>IANA Considerations</name>
<t></t>
<t>IANA has established the &quot;Underscored and Globally Scoped DNS Node Names&quot; registry <xref target="RFC8552"></xref><xref target="IANA"></xref>. The underscored
leaf node name defined in this specification should be added as follows:</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><t>&lt;NOTE TO RFC EDITOR: Adjust the text in the table above before publication with a citation for the (this) document making the addition as per RFC8552.&gt;</t>
<t>A registry group called &quot;The '_for-sale' Underscored and Globally Scoped DNS Node Name&quot; <xref target="FORSALEREG"></xref> is to be created,
along with a registry called &quot;Content Tags&quot; within it. This registry group will be
maintained by IANA.</t>
<t>A publicly accessible example of such an IANA registry, including relevant notes
(but using 'SIDN Labs' instead of 'IANA'), can be found at:</t>

<artwork><![CDATA[https://forsalereg.sidnlabs.nl/
]]></artwork>
<t>&lt;NOTE TO RFC EDITOR: Please validate and improve the example where needed
and remove the text about the example registry above, prior to publication.&gt;</t>
<t>The registry entries consist of content tags as defined in
<xref target="tagdefs"></xref>.</t>
<t>The initial set of entries in this registry is as follows:</t>
<table><name>Initial set of entries in the &quot;Content Tags&quot; 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>RFCXXXX</td>
<td>active</td>
<td>For Sale Proprietary Code</td>
</tr>

<tr>
<td>ftxt</td>
<td>RFCXXXX</td>
<td>active</td>
<td>For Sale Free Format Text</td>
</tr>

<tr>
<td>furi</td>
<td>RFCXXXX</td>
<td>active</td>
<td>For Sale URI</td>
</tr>

<tr>
<td>fval</td>
<td>RFCXXXX</td>
<td>active</td>
<td>For Sale Asking Price</td>
</tr>
</tbody>
</table><t>&lt;NOTE TO RFC EDITOR: Adjust the text in the table above before publication with a citation for the (this) document making the addition as per RFC8552.&gt;</t>
<t>Future updates will be managed by the Change Controller.</t>
<t>Entries are assigned only for values that have been documented in
a manner consistent with the &quot;RFC Required&quot; registration
policy defined in <xref target="RFC8126"></xref>.</t>
<t>Newly defined content tags MUST NOT 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>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>This registry group is maintained by IANA as per <xref target="RFC8726"></xref>.</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 holders to spam, or unwanted contact.</t>
</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 insufficiently 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="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 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-status"><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, several hundred thousand 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="acknowledgements"><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 the ISE Editor for their valuable feedback.</t>
</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.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="FORSALEREG" target="https://forsalereg.sidnlabs.nl/forsale-parameters">
  <front>
    <title>The &#34;_for-sale&#34; Underscored and Globally Scoped DNS Node Name</title>
    <author>
      <organization>SIDN Labs</organization>
    </author>
  </front>
</reference>
<reference anchor="IANA" target="https://www.iana.org/assignments/dns-parameters/dns-parameters.xml#underscored-globally-scoped-dns-node-names">
  <front>
    <title>Underscored and Globally Scoped DNS Node Names</title>
    <author>
      <organization>IANA</organization>
    </author>
  </front>
</reference>
<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.3629.xml"/>
<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.4648.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.8726.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>

</back>

</rfc>
