Domain Name Specification Ideas PENDING DELETE
Namecoin Domain Name Specification
This document is a part of Namecoin Specification
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.
Namecoin database provides decentralized peer-to-peer domain names for
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.
Namecoin domain names are handled by
Identifier structure MUST be as follows:
- start with /d/ to specify
- Domain name
- / (forward slash) followed by sub-domain name in case of sub-domain or
- next sub-domains as described in previous step unless it's wildcard in which case there MUST NOT be following parts
/d/namecoin /d/namecoin/api /d/namecoin/beta/api /d/namecoin/beta/*
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 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 is not registered it must be signed by
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
Field names MUST be case-insensitive.
|ip||Array of IPv4 addresses|| A list of IPv4 addresses.
|ip6||Array of IPv6 addresses|| A list of IPv6 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.
|Unicode string||An hostmaster email address.|
|info||Unicode string|| Registrant information.
|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.
|freenet||Array of ASCII Strings|| A list of Freenet keys.
|cjdns||Array of Cjdns addresses.|| A list of Cjdns 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.
|data||Binary|| Domain specific data.
|version||Integer||Version of Domain Name specification used.|
Namecoin Domain mapping to DNS