<?xml version='1.0' encoding='UTF-8'?>
<?xml-model href="https://authors.ietf.org/en/content/rfcxml/rfcxml.rnc" schematypens="http://relaxng.org/ns/structure/1.0"?>
<rfc version="3" category="info" ipr="trust200902" docName="draft-guorong-utxo-dns-00" updates="1034, 1035" submissionType="independent">
  <front>
    <title abbrev="UTXO-DNS Protocol">UTXO Domain Name System (UTXO-DNS): A Distributed Domain Name System Based on the Blockchain UTXO Model</title>
    <author fullname="Tian Guorong" initials="T." surname="Tian" role="editor">
      <organization>CoCa. Foundation</organization>
      <address>
        <postal>
          <street/>
          <city>Jakarta</city>
          <country>Indonesia</country>
          <code>12710</code>
        </postal>
        <phone>62-8132000657+86-133X79841229</phone>
        <email>cocapetroleum@gmail.com</email>
        <email>standards@jmbc.utxo</email>
      </address>
    </author>
    <date month="March" year="2026"/>
    <area>Internet</area>
    <abstract>
      <t>This document defines the UTXO Domain Name System (UTXO-DNS), a distributed domain name system based on the blockchain Unspent Transaction Output (UTXO) model. UTXO-DNS provides a decentralized domain name resolution mechanism supporting the registration, resolution, and management of both global and region-specific domain names. The system adopts a hierarchical naming structure compatible with the existing DNS while ensuring domain name ownership proof and tamper-proof characteristics through blockchain technology.</t>
      <t>This protocol extends the traditional DNS protocol by introducing a blockchain-based domain name ownership verification mechanism, supporting internationalized domain names, digital currency address records, and decentralized identity records, among other new features.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <section anchor="background">
        <name>Background and Motivation</name>
        <t>With the development of distributed systems and blockchain technology, the traditional centralized domain name system faces challenges in ownership transparency, censorship resistance, and decentralized control. The existing DNS system has the following limitations:</t>
        <ul>
          <li>
            <t>Centralized control: the management of top-level domains is concentrated in ICANN and a few registries.</t>
          </li>
          <li>
            <t>Non-transparent ownership: domain name ownership records are opaque and vulnerable to single points of failure.</t>
          </li>
          <li>
            <t>Security dependencies: relies on centralized roots of trust and certificate authorities.</t>
          </li>
          <li>
            <t>Limited internationalization: support for internationalized domain names is limited.</t>
          </li>
        </ul>
        <t>UTXO-DNS aims to provide an alternative solution based on the UTXO model, combining the naming hierarchy of DNS with the immutability of blockchain to achieve a truly decentralized domain name system.</t>
      </section>
      <section anchor="design-principles">
        <name>Design Principles</name>
        <t>UTXO-DNS follows these core design principles:</t>
        <ul>
          <li>
            <t>Backward Compatibility: maintain compatibility with existing DNS protocols (RFC 1034, RFC 1035) as much as possible.</t>
          </li>
          <li>
            <t>Decentralization: eliminate single points of failure and single points of control, enabling distributed governance.</t>
          </li>
          <li>
            <t>Verifiability: all domain name records are verifiable on-chain, providing cryptographic proofs.</t>
          </li>
          <li>
            <t>Internationalization: full support for internationalized domain names (IDN) in accordance with RFC 5890.</t>
          </li>
          <li>
            <t>Extensibility: support for multiple record types and extended features, including digital currency addresses and decentralized identities.</t>
          </li>
          <li>
            <t>Privacy Protection: built-in privacy protection mechanisms supporting selective disclosure.</t>
          </li>
        </ul>
      </section>
      <section anchor="terminology">
        <name>Terminology and Definitions</name>
        <section anchor="key-terms">
          <name>Key Terms</name>
          <t>This document uses the following key terms:</t>
          <table anchor="tbl-terms">
            <thead>
              <tr>
                <th>Term</th>
                <th>Definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>UTXO</td>
                <td>Unspent Transaction Output, representing ownership of assets on a blockchain.</td>
              </tr>
              <tr>
                <td>Domain NFT</td>
                <td>Non-Fungible Token representing ownership of a domain name.</td>
              </tr>
              <tr>
                <td>Resolver Contract</td>
                <td>Smart contract responsible for mapping domain names to resource records.</td>
              </tr>
              <tr>
                <td>JUPC</td>
                <td>JMBC Unified Communication Protocol.</td>
              </tr>
              <tr>
                <td>Character Byte</td>
                <td>UTF-8 encoded byte sequence with a maximum length of 16 bytes.</td>
              </tr>
              <tr>
                <td>JMBC</td>
                <td>JMBC digital currency based on the UTXO model.</td>
              </tr>
              <tr>
                <td>CBDC</td>
                <td>Central Bank Digital Currency.</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="protocol-terms">
          <name>Protocol Terms</name>
          <t>This protocol uses the following ABNF syntax to define domain name formats:</t>
          <sourcecode>domain-label      = 1*16(ALPHA / DIGIT / UTF8-char)
domain-name       = domain-label *("." domain-label)
utxo-domain       = domain-name ".utxo"
regional-domain   = domain-name ".utxo" "." region-code
region-code       = 2ALPHA  ; ISO 3166-1 alpha-2
          </sourcecode>
          <t>Where UTF8-char refers to UTF-8 encoded characters conforming to RFC 3629.</t>
        </section>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <section anchor="system-architecture">
        <name>System Architecture</name>
        <t>UTXO-DNS adopts a layered architecture as shown below:</t>
        <figure anchor="fig-architecture">
          <sourcecode>+----------------------------+
                                          |   Application Layer  |
| (JMBC/CBDC Integration)|
+---------------------------------+
|
+------------------------------+
|   Web3 Client Layer   |
|  (Resolver/Registrar) |
+---------------------------+
|
+-------------------------------------+
|  UTXO-DNS Protocol Layer |
| (Message Format/Verification)|
+-------------------------------------+
|
+----------------------------------+
|    JUPC Routing Layer   |
|   (Network Communication) |
+-------------------------------------+
|
+---------------------------------+
|     Blockchain Layer    |
|   (UTXO/NFT Storage)    |
+----------------------------------+</sourcecode>
        </figure>
        <section anchor="protocol-stack">
          <name>Protocol Stack</name>
          <t>The UTXO-DNS protocol stack is as follows:</t>
          <sourcecode>Application:   HTTP/HTTPS, SMTP, other application protocols
               |
UTXO-DNS:      Domain Name Resolution Protocol
               |
Transport:     JUPC/TCP, JUPC/UDP
               |
Network:       JUPC/IP
               |
Data Link:     Ethernet, Wi-Fi, 5G, etc.
          </sourcecode>
        </section>
      </section>
      <section anchor="domain-format">
        <name>Domain Name Format Specification</name>
        <section anchor="syntax-definition">
          <name>Syntax Definition</name>
          <section anchor="abnf-syntax">
            <name>ABNF Syntax</name>
            <t>UTXO-DNS domain names follow this ABNF syntax:</t>
            <sourcecode>UTXO-DNS-name = global-domain / regional-domain

global-domain = label *("." label) ".utxo"
regional-domain = label *("." label) ".utxo" "." region-label
region-label = 2*63(ALPHA)

label = let-dig [*61(let-dig-hyp) let-dig]
let-dig = ALPHA / DIGIT
let-dig-hyp = ALPHA / DIGIT / "-"
            </sourcecode>
            <t>Each label's UTF-8 encoding must not exceed 16 bytes, and the total domain name length (including separators) must not exceed 253 bytes.</t>
          </section>
          <section anchor="idn-processing">
            <name>Internationalized Domain Name Processing</name>
            <t>Internationalized domain names follow the IDNA2008 standards (RFC 5890-5894):</t>
            <sourcecode>idn-label = *(ALPHA / DIGIT / other-utf8)
other-utf8 = UTF8-char  ; Unicode characters conforming to IDNA2008
            </sourcecode>
            <t>The processing flow is as follows:</t>
            <ol>
              <li>
                <t>User input: "Example.Test.utxo"</t>
              </li>
              <li>
                <t>Normalization: NFC normalization</t>
              </li>
              <li>
                <t>Encoding: Convert to A-label (Punycode): "xn--fsq.xn--0zwm56d.utxo"</t>
              </li>
              <li>
                <t>Storage: A-label form is stored on-chain</t>
              </li>
            </ol>
          </section>
        </section>
        <section anchor="domain-classification">
          <name>Domain Classification</name>
          <section anchor="global-domains">
            <name>Global Top-Level Domains</name>
            <t>The format for global top-level domains is:</t>
            <sourcecode>Example: jmbc.user.utxo
Structure: [organization].[namespace].utxo
            </sourcecode>
            <t>Characteristics: universally applicable, no geographical restrictions, governed by a common set of rules.</t>
          </section>
          <section anchor="regional-domains">
            <name>Regional Domains</name>
            <t>The format for regional domains is:</t>
            <sourcecode>Example: jmbc.user.utxo.hk
Structure: [organization].[namespace].utxo.[region-code]
Region code: follows ISO 3166-1 alpha-2 standard
            </sourcecode>
            <t>Characteristics: subject to region-specific regulations and must comply with local requirements.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="message-formats">
      <name>Message Formats</name>
      <section anchor="common-header">
        <name>Common Message Header</name>
        <t>All UTXO-DNS messages share the following header structure:</t>
        <figure anchor="fig-common-header">
          <sourcecode>0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Protocol            |   Version     |     Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Message ID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Timestamp                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Nonce                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Signature Length                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                          Signature                           +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          </sourcecode>
        </figure>
        <table anchor="tbl-common-header-fields">
          <thead>
            <tr>
              <th>Field</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Protocol</td>
              <td>Protocol identifier, fixed to 0x5544 ('UD')</td>
            </tr>
            <tr>
              <td>Version</td>
              <td>Protocol version, currently 1</td>
            </tr>
            <tr>
              <td>Type</td>
              <td>Message type (1=Query, 2=Response, 3=Update, 4=Notification)</td>
            </tr>
            <tr>
              <td>Message ID</td>
              <td>Message identifier, used for request-response matching</td>
            </tr>
            <tr>
              <td>Timestamp</td>
              <td>Unix timestamp, second precision</td>
            </tr>
            <tr>
              <td>Nonce</td>
              <td>Random number to prevent replay attacks</td>
            </tr>
            <tr>
              <td>Signature Length</td>
              <td>Length of the signature in bytes</td>
            </tr>
            <tr>
              <td>Signature</td>
              <td>Sender's signature over the message content</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="query-message">
        <name>Domain Name Resolution Query Message</name>
        <t>The domain name resolution query message format is as follows:</t>
        <figure anchor="fig-query-message">
          <sourcecode>0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         UTXO-DNS Header                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    QType      |    QClass     |          Flags                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Domain Name Length                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                      Domain Name (variable)                  +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          </sourcecode>
        </figure>
        <table anchor="tbl-query-fields">
          <thead>
            <tr>
              <th>Field</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>QType</td>
              <td>Query type (1=A, 28=AAAA, 5=CNAME, 16=TXT, 257=JMBC, 258=CBDC)</td>
            </tr>
            <tr>
              <td>QClass</td>
              <td>Query class (1=IN, 255=ANY)</td>
            </tr>
            <tr>
              <td>Flags</td>
              <td>Flags
            - Bit 0: Recursion Desired (RD)
            - Bit 1: Checking Disabled (CD)
            - Bit 2: Authentic Data requested (AD)
            - Bits 3-15: Reserved</td>
            </tr>
            <tr>
              <td>Domain Name Length</td>
              <td>Length of the domain name in bytes</td>
            </tr>
            <tr>
              <td>Domain Name</td>
              <td>Domain name being queried, using DNS name compression format</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="response-message">
        <name>Domain Name Resolution Response Message</name>
        <t>The domain name resolution response message format is as follows:</t>
        <figure anchor="fig-response-message">
          <sourcecode>0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         UTXO-DNS Header                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    RCode      |     Flags     |          Answer Count         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Authority Count                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Additional Count                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                       Answer Records                          +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                     Authority Records                         +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                    Additional Records                         +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Proof Length                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                         Merkle Proof                          +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          </sourcecode>
        </figure>
        <table anchor="tbl-response-fields">
          <thead>
            <tr>
              <th>Field</th>
              <th>Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>RCode</td>
              <td>Response code (0=NOERROR, 3=NXDOMAIN, etc.)</td>
            </tr>
            <tr>
              <td>Flags</td>
              <td>Response flags
            - Bit 0: Authoritative Answer (AA)
            - Bit 1: Truncation (TC)
            - Bit 2: Recursion Available (RA)
            - Bit 3: Authentic Data (AD)
            - Bit 4: Checking Disabled (CD)
            - Bits 5-15: Reserved</td>
            </tr>
            <tr>
              <td>Answer Count</td>
              <td>Number of resource records in the answer section</td>
            </tr>
            <tr>
              <td>Authority Count</td>
              <td>Number of resource records in the authority section</td>
            </tr>
            <tr>
              <td>Additional Count</td>
              <td>Number of resource records in the additional section</td>
            </tr>
            <tr>
              <td>Answer Records</td>
              <td>Resource records for the answer section</td>
            </tr>
            <tr>
              <td>Authority Records</td>
              <td>Resource records for the authority section</td>
            </tr>
            <tr>
              <td>Additional Records</td>
              <td>Resource records for the additional section</td>
            </tr>
            <tr>
              <td>Proof Length</td>
              <td>Length of the proof data in bytes</td>
            </tr>
            <tr>
              <td>Merkle Proof</td>
              <td>Merkle proof used to verify the validity of the record</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="resource-record">
        <name>Resource Record Format</name>
        <t>The UTXO-DNS resource record format is as follows:</t>
        <figure anchor="fig-resource-record">
          <sourcecode>0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Name (variable)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Class             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              TTL                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Data Length          |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                            Data (variable)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          </sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="record-types">
      <name>Record Type Definitions</name>
      <section anchor="standard-records">
        <name>Standard Record Types</name>
        <section anchor="a-record">
          <name>A Record (IPv4 Address)</name>
          <t>Type value: 1</t>
          <t>Data format: 32-bit IPv4 address in network byte order</t>
          <t>Example: 192.0.2.1</t>
        </section>
        <section anchor="aaaa-record">
          <name>AAAA Record (IPv6 Address)</name>
          <t>Type value: 28</t>
          <t>Data format: 128-bit IPv6 address in network byte order</t>
          <t>Example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334</t>
        </section>
        <section anchor="cname-record">
          <name>CNAME Record (Canonical Name)</name>
          <t>Type value: 5</t>
          <t>Data format: Canonical domain name using DNS name compression</t>
          <t>Example: www.jmbc.user.utxo</t>
        </section>
        <section anchor="txt-record">
          <name>TXT Record (Text Information)</name>
          <t>Type value: 16</t>
          <t>Data format: One or more character strings, each up to 255 characters</t>
          <t>Example: "v=spf1 include:_spf.jmbc.utxo ~all"</t>
        </section>
      </section>
      <section anchor="extension-records">
        <name>Extended Record Types</name>
        <section anchor="jmbc-record">
          <name>JMBC Record (Digital Currency Address)</name>
          <t>Type value: 257 (experimental)</t>
          <t>Data format:</t>
          <figure anchor="fig-jmbc-record">
            <sourcecode>0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Version(1)  |  Address Type |        Address Length           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                            |
+                      JMBC Address (variable)                 +
|                                                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            </sourcecode>
          </figure>
          <table anchor="tbl-jmbc-fields">
            <thead>
              <tr>
                <th>Field</th>
                <th>Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>Version</td>
                <td>Address format version, currently 1</td>
              </tr>
              <tr>
                <td>Address Type</td>
                <td>Address type (1=P2PKH, 2=P2SH, 3=Bech32)</td>
              </tr>
              <tr>
                <td>Address Length</td>
                <td>Length of the address data in bytes</td>
              </tr>
              <tr>
                <td>JMBC Address</td>
                <td>JMBC digital currency address</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="cbdc-record">
          <name>CBDC Record (Central Bank Digital Currency Address)</name>
          <t>Type value: 258 (experimental)</t>
          <t>Data format:</t>
          <figure anchor="fig-cbdc-record">
            <sourcecode>0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Version(1)  |   CBDC Type   |         Country Code          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


|                         Address Length                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                             |
+                      CBDC Address (variable)                 +
|                                                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


            </sourcecode>
          </figure>
          <table anchor="tbl-cbdc-fields">
            <thead>
              <tr>
                <th>Field</th>
                <th>Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>Version</td>
                <td>Address format version, currently 1</td>
              </tr>
              <tr>
                <td>CBDC Type</td>
                <td>CBDC type (1=retail, 2=wholesale)</td>
              </tr>
              <tr>
                <td>Country Code</td>
                <td>ISO 3166-1 numeric country code</td>
              </tr>
              <tr>
                <td>Address Length</td>
                <td>Length of the address data in bytes</td>
              </tr>
              <tr>
                <td>CBDC Address</td>
                <td>Central Bank Digital Currency address</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="did-record">
          <name>DID Record (Decentralized Identifier)</name>
          <t>Type value: 259 (experimental)</t>
          <t>Data format: JSON-LD representation of a W3C DID document</t>
          <t>Example:</t>
          <sourcecode>{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:utxo:jmbc.user.utxo",
  "verificationMethod": [...],
  "authentication": [...]
}
          </sourcecode>
        </section>
      </section>
    </section>
    <section anchor="protocol-operations">
      <name>Protocol Operations</name>
      <section anchor="registration-flow">
        <name>Domain Name Registration Flow</name>
        <t>Domain name registration follows this flow:</t>
        <sourcecode>Client                             Resolver Contract               Blockchain
|----------Registration Request-----&gt;|                                         |
|                                    |-------Check Availability------------------&gt;|
|                                    |&lt;------Domain Available--------------------|
|                                    |                                 |
|-------Payment Transaction (JMBC)--&gt;|                                      |
|                                    |-------Verify Payment----------------------&gt;|
|                                    |                                 |
|&lt;-----Registration Success Receipt--|                                        |
|                                    |------Create UTXO Record----------------&gt;|
        </sourcecode>
        <section anchor="registration-details">
          <name>Detailed Registration Steps</name>
          <ol>
            <li>
              <t>The client sends a domain registration request to the resolver contract, containing the desired domain name and registration period.</t>
            </li>
            <li>
              <t>The resolver contract checks whether the domain name is available (not registered and not on the reserved list).</t>
            </li>
            <li>
              <t>If available, the resolver contract returns the registration fee and payment address.</t>
            </li>
            <li>
              <t>The client sends a transaction containing JMBC payment to the specified address.</t>
            </li>
            <li>
              <t>After verifying the payment, the resolver contract creates a domain UTXO record on the blockchain.</t>
            </li>
            <li>
              <t>The client receives the transaction hash of the successful registration as a receipt.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="resolution-flow">
        <name>Domain Name Resolution Flow</name>
        <section anchor="recursive-resolution">
          <name>Recursive Resolution Flow</name>
          <t>The recursive resolution flow is as follows:</t>
          <sourcecode>Client                         Recursive Resolver               Authoritative Resolver
|----------Query Request-------&gt;|                                                  |
|                               |-------On-chain Query-------------------------------------&gt;|
|                               |&lt;-----Resolution+Proof-------------------------------------|
|&lt;-----Response+Proof-----------|                                                 |
|                                                                           |
|-----Verify Proof (optional)---&gt;|                                                  |
          </sourcecode>
        </section>
        <section anchor="iterative-resolution">
          <name>Iterative Resolution Flow</name>
          <t>The iterative resolution flow is as follows:</t>
          <sourcecode>Client                          Local Resolver                  Root Resolver   Authoritative Resolver
   |--------Query Request-------&gt;|                                  |                                 |
   |                             |--------Query Root Resolver-------&gt;|                                 |
   |                             |&lt;-----Return Auth Resolver Addr  |                                |
   |                             |--------Query Auth Resolver-------&gt;|------------------------------------------------&gt;|
   |                             |&lt;-----Resolution+Proof--------------|&lt;------------------------------------------------|
   |&lt;-----Response+Proof---------|                                 |                                 |
          </sourcecode>
        </section>
      </section>
      <section anchor="update-flow">
        <name>Domain Name Update Flow</name>
        <t>The domain name update flow is as follows:</t>
        <sourcecode>Domain Owner                       Resolver Contract               Blockchain
|-------Update Request+Signature-&gt;|                                          |
|                                 |-------Verify Ownership-------------------------&gt;|
|                                 |&lt;-----Verification Passed--------------------------|
|                                 |-------Update Records----------------------------&gt;|
|                                 |                                     |
|&lt;-----Update Transaction Hash----|                                           |
        </sourcecode>
        <t>Domain updates include the following operations:</t>
        <ul>
          <li>
            <t>Modifying resource records (e.g., A, AAAA, TXT records).</t>
          </li>
          <li>
            <t>Changing the resolver contract address.</t>
          </li>
          <li>
            <t>Setting sub?domain delegation.</t>
          </li>
          <li>
            <t>Renewing domain registration.</t>
          </li>
          <li>
            <t>Transferring domain ownership.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="threat-model">
        <name>Threat Model</name>
        <section anchor="attack-types">
          <name>Attack Types</name>
          <t>UTXO-DNS faces the following types of attacks:</t>
          <ul>
            <li>
              <t>Domain Hijacking: an attacker attempts to illegitimately gain control of a domain.</t>
            </li>
            <li>
              <t>Cache Poisoning: polluting resolver caches to return false records.</t>
            </li>
            <li>
              <t>Man?in?the?Middle Attacks: intercepting and modifying DNS queries/responses.</t>
            </li>
            <li>
              <t>DDoS Attacks: denial?of?service attacks against resolution services.</t>
            </li>
            <li>
              <t>Sybil Attacks: creating many fake nodes to influence the network.</t>
            </li>
            <li>
              <t>Private Key Leakage: theft of a domain owner?s private key leading to domain theft.</t>
            </li>
            <li>
              <t>Smart Contract Vulnerabilities: security flaws in resolver contracts.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="security-mechanisms">
        <name>Security Mechanisms</name>
        <section anchor="cryptographic-guarantees">
          <name>Cryptographic Guarantees</name>
          <t>UTXO-DNS employs the following cryptographic mechanisms:</t>
          <ol>
            <li>
              <t>Digital Signatures: all domain operations require the owner?s signature, using ECDSA (secp256k1) or EdDSA (Ed25519).</t>
            </li>
            <li>
              <t>Merkle Proofs: on?chain proofs of record existence and validity.</t>
            </li>
            <li>
              <t>Zero?Knowledge Proofs: optional identity privacy protection using zk?SNARKs or zk?STARKs.</t>
            </li>
            <li>
              <t>Post?Quantum Algorithms: support for migration to post?quantum cryptography (PQC), including lattice?based signature schemes.</t>
            </li>
          </ol>
        </section>
        <section anchor="operational-security">
          <name>Operational Security</name>
          <t>Operational security mechanisms include:</t>
          <ol>
            <li>
              <t>Timelocks: delays for sensitive operations (e.g., ownership transfer), default 24 hours.</t>
            </li>
            <li>
              <t>Multi?signature: important domains can be configured with multi?sig control, requiring m?of?n signatures.</t>
            </li>
            <li>
              <t>Emergency Recovery: recovery mechanism for lost private keys via social recovery or custodial services.</t>
            </li>
            <li>
              <t>Sybil Attack Mitigation: registration limits and staking requirements; new registrations must stake JMBC.</t>
            </li>
            <li>
              <t>Rate Limiting: rate limiting on frequent operations to prevent abuse.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <section anchor="privacy-threats">
          <name>Privacy Threats</name>
          <t>Privacy threats in UTXO-DNS include:</t>
          <ul>
            <li>
              <t>Query Monitoring: attackers monitoring DNS queries to analyze user behaviour.</t>
            </li>
            <li>
              <t>Ownership Correlation: linking real identities to users via domain ownership.</t>
            </li>
            <li>
              <t>Transaction Graph Analysis: analysing blockchain transaction graphs to infer user relationships.</t>
            </li>
            <li>
              <t>Metadata Leakage: metadata exposed during resolution leaking user information.</t>
            </li>
          </ul>
        </section>
        <section anchor="privacy-enhancements">
          <name>Privacy?Enhancing Technologies</name>
          <t>UTXO-DNS adopts the following privacy?enhancing technologies:</t>
          <ol>
            <li>
              <t>Encrypted Queries: support for Oblivious DNS over JUPC (ODoJ) using HPKE for end?to?end encryption.</t>
            </li>
            <li>
              <t>Differential Privacy: adding Laplace noise to query statistics to protect aggregate privacy.</t>
            </li>
            <li>
              <t>Ephemeral Identifiers: support for short?lived domains with automatic expiration for privacy.</t>
            </li>
            <li>
              <t>Anonymous Credentials: anonymous proof of domain ownership using CL signatures or BBS+ signatures.</t>
            </li>
            <li>
              <t>CoinJoin Techniques: transactions using CoinJoin or similar techniques to enhance privacy.</t>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="protocol-numbers">
        <name>Protocol Number Assignment</name>
        <t>This specification requests IANA to assign new values in the following registries:</t>
        <section anchor="dns-parameters">
          <name>DNS Parameters Registry</name>
          <t>Assign the following values in the "Resource Record (RR) TYPEs" sub?registry of the "DNS Parameters" registry:</t>
          <table anchor="tbl-rr-types">
            <thead>
              <tr>
                <th>Type Value</th>
                <th>Mnemonic</th>
                <th>Description</th>
                <th>Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>257</td>
                <td>JMBC</td>
                <td>JMBC digital currency address</td>
                <td>[This document]</td>
              </tr>
              <tr>
                <td>258</td>
                <td>CBDC</td>
                <td>Central Bank Digital Currency address</td>
                <td>[This document]</td>
              </tr>
              <tr>
                <td>259</td>
                <td>DID</td>
                <td>Decentralized Identifier document</td>
                <td>[This document]</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="port-numbers">
          <name>Port Numbers Registry</name>
          <t>Assign the following ports in the "Service Name and Transport Protocol Port Number" registry:</t>
          <table anchor="tbl-port-numbers">
            <thead>
              <tr>
                <th>Port</th>
                <th>Protocol</th>
                <th>Description</th>
                <th>Status</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>5353</td>
                <td>tcp/udp</td>
                <td>UTXO-DNS service port</td>
                <td>Suggested</td>
              </tr>
              <tr>
                <td>5354</td>
                <td>tcp/udp</td>
                <td>UTXO-DNS over TLS service port</td>
                <td>Suggested</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="new-registries">
        <name>Creation of New Registries</name>
        <t>This specification requests IANA to create the following new registries:</t>
        <section anchor="utxo-dns-error-codes">
          <name>UTXO-DNS Error Codes Registry</name>
          <t>Create a "UTXO-DNS Error Codes" registry with the following initial values:</t>
          <table anchor="tbl-error-codes">
            <thead>
              <tr>
                <th>Code</th>
                <th>Name</th>
                <th>Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>100</td>
                <td>BLOCKCHAIN_ERROR</td>
                <td>Blockchain interaction error</td>
              </tr>
              <tr>
                <td>101</td>
                <td>PROOF_INVALID</td>
                <td>Proof is invalid</td>
              </tr>
              <tr>
                <td>102</td>
                <td>DOMAIN_EXPIRED</td>
                <td>Domain name has expired</td>
              </tr>
              <tr>
                <td>103</td>
                <td>INSUFFICIENT_FUNDS</td>
                <td>Insufficient funds</td>
              </tr>
              <tr>
                <td>104</td>
                <td>SIGNATURE_INVALID</td>
                <td>Signature is invalid</td>
              </tr>
              <tr>
                <td>105</td>
                <td>CONTRACT_ERROR</td>
                <td>Smart contract error</td>
              </tr>
            </tbody>
          </table>
          <t>The registration policy for this registry shall be "Standards Action".</t>
        </section>
        <section anchor="utxo-dns-flags">
          <name>UTXO-DNS Flags Registry</name>
          <t>Create a "UTXO-DNS Flags" registry to record flag definitions in UTXO-DNS messages.</t>
          <t>The registration policy for this registry shall be "Expert Review".</t>
        </section>
      </section>
    </section>
    <section anchor="intellectual-property">
      <name>Intellectual Property Statement</name>
      <section anchor="patent-policy">
        <name>Patent Policy</name>
        <t>This specification follows the IETF patent policy<xref target="RFC8179"/>.</t>
        <section anchor="patent-disclosure">
          <name>Patent Disclosure Obligations</name>
          <t>According to RFC 8179, all entities participating in the development of this standard must:</t>
          <ol>
            <li>
              <t>Early Disclosure: disclose known essential patents in a timely manner during the standardisation process.</t>
            </li>
            <li>
              <t>Licensing Commitment: commit to license essential patents on reasonable and non?discriminatory (RAND) terms.</t>
            </li>
            <li>
              <t>Transparency: publicly disclose patent holdings to avoid patent ambush.</t>
            </li>
          </ol>
        </section>
        <section anchor="coca-patent-commitment">
          <name>CoCa. Foundation Patent Commitment</name>
          <t>The CoCa. Foundation hereby declares that:</t>
          <t>For any patented technology essential to the implementation of this specification, the CoCa. Foundation commits to grant royalty?free licenses to all implementers, with licensing terms conforming to the IETF RAND principles.</t>
        </section>
      </section>
      <section anchor="copyright-notice">
        <name>Copyright</name>
        <t>This specification document follows the IETF copyright policy<xref target="RFC5378"/>.</t>
        <t>The text of this specification itself may not be copyrighted; it may be copied, distributed, and derived from, provided that the copyright notice is retained.</t>
      </section>
      <section anchor="trademarks">
        <name>Trademarks</name>
        <t>The following terms may be trademarks or registered trademarks of their respective owners:</t>
        <ul>
          <li>
            <t>UTXO-DNS</t>
          </li>
          <li>
            <t>.utxo</t>
          </li>
          <li>
            <t>JMBC</t>
          </li>
          <li>
            <t>JUPC</t>
          </li>
        </ul>
        <t>All other trademarks mentioned in this document are the property of their respective owners.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="compatibility">
        <name>Compatibility Considerations</name>
        <section anchor="dns-compatibility">
          <name>Compatibility with Legacy DNS</name>
          <t>UTXO-DNS is designed with compatibility with legacy DNS in mind:</t>
          <ol>
            <li>
              <t>Protocol Compatibility: uses a query?response model similar to traditional DNS.</t>
            </li>
            <li>
              <t>Record Type Compatibility: supports traditional DNS record types (A, AAAA, CNAME, TXT, etc.).</t>
            </li>
            <li>
              <t>Extension Mechanism: uses EDNS(0) extension mechanisms for compatibility.</t>
            </li>
            <li>
              <t>Proxy Gateway: provides a proxy gateway from legacy DNS to UTXO-DNS.</t>
            </li>
          </ol>
        </section>
        <section anchor="ens-compatibility">
          <name>Compatibility with ENS</name>
          <t>Differences between UTXO-DNS and the Ethereum Name Service (ENS):</t>
          <table anchor="tbl-ens-comparison">
            <thead>
              <tr>
                <th>Feature</th>
                <th>UTXO-DNS</th>
                <th>ENS</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>Base Model</td>
                <td>UTXO/NFT model</td>
                <td>Account model</td>
              </tr>
              <tr>
                <td>Naming Hierarchy</td>
                <td>Fixed .utxo TLD</td>
                <td>Arbitrary TLDs</td>
              </tr>
              <tr>
                <td>Regional Support</td>
                <td>Built?in regional domains</td>
                <td>No built?in support</td>
              </tr>
              <tr>
                <td>Payment Integration</td>
                <td>Native JMBC/CBDC</td>
                <td>ETH/ERC-20</td>
              </tr>
            </tbody>
          </table>
          <t>UTXO-DNS plans to provide a bidirectional bridge with ENS, allowing domain migration between the two systems.</t>
        </section>
      </section>
      <section anchor="performance">
        <name>Performance Considerations</name>
        <section anchor="blockchain-performance">
          <name>Blockchain Performance</name>
          <t>UTXO-DNS adopts the following strategies to mitigate blockchain performance limitations:</t>
          <ol>
            <li>
              <t>Layered Storage: only ownership proofs and critical metadata are stored on?chain; resolution records are stored off?chain.</t>
            </li>
            <li>
              <t>State Channels: high?frequency updates are handled via state channels and settled periodically on the main chain.</t>
            </li>
            <li>
              <t>Batch Processing: multiple operations are packed into a single transaction to reduce on?chain load.</t>
            </li>
            <li>
              <t>Cache Optimisation: extensive use of caching to reduce on?chain queries.</t>
            </li>
            <li>
              <t>Sidechain Scaling: sidechains handle resolution queries while the main chain handles ownership transfers.</t>
            </li>
          </ol>
        </section>
        <section anchor="resolution-performance">
          <name>Resolution Performance</name>
          <t>Domain name resolution performance optimisations:</t>
          <ol>
            <li>
              <t>Local Caching: clients and resolvers implement multi?level caching.</t>
            </li>
            <li>
              <t>Prefetching: intelligent prefetching based on access patterns.</t>
            </li>
            <li>
              <t>Parallel Queries: query multiple resolvers in parallel, using the fastest response.</t>
            </li>
            <li>
              <t>Proof Batching: batch verification of Merkle proofs.</t>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="standardization-roadmap">
      <name>Standardisation Roadmap</name>
      <section anchor="phases">
        <name>Standardisation Phases</name>
        <t>The UTXO-DNS standardisation plan consists of four phases:</t>
        <table anchor="tbl-standardization-phases">
          <thead>
            <tr>
              <th>Phase</th>
              <th>Name</th>
              <th>Timing</th>
              <th>Main Objective</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>Phase 1</td>
              <td>Experimental Draft</td>
              <td>2024 Q4</td>
              <td>Publish initial Internet?Draft, establish test network</td>
            </tr>
            <tr>
              <td>Phase 2</td>
              <td>Proposed Standard</td>
              <td>2025 Q2</td>
              <td>Complete interoperability testing, request IANA assignments</td>
            </tr>
            <tr>
              <td>Phase 3</td>
              <td>Draft Standard</td>
              <td>2026 Q1</td>
              <td>Stable version, at least two independent implementations</td>
            </tr>
            <tr>
              <td>Phase 4</td>
              <td>Internet Standard</td>
              <td>2027 Q1</td>
              <td>IESG approval, published as RFC</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="ietf-process">
        <name>IETF Standardisation Process</name>
        <t>UTXO-DNS standardisation follows the IETF standards process:</t>
        <sourcecode>    Initial Draft ? IETF Review ? Working Group Formation ? Working Group Draft ? 
    Multiple Reviews ? Working Group Last Call ? IESG Review ? RFC Publication
            </sourcecode>
        <t>A request for working group formation is expected to be submitted to the IETF in Q1 2025.</t>
      </section>
    </section>
    <section anchor="appendix-error-codes">
      <name>Appendix A: Full List of Error Codes</name>
      <table anchor="tbl-full-error-codes">
        <thead>
          <tr>
            <th>Code</th>
            <th>Name</th>
            <th>Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>0</td>
            <td>NOERROR</td>
            <td>Successful completion</td>
          </tr>
          <tr>
            <td>1</td>
            <td>FORMERR</td>
            <td>Format error</td>
          </tr>
          <tr>
            <td>2</td>
            <td>SERVFAIL</td>
            <td>Server failure</td>
          </tr>
          <tr>
            <td>3</td>
            <td>NXDOMAIN</td>
            <td>Domain name does not exist</td>
          </tr>
          <tr>
            <td>4</td>
            <td>NOTIMP</td>
            <td>Function not implemented</td>
          </tr>
          <tr>
            <td>5</td>
            <td>REFUSED</td>
            <td>Query refused</td>
          </tr>
          <tr>
            <td>6</td>
            <td>YXDOMAIN</td>
            <td>Domain name already exists</td>
          </tr>
          <tr>
            <td>7</td>
            <td>YXRRSET</td>
            <td>Resource record set already exists</td>
          </tr>
          <tr>
            <td>8</td>
            <td>NXRRSET</td>
            <td>Resource record set does not exist</td>
          </tr>
          <tr>
            <td>9</td>
            <td>NOTAUTH</td>
            <td>Server not authoritative</td>
          </tr>
          <tr>
            <td>10</td>
            <td>NOTZONE</td>
            <td>Domain name not in zone</td>
          </tr>
          <tr>
            <td>100</td>
            <td>BLOCKCHAIN_ERROR</td>
            <td>Blockchain interaction error</td>
          </tr>
          <tr>
            <td>101</td>
            <td>PROOF_INVALID</td>
            <td>Proof invalid</td>
          </tr>
          <tr>
            <td>102</td>
            <td>DOMAIN_EXPIRED</td>
            <td>Domain name expired</td>
          </tr>
          <tr>
            <td>103</td>
            <td>INSUFFICIENT_FUNDS</td>
            <td>Insufficient funds</td>
          </tr>
          <tr>
            <td>104</td>
            <td>SIGNATURE_INVALID</td>
            <td>Signature invalid</td>
          </tr>
          <tr>
            <td>105</td>
            <td>CONTRACT_ERROR</td>
            <td>Smart contract error</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="appendix-example-messages">
      <name>Appendix B: Example Messages</name>
      <section anchor="example-query">
        <name>Example Query Message</name>
        <t>Query for the A record of jmbc.user.utxo:</t>
        <sourcecode>    Raw message (hexadecimal):
    5544 01 01 00000001 00000000 00000001 00000000
    00000048 3045022100... 00 01 0001 0B 6A6D6263
    2E757365722E7574786F 0001 0001
    
    Decoded:
    - Protocol: UTXO-DNS (0x5544)
    - Version: 1
    - Type: Query (1)
    - Message ID: 1
    - Timestamp: 0
    - Nonce: 1
    - Signature length: 72 bytes
    - Signature: 3045022100...
    - QType: A (1)
    - QClass: IN (1)
    - Domain name length: 11 bytes
    - Domain name: "jmbc.user.utxo"
            </sourcecode>
      </section>
      <section anchor="example-response">
        <name>Example Response Message</name>
        <t>Response containing A record 192.0.2.1:</t>
        <sourcecode>    Raw message (hexadecimal):
    5544 01 02 00000001 00000000 00000001 00000000
    00000048 3045022100... 00 0001 0001 0000 0000
    00000020 0B6A6D62632E757365722E7574786F 0001
    0001 0000012C 0004 C0000201 00000020 010203...
    
    Decoded:
    - Protocol: UTXO-DNS (0x5544)
    - Version: 1
    - Type: Response (2)
    - RCode: NOERROR (0)
    - Flags: Authoritative Answer (0x0001)
    - Answer count: 1
    - Authority count: 0
    - Additional count: 0
    - Proof length: 32 bytes
    - Domain name: "jmbc.user.utxo"
    - Type: A (1)
    - Class: IN (1)
    - TTL: 300 seconds
    - Data length: 4 bytes
    - Data: 192.0.2.1
    - Proof: Merkle proof data
            </sourcecode>
      </section>
    </section>
    <section anchor="appendix-configuration-examples">
      <name>Appendix C: Configuration Examples</name>
      <section anchor="resolver-config">
        <name>Resolver Configuration File Example</name>
        <t>Example UTXO-DNS resolver configuration file (YAML format):</t>
        <sourcecode>    # utxo-dns-resolver.yaml
    version: 1.0
    network:
      chain_id: "jmbc-mainnet-1"
      rpc_endpoints:
        - "https://rpc.jmbc.utxo:8545"
        - "https://rpc2.jmbc.utxo:8545"
      ws_endpoints:
        - "wss://ws.jmbc.utxo:8546"
    
    resolver:
      cache_size: 10000
      cache_ttl: 300
      max_recursion: 10
      enable_dnssec: true
      enable_privacy: true
      
    security:
      require_proof: true
      proof_expiry: 3600
      allowed_algorithms:
        - "secp256k1"
        - "ed25519"
        - "sr25519"
        
    logging:
      level: "info"
      format: "json"
      output: "/var/log/utxo-dns/resolver.log"
            </sourcecode>
      </section>
      <section anchor="client-config">
        <name>Client Configuration File Example</name>
        <t>Example UTXO-DNS client configuration file (JSON format):</t>
        <sourcecode>    {
      "version": "1.0",
      "resolvers": [
        "https://dns1.jmbc.utxo:5353",
        "https://dns2.jmbc.utxo:5353"
      ],
      "fallback_resolvers": [
        "8.8.8.8",
        "1.1.1.1"
      ],
      "prefer_utxo": true,
      "enable_cache": true,
      "cache_size": 1000,
      "privacy": {
        "enable_encryption": true,
        "enable_oblivious": false,
        "query_minimization": true
      },
      "debug": false
    }
            </sourcecode>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC1034" target="https://www.rfc-editor.org/info/rfc1034">
        <front>
          <title>Domain names - concepts and facilities</title>
          <author>
            <organization/>
          </author>
          <date month="November" year="1987"/>
        </front>
        <seriesInfo name="STD" value="13"/>
        <seriesInfo name="RFC" value="1034"/>
        <seriesInfo name="DOI" value="10.17487/RFC1034"/>
      </reference>
      <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035">
        <front>
          <title>Domain names - implementation and specification</title>
          <author>
            <organization/>
          </author>
          <date month="November" year="1987"/>
        </front>
        <seriesInfo name="STD" value="13"/>
        <seriesInfo name="RFC" value="1035"/>
        <seriesInfo name="DOI" value="10.17487/RFC1035"/>
      </reference>
      <reference anchor="RFC5890" target="https://www.rfc-editor.org/info/rfc5890">
        <front>
          <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
          <author>
            <organization/>
          </author>
          <date month="August" year="2010"/>
        </front>
        <seriesInfo name="RFC" value="5890"/>
        <seriesInfo name="DOI" value="10.17487/RFC5890"/>
      </reference>
      <reference anchor="RFC6891" target="https://www.rfc-editor.org/info/rfc6891">
        <front>
          <title>Extension Mechanisms for DNS (EDNS(0))</title>
          <author>
            <organization/>
          </author>
          <date month="April" year="2013"/>
        </front>
        <seriesInfo name="RFC" value="6891"/>
        <seriesInfo name="DOI" value="10.17487/RFC6891"/>
      </reference>
      <reference anchor="RFC8179" target="https://www.rfc-editor.org/info/rfc8179">
        <front>
          <title>Intellectual Property Rights in IETF Technology</title>
          <author>
            <organization/>
          </author>
          <date month="May" year="2017"/>
        </front>
        <seriesInfo name="BCP" value="79"/>
        <seriesInfo name="RFC" value="8179"/>
        <seriesInfo name="DOI" value="10.17487/RFC8179"/>
      </reference>
      <reference anchor="RFC5378" target="https://www.rfc-editor.org/info/rfc5378">
        <front>
          <title>Rights Contributors Provide to the IETF Trust</title>
          <author>
            <organization/>
          </author>
          <date month="November" year="2008"/>
        </front>
        <seriesInfo name="BCP" value="78"/>
        <seriesInfo name="RFC" value="5378"/>
        <seriesInfo name="DOI" value="10.17487/RFC5378"/>
      </reference>
      <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
        <front>
          <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
          <author>
            <organization/>
          </author>
          <date month="June" year="2017"/>
        </front>
        <seriesInfo name="BCP" value="26"/>
        <seriesInfo name="RFC" value="8126"/>
        <seriesInfo name="DOI" value="10.17487/RFC8126"/>
      </reference>
    </references>
    <references>
      <name>Informative References</name>
      <reference anchor="Bitcoin" target="https://bitcoin.org/bitcoin.pdf">
        <front>
          <title>Bitcoin: A Peer-to-Peer Electronic Cash System</title>
          <author fullname="Satoshi Nakamoto"/>
          <date year="2008"/>
        </front>
      </reference>
      <reference anchor="ENS" target="https://docs.ens.domains/">
        <front>
          <title>Ethereum Name Service Documentation</title>
          <author>
            <organization>ENS Team</organization>
          </author>
        </front>
      </reference>
      <reference anchor="JUPC" target="https://jmbc.utxo/specs/jupc-v1.0">
        <front>
          <title>JMBC Unified Protocol Communication Specification</title>
          <author>
            <organization>CoCa. Foundation</organization>
          </author>
          <date year="2024"/>
          <abstract>
            <t>JMBC Unified Communication Protocol Specification, version 1.0</t>
          </abstract>
        </front>
        <seriesInfo name="Version" value="1.0"/>
      </reference>
    </references>
    <section anchor="authors-address">
      <name>Author's Address</name>
      <t>12710 PLAZA SIMATUPANG LANTAI 6 UNIT 3, JALAN TB SIMATUPANG KAV.IS NOMOR 01 RT. 002 RW. 017, PONDOK PINANG, KEBAYORAN LAMA, KOTA ADM. JAKARTA SELATAN, DKI JAKARTA JAKARTA Indonesia +62-81320006570 cocapetroleum@gmail.com standards@jmbc.utxo</t>
    </section>
  </back>
</rfc>
