Jump to: navigation, search

Domain Name Specification Ideas PENDING DELETE

Namecoin Domain Name Specification

This document is a part of Namecoin Specification

WORKING DRAFT

This is a WORKING DRAFT it's not completed and it's not official in any way. It's not yet reviewed nor approved by Namecoin community.

THIS SPEC SHOULD NOT BE IMPLEMENTED IN IT CURRENT FORM: Please see Domain_Name_Specification for the current working proposal.

Introduction

Namecoin database provides decentralized peer-to-peer domain names for .bit TLD. Namecoin domain names are guaranteed to be authentic and cannot be altered by an unauthorized entity. Namecoin domain names doesn't try to mimic or fully support legacy domain name system, but it allows simple mapping to it for most of cases.

Overview

Namecoin domain names are handled by d namespace.

TODO

Identifier

Identifier structure MUST be as follows:

  1. start with /d/ to specify d namespace
  2. Domain name
  3. / (forward slash) followed by sub-domain name in case of sub-domain or * specifying wildcard
  4. next sub-domains as described in previous step unless it's wildcard in which case there MUST NOT be following parts

Identifier examples:

/d/namecoin
/d/namecoin/api
/d/namecoin/beta/api
/d/namecoin/beta/*

Domain Name

Namecoin domain name is valid only if:

  • Unicode string length MUST be atleast 1 and MUST NOT be more than 255 characters
  • MUST NOT contain 2 hyphens (--) at 3rd and 4th position of string
  • MUST NOT start or end with hyphens
  • MUST contain only allowed Unicode code points as per RFC 5892 (also RFC 5890, RFC 5891, RFC 5893, RFC 6452)
  • MUST be in NFC normalization form (see UAX15)
  • MUST NOT be a special-use domain name from RFC 6761 and RFC 6762

Domain name MUST be considered case-insensitive as per RFC 4343 and MUST be compared insensitively as it's defined in Unicode Standard. Domain name MUST be stored preserving case (thus using case with which it was registered). Invalid domain names MUST NOT be included in transactions and thus blocks.

Sub-domain

Sub-domain name MUST follow same rules as they are for Domain Name with exception that special-use domain name doesn't apply and is allowed.

Transactions registering sub-domain MUST be also signed by one of the key which was used for parent domain or parent sub-domain signing key to be considered valid. In case there's no parent registered, it must be signed by grandparent. That is for /d/namecoin/beta/api if /d/namecoin/beta is not registered it must be signed by /d/namecoin key.

Full Domain Name

Full Domain Name consists of Domain and Sub-domains separated by /, but without namespace and without leading or trailing separators.

The total length of Full Domain Name MUST NOT be more than 1024 Unicode code points.

Full Domain Name examples:

namecoin
namecoin/beta
namecoin/beta/api

Fields

Field names MUST be case-insensitive.

Name Type Description
ip Array of IPv4 addresses A list of IPv4 addresses.
  • List MUST NOT contain more than 100 addresses.
ip6 Array of IPv6 addresses A list of IPv6 addresses.
  • List MUST NOT contain more than 100 addresses.
aliases Array of Unicode strings A list of domain aliases. It can also be .bit (Namecoin) address, .onion (Tor hidden service) address, I2P address, .zkey (GADS) address or any other domain name.
  • Alias MUST be fully qualified domain name (see RFC 1983) where separator is a dot, but it MUST NOT end with a dot.
  • Applications and DNS resolvers MUST continue name resolving using returned aliases but MUST NOT follow more than 10 times and SHOULD try to detect cyclic dependencies.
  • List MUST NOT contain more than 100 aliases.
  • Each alias MUST NOT be longer than 1024 Unicode code points.
email Unicode string An hostmaster email address.
  • Length MUST NOT be longer than 512 Unicode code points.
  • It SHOULD be a valid email address according to RFC 5321, RFC 5322 and RFC 6531
info Unicode string Registrant information.
  • Length MUST NOT be longer than 1024 Unicode code points.
loc GeoLocation Geographic location information.
services Hash A dictionary/hash of service name and their data. See Services
import Array of Unicode strings A list of Namecoin Full Domain Names which to merge with the current zone. Fields in current zone will override and take precedence over imported ones.
  • Length limited as in Full Domain Name
  • List MUST NOT contain more than 100 strings.
  • Cascading imports MUST NOT be deeper than 5 in depth and applications SHOULD try to detect cyclic dependencies.
freenet Array of ASCII Strings A list of Freenet keys.
  • List MUST NOT contain more than 100 strings.
  • Each string MUST NOT be longer than 255 ASCII characters.
cjdns Array of Cjdns addresses. A list of Cjdns addresses.
  • List MUST NOT contain more than 100 addresses.
user Identity Name A domain User. Entity that uses this domain.
owner Identity Name A domain Owner. Entity that controls this domain.
custom Array of DNS Data Structures. A list with custom DNS data.
  • List MUST NOT contain more than 30 entries.
data Binary Domain specific data.
  • It MUST NOT be more than 2048 bytes.
version Integer Version of Domain Name specification used.

Services

TODO

Namecoin Domain mapping to DNS

TODO

Security Considerations

TODO

References

[Unicode] "The Unicode Standard" (HTML)
[UAX15] "Unicode Normalization Forms" (HTML)
[RFC1034] P.V. Mockapetris, "Domain names - concepts and facilities", November 1987 (TXT, HTML, PDF, XML)
[RFC1035] P.V. Mockapetris, "Domain names - implementation and specification", November 1987 (TXT, HTML, PDF, XML)
[RFC1123] R. Braden, Ed., "Requirements for Internet Hosts - Application and Support", October 1989 (TXT, HTML, PDF, XML)
[RFC2181] R. Elz, R. Bush, "Clarifications to the DNS Specification", July 1997 (TXT, HTML, PDF, XML)
[RFC4033] R. Arends, R. Austein, M. Larson, D. Massey, S. Rose, "DNS Security Introduction and Requirements", March 2005 (TXT, HTML, PDF, XML)
[RFC4034] R. Arends, R. Austein, M. Larson, D. Massey, S. Rose, "Resource Records for the DNS Security Extensions", March 2005 (TXT, HTML, PDF, XML)
[RFC4035] R. Arends, R. Austein, M. Larson, D. Massey, S. Rose, "Protocol Modifications for the DNS Security Extensions", March 2005 (TXT, HTML, PDF, XML)
[RFC4343] D. Eastlake 3rd, "Domain Name System (DNS) Case Insensitivity Clarification", January 2006 (TXT, HTML, PDF, XML)
[RFC4592] E. Lewis, "The Role of Wildcards in the Domain Name System", July 2006 (TXT, HTML, PDF, XML)
[RFC5890] J. Klensin "Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework", August 2010 (TXT, HTML, PDF, XML)
[RFC5891] J. Klensin, "Internationalized Domain Names in Applications (IDNA): Protocol", August 2010 (TXT, HTML, PDF, XML)
[RFC5892] P. Faltstrom, Ed., "The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)", August 2010 (TXT, HTML, PDF, XML)
[RFC5893] H. Alvestrand, Ed., C. Karp, "Right-to-Left Scripts for Internationalized Domain Names for Applications (IDNA)", August 2010 (TXT, HTML, PDF, XML)
[RFC6452] P. Faltstrom, Ed., P. Hoffman, Ed., "The Unicode Code Points and Internationalized Domain Names for Applications (IDNA) - Unicode 6.0", November 2011 (TXT, HTML, PDF, XML)
[RFC6761] S. Cheshire, M. Krochmal, "Special-Use Domain Names", February 2013 (TXT, HTML, PDF, XML)
[RFC6762] S. Cheshire, M. Krochmal,"Multicast DNS", February 2013 (TXT, HTML, PDF, XML)
[RFC6895] D. Eastlake 3rd "Domain Name System (DNS) IANA Considerations", April 2013 (TXT, HTML, PDF, XML)
[RFC5321] J. Klensin, "Simple Mail Transfer Protocol", October 2008 (TXT, HTML, PDF, XML)
[RFC5322] P. Resnick, Ed., "Internet Message Format", October 2008 (TXT, HTML, PDF, XML)
[RFC6531] J. Yao, W. Mao, "SMTP Extension for Internationalized Email", February 2012 (TXT, HTML, PDF, XML)